3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #ifndef DATA_ACCESSOR_H_
19 #define DATA_ACCESSOR_H_
23 #endif /* __cplusplus */
26 * @file data_accessor.h
27 * @brief Support to access (create, append, get, remove) event packet structure
35 * Structure of Event Packet
39 /**< event number described in event config file */
41 /**< need to iterate real data */
43 /**< real data expected to send */
44 } sync_agent_event_data_s;
47 * Type of parameter in sync_agent_event_data_s
50 SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER = 'I',
52 SYNC_AGENT_EVENT_PARAM_TYPE_STRING = 'S'
54 } sync_agent_event_param_type_e;
57 * API to add parameter to Event packet
58 * @remarks Once one parameter is added each time it's invoked. Parameter type can be Number or String
63 int event_int_data = 0;
64 char *event_char_data = NULL;
65 sync_agent_event_data_s *request_event = NULL;
67 request_event = sync_agent_create_event(event_num);
68 if (request_event == NULL) {
73 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
74 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, event_char_data);
79 * @param[in] iter sync_agent_event_data_s pointer parameters to be added
80 * @param[in] type parameter type (SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, SYNC_AGENT_EVENT_PARAM_TYPE_STRING) @ref sync_agent_event_param_type_e
81 * @param[in] data real parameter data
86 * @see sync_agent_create_noti(int)
89 void sync_agent_append_event_data_param(sync_agent_event_data_s * iter, sync_agent_event_param_type_e type, void *data);
92 * API to extract parameter from Event packet
93 * @remarks This function will be used when extracting received event packet.
94 * extracted order is matched the order of @ref sync_agent_append_event_data_param().
99 int event_int_data = 0;
101 char *result_char = NULL;
102 sync_agent_event_error_e error = SYNC_AGENT_EVENT_SUCCESS;
103 sync_agent_event_data_s *request_event = NULL;
104 sync_agent_event_data_s *response_event = NULL;
106 request_event = sync_agent_create_event(event_num);
107 if (request_event == NULL) {
112 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
114 response_event = sync_agent_send_event(request_event, &error);
115 if (error != SYNC_AGENT_EVENT_SUCCESS) {
120 if (response_event == NULL) {
125 sync_agent_get_event_data_param(response_event, &result_int);
126 sync_agent_get_event_data_param(response_event, &result_char);
131 * @param[in] iter sync_agent_event_data_s pointer parameters to be extracted
132 * @param[in] data as returned by sync_agent_get_event_data_param() - real extracted data
137 * @see _event_listener(void *)
140 void sync_agent_get_event_data_param(sync_agent_event_data_s * iter, void *data);
143 * API to free sync_agent_event_data_s pointer (event object)
148 sync_agent_event_data_s *request_event = NULL;
150 request_event = sync_agent_create_event(event_num);
151 if (request_event == NULL) {
156 sync_agent_free_event_data(request_event);
161 * @param[in] event event object
166 * @see sync_agent_free_noti(sync_agent_event_data_s *)
169 void sync_agent_free_event_data(sync_agent_event_data_s * event);
177 #endif /* __cplusplus */
178 #endif /* EVENT_DATA_ACCESSOR_H_ */