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.
21 #include "plugin/network_access_plugin.h"
23 #include "utility/sync_util.h"
25 #ifndef SYNC_AGENT_LOG
27 #define LOG_TAG "AF_PlugIn"
30 static int current_plugin_count_network_access = 0;
32 static plugin_network_access_s plugin_repository[PLUGIN_MAX_NETWORK_ACCESS];
34 static int _find_network_access_plugin(int plugin_id);
36 plugin_network_access_func_set_s plugin_get_network_access_func_set(void *plugin_handle, plugin_error_e * error_code)
40 *error_code = PLUGIN_SUCCESS;
42 plugin_network_access_func_set_s func_set;
44 func_set.func_open_connection = dlsym(plugin_handle, "sync_agent_plugin_open_connection");
45 func_set.func_header_binding = dlsym(plugin_handle, "sync_agent_plugin_header_binding");
46 func_set.func_send_message = dlsym(plugin_handle, "sync_agent_plugin_send_message");
47 func_set.func_header_unbinding = dlsym(plugin_handle, "sync_agent_plugin_header_unbinding");
48 func_set.func_close_connection = dlsym(plugin_handle, "sync_agent_plugin_close_connection");
49 func_set.func_cancel_message = dlsym(plugin_handle, "sync_agent_plugin_cancel_message");
50 func_set.func_just_send_message = dlsym(plugin_handle, "sync_agent_plugin_just_send_message");
51 func_set.func_get_header_info = dlsym(plugin_handle, "sync_agent_plugin_get_header_info");
52 func_set.func_set_data_down_info = dlsym(plugin_handle, "sync_agent_plugin_set_data_download_info");
53 func_set.func_get_data_down_info = dlsym(plugin_handle, "sync_agent_plugin_get_data_download_info");
54 func_set.func_add_authentication_info = dlsym(plugin_handle, "sync_agent_plugin_add_authentication_info");
55 func_set.func_register_fw_mainloop_na = dlsym(plugin_handle, "sync_agent_plugin_register_fw_main_loop_network_access");
56 func_set.func_set_property = dlsym(plugin_handle, "sync_agent_plugin_set_property");
57 func_set.func_get_status = dlsym(plugin_handle, "sync_agent_plugin_get_status");
64 plugin_error_e plugin_register_plugin_network_access(plugin_network_access_s plugin)
68 if (current_plugin_count_network_access >= PLUGIN_MAX_NETWORK_ACCESS) {
69 return PLUGIN_FULL_CAPACITY;
72 plugin_repository[current_plugin_count_network_access] = plugin;
74 current_plugin_count_network_access++;
78 return PLUGIN_SUCCESS;
81 void plugin_clear_plugin_network_access()
86 for (i = 0; i < current_plugin_count_network_access; i++) {
87 memset(&(plugin_repository[i].plugin_info), 0x00, sizeof(plugin_info_s));
88 memset(&(plugin_repository[i].func_set), 0x00, sizeof(plugin_network_access_func_set_s));
89 memset(&(plugin_repository[i]), 0x00, sizeof(plugin_network_access_s));
95 const plugin_network_access_s *plugin_get_network_access_plugin_repository(int *count)
99 *count = current_plugin_count_network_access;
103 return plugin_repository;
106 int plugin_use_network(int plugin_id)
110 int index = _find_network_access_plugin(plugin_id);
117 return plugin_repository[index].use_network;
120 int plugin_get_network_access_plugin_id_list(int **plugin_id_list)
124 if (current_plugin_count_network_access <= 0) {
128 *plugin_id_list = (int *)calloc(current_plugin_count_network_access, sizeof(int));
129 if (*plugin_id_list == NULL) {
130 _DEBUG_ERROR("CALLOC failed !!!");
135 for (; i < current_plugin_count_network_access; i++) {
136 (*plugin_id_list)[i] = plugin_repository[i].plugin_info.plugin_id;
141 return current_plugin_count_network_access;
144 plugin_open_connection_cb plugin_get_function_connection(int plugin_id)
148 int index = _find_network_access_plugin(plugin_id);
155 return plugin_repository[index].func_set.func_open_connection;
158 plugin_header_binding_cb plugin_get_function_header_binding(int plugin_id)
162 int index = _find_network_access_plugin(plugin_id);
163 _DEBUG_INFO("index : %d", index);
170 return plugin_repository[index].func_set.func_header_binding;
173 plugin_send_message_cb plugin_get_function_send_message(int plugin_id)
177 int index = _find_network_access_plugin(plugin_id);
178 _DEBUG_INFO("index : %d", index);
185 return plugin_repository[index].func_set.func_send_message;
188 plugin_header_unbinding_cb plugin_get_function_header_unbinding(int plugin_id)
192 int index = _find_network_access_plugin(plugin_id);
193 _DEBUG_INFO("index : %d", index);
200 return plugin_repository[index].func_set.func_header_unbinding;
203 plugin_close_connection_cb plugin_get_function_close_connection(int plugin_id)
207 int index = _find_network_access_plugin(plugin_id);
208 _DEBUG_INFO("index : %d", index);
215 return plugin_repository[index].func_set.func_close_connection;
218 plugin_cancel_message_cb plugin_get_function_cancel_message(int plugin_id)
222 int index = _find_network_access_plugin(plugin_id);
223 _DEBUG_INFO("index : %d", index);
230 return plugin_repository[index].func_set.func_cancel_message;
233 plugin_just_send_message_cb plugin_get_function_just_send_message(int plugin_id)
237 int index = _find_network_access_plugin(plugin_id);
238 _DEBUG_INFO("index : %d", index);
245 return plugin_repository[index].func_set.func_just_send_message;
248 plugin_get_header_info_cb plugin_get_function_get_header_info(int plugin_id)
252 int index = _find_network_access_plugin(plugin_id);
253 _DEBUG_INFO("index : %d", index);
260 return plugin_repository[index].func_set.func_get_header_info;
263 plugin_set_data_download_info_cb plugin_get_function_set_data_download_info(int plugin_id)
267 int index = _find_network_access_plugin(plugin_id);
268 _DEBUG_INFO("index : %d", index);
275 return plugin_repository[index].func_set.func_set_data_down_info;
278 plugin_get_data_download_info_cb plugin_get_function_get_data_download_info(int plugin_id)
282 int index = _find_network_access_plugin(plugin_id);
283 _DEBUG_INFO("index : %d", index);
290 return plugin_repository[index].func_set.func_get_data_down_info;
293 plugin_add_authentication_info_cb plugin_get_function_add_authentication_info(int plugin_id)
297 int index = _find_network_access_plugin(plugin_id);
298 _DEBUG_INFO("index : %d", index);
305 return plugin_repository[index].func_set.func_add_authentication_info;
308 plugin_register_fw_mainloop_na_cb plugin_get_function_register_fw_mainloop_na(int plugin_id)
312 int index = _find_network_access_plugin(plugin_id);
313 _DEBUG_INFO("index : %d", index);
320 return plugin_repository[index].func_set.func_register_fw_mainloop_na;
323 plugin_set_property_cb plugin_get_function_set_property(int plugin_id)
327 int index = _find_network_access_plugin(plugin_id);
328 _DEBUG_INFO("index : %d", index);
335 return plugin_repository[index].func_set.func_set_property;
338 plugin_get_status_cb plugin_get_function_get_status(int plugin_id)
342 int index = _find_network_access_plugin(plugin_id);
343 _DEBUG_INFO("index : %d", index);
350 return plugin_repository[index].func_set.func_get_status;
353 static int _find_network_access_plugin(int plugin_id)
358 for (; i < current_plugin_count_network_access; i++) {
359 if (plugin_repository[i].plugin_info.plugin_id == plugin_id) {