data_lake_object.c
Go to the documentation of this file.
1 
9 #include "data_lake_object.h"
10 #include "mcl_core/mcl_memory.h"
12 
14 {
15  mcl_error_t code = MCL_OK;
16 
17  MCL_DEBUG_ENTRY("mcl_data_lake_object_t **object = <%p>", object);
18 
19  // Null check.
20  MCL_ASSERT_NOT_NULL(object, code);
21 
22  // Allocate memory for object data structure.
23  MCL_NEW(*object);
24 
25  if(MCL_NULL == *object)
26  {
27  code = MCL_OUT_OF_MEMORY;
28  }
29  else
30  {
31  // Set default values of object parameters.
32  (*object)->path = MCL_NULL;
33  (*object)->signed_url = MCL_NULL;
34  (*object)->user_context = MCL_NULL;
35  (*object)->upload_callback = MCL_NULL;
36  (*object)->size = 0;
37  }
38 
40  MCL_DEBUG_LEAVE("retVal = <%d>", code);
41  return code;
42 }
43 
45 {
46  mcl_error_t code = MCL_OK;
47 
48  MCL_DEBUG_ENTRY("mcl_data_lake_object_t *object = <%p>, E_MCL_DATA_LAKE_OBJECT_PARAMETER parameter = <%d>, const void *value = <%p>",
49  object, parameter, value);
50 
51  MCL_ASSERT_NOT_NULL(object, code);
52  MCL_ASSERT_NOT_NULL(value, code);
53 
54  switch (parameter)
55  {
57  code = mcl_string_util_reset(value, &object->path);
58  break;
59 
61  object->upload_callback = (mcl_data_lake_upload_callback) value;
62  break;
63 
65  object->user_context = (void *) value;
66  break;
67 
69  object->size = *((const mcl_size_t *) value);
70  break;
71 
72  default:
73  code = MCL_INVALID_PARAMETER;
74  break;
75  }
76 
78  MCL_DEBUG_LEAVE("retVal = <%d>", code);
79  return code;
80 }
81 
83 {
84  mcl_error_t code = MCL_OK;
85 
86  MCL_DEBUG_ENTRY("mcl_data_lake_object_t *object = <%p>, E_DATA_LAKE_OBJECT_INTERNAL_PARAMETER parameter = <%p>, const void *value = <%p>",
87  object, &parameter, value);
88 
90  {
91  code = mcl_string_util_reset(value, &object->signed_url);
92  }
93  else
94  {
95  code = MCL_INVALID_PARAMETER;
96  }
97 
98  MCL_DEBUG_LEAVE("retVal = <%d>", code);
99  return code;
100 }
101 
103 {
104  MCL_DEBUG_ENTRY("mcl_data_lake_object_t **object = <%p>", object);
105 
106  if ((MCL_NULL != object) && (MCL_NULL != *object))
107  {
108  MCL_FREE((*object)->path);
109  MCL_FREE((*object)->signed_url);
110  MCL_FREE(*object);
111  }
112 
113  MCL_DEBUG_LEAVE("retVal = void");
114 }
115 
117 {
119 
120  MCL_DEBUG_ENTRY("data_lake_object_t *object = <%p>", object);
121 
122  // Check all mandatory parameters.
123  if (MCL_NULL == object->path)
124  {
125  MCL_ERROR_STRING("Path parameter of object is not set.");
126  }
127  else if (MCL_NULL == object->signed_url)
128  {
129  MCL_ERROR_STRING("Signed url parameter of object is not set.");
130  }
131  else if (MCL_NULL == object->upload_callback)
132  {
133  MCL_ERROR_STRING("Upload callback parameter of object is not set.");
134  }
135  else if (0 == object->size)
136  {
137  MCL_ERROR_STRING("Payload size should be given.");
138  }
139  else
140  {
141  code = MCL_OK;
142  }
143 
144  MCL_DEBUG_LEAVE("retVal = <%d>", code);
145  return code;
146 }
#define MCL_FUNCTION_LEAVE_LABEL
char * signed_url
Signed URL for the object.
size_t mcl_size_t
MCL_OK
char * path
Object path in Mindsphere.
mcl_error_t data_lake_object_set_internal_parameter(mcl_data_lake_object_t *object, E_DATA_LAKE_OBJECT_INTERNAL_PARAMETER parameter, const void *value)
MCL_CORE_EXPORT mcl_error_t mcl_string_util_reset(const void *value, char **target)
mcl_int32_t mcl_error_t
void mcl_data_lake_object_destroy(mcl_data_lake_object_t **object)
mcl_error_t mcl_data_lake_object_set_parameter(mcl_data_lake_object_t *object, E_MCL_DATA_LAKE_OBJECT_PARAMETER parameter, const void *value)
mcl_error_t mcl_data_lake_object_initialize(mcl_data_lake_object_t **object)
#define MCL_DEBUG_ENTRY(...)
E_MCL_DATA_LAKE_OBJECT_PARAMETER
Callback as mcl_data_lake_upload_callback, which is used to upload data lake object.
Context as void* which will be passed to the callback.
E_DATA_LAKE_OBJECT_INTERNAL_PARAMETER
mcl_size_t(* mcl_data_lake_upload_callback)(char *buffer, mcl_size_t size, mcl_size_t count, void *user_context)
#define MCL_ERROR_STRING(string)
Data lake object module header file.
#define MCL_NEW(p)
#define MCL_NULL
mcl_error_t data_lake_object_validate(data_lake_object_t *object)
Size of the data lake object in bytes as mcl_size_t*.
#define MCL_FREE(p)
mcl_size_t size
Size of the object.
mcl_data_lake_upload_callback upload_callback
Callback used by http client to copy object data to http request.
#define MCL_ASSERT_NOT_NULL(argument, return_variable)
struct mcl_data_lake_object_t mcl_data_lake_object_t
MCL_OUT_OF_MEMORY
MCL_INVALID_PARAMETER
#define MCL_DEBUG_LEAVE(...)
Remote path for data lake object as char*.