Changeset 3573
- Timestamp:
- 08/21/08 18:41:15 (3 months ago)
- Location:
- plugins/syncml/src
- Files:
-
- 5 modified
-
syncml_common.c (modified) (2 diffs)
-
syncml_common.h (modified) (2 diffs)
-
syncml_http_client.c (modified) (2 diffs)
-
syncml_http_server.c (modified) (1 diff)
-
syncml_obex_client.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
plugins/syncml/src/syncml_common.c
r3571 r3573 22 22 #include "syncml_callbacks.h" 23 23 #include "syncml_devinf.h" 24 #include "syncml_vformat.h" 24 25 25 26 #include <opensync/plugin/opensync_sink.h> … … 627 628 } 628 629 630 void *syncml_init( 631 SmlSessionType sessionType, 632 SmlTransportType tspType, 633 OSyncPlugin *plugin, 634 OSyncPluginInfo *info, 635 OSyncError **oerror) 636 { 637 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, oerror); 638 SmlError *error = NULL; 639 640 SmlPluginEnv *env = osync_try_malloc0(sizeof(SmlPluginEnv), oerror); 641 if (!env) 642 goto error; 643 env->sessionType = sessionType; 644 env->pluginInfo = info; 645 osync_plugin_info_ref(env->pluginInfo); 646 647 OSyncPluginConfig *config = osync_plugin_info_get_config(info); 648 osync_trace(TRACE_INTERNAL, "The config: %p", config); 649 650 /* create data sync object */ 651 env->dsObject1 = smlDataSyncNew(sessionType, tspType, &error); 652 if (!env->dsObject1) 653 goto error; 654 if (sessionType == SML_SESSION_TYPE_CLIENT) 655 { 656 env->dsObject2 = smlDataSyncNew(sessionType, tspType, &error); 657 if (!env->dsObject2) 658 goto error; 659 } 660 661 /* configure the instance */ 662 if (!parse_config(tspType, env->dsObject1, config, oerror)) 663 goto error_free_env; 664 if (sessionType == SML_SESSION_TYPE_CLIENT) 665 { 666 if (!parse_config(tspType, env->dsObject2, config, oerror)) 667 goto error_free_env; 668 } 669 670 /* prepare the function list for OpenSync */ 671 OSyncObjTypeSinkFunctions main_functions; 672 memset(&main_functions, 0, sizeof(main_functions)); 673 main_functions.connect = syncml_connect; 674 main_functions.disconnect = disconnect; 675 676 /* Register main sink for connect and disconnect functions */ 677 OSyncObjTypeSink *mainsink = osync_objtype_main_sink_new(oerror); 678 if (!mainsink) 679 goto error_free_env; 680 681 osync_objtype_sink_set_functions(mainsink, main_functions, env); 682 osync_plugin_info_set_main_sink(info, mainsink); 683 osync_objtype_sink_unref(mainsink); 684 685 /* prepare paths for callbacks */ 686 env->anchor_path = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); 687 env->devinf_path = g_strdup_printf("%s/devinf.db", osync_plugin_info_get_configdir(info)); 688 689 /* set callbacks */ 690 smlDataSyncRegisterEventCallback(env->dsObject1, _recv_event, env); 691 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject1, _get_alert_type, env); 692 smlDataSyncRegisterGetAnchorCallback(env->dsObject1, _get_anchor, env); 693 smlDataSyncRegisterSetAnchorCallback(env->dsObject1, _set_anchor, env); 694 smlDataSyncRegisterWriteDevInfCallback(env->dsObject1, _write_devinf, env); 695 smlDataSyncRegisterReadDevInfCallback(env->dsObject1, _read_devinf, env); 696 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject1, _handle_remote_devinf, env); 697 smlDataSyncRegisterChangeStatusCallback(env->dsObject1, _recv_change_status); 698 if (sessionType == SML_SESSION_TYPE_CLIENT) 699 { 700 smlDataSyncRegisterEventCallback(env->dsObject2, _recv_event, env); 701 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject2, _get_alert_type, env); 702 smlDataSyncRegisterGetAnchorCallback(env->dsObject2, _get_anchor, env); 703 smlDataSyncRegisterSetAnchorCallback(env->dsObject2, _set_anchor, env); 704 smlDataSyncRegisterWriteDevInfCallback(env->dsObject2, _write_devinf, env); 705 smlDataSyncRegisterReadDevInfCallback(env->dsObject2, _read_devinf, env); 706 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject2, _handle_remote_devinf, env); 707 smlDataSyncRegisterChangeStatusCallback(env->dsObject2, _recv_change_status); 708 } 709 710 /* configure databases */ 711 if (sessionType == SML_SESSION_TYPE_SERVER && 712 !ds_server_init_databases(env, info, oerror)) 713 goto error_free_env; 714 if (sessionType == SML_SESSION_TYPE_CLIENT && 715 !ds_client_init_databases(env, info, oerror)) 716 goto error_free_env; 717 718 osync_trace(TRACE_EXIT, "%s: %p", __func__, env); 719 return (void *)env; 720 721 error_free_env: 722 finalize(env); 723 error: 724 if (error) { 725 osync_error_set(oerror, OSYNC_ERROR_GENERIC, "%s", smlErrorPrint(&error)); 726 smlErrorDeref(&error); 727 } 728 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(oerror)); 729 return NULL; 730 } 731 -
plugins/syncml/src/syncml_common.h
r3571 r3573 146 146 }; 147 147 148 void sync_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx);149 150 void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx);151 void syncml_connect(void *data, OSyncPluginInfo *info, OSyncContext *ctx);152 148 osync_bool discover( 153 149 const char *name, … … 155 151 OSyncPluginInfo *info, 156 152 OSyncError **error); 153 void *syncml_init( 154 SmlSessionType sessionType, 155 SmlTransportType tspType, 156 OSyncPlugin *plugin, 157 OSyncPluginInfo *info, 158 OSyncError **oerror); 159 void syncml_connect(void *data, OSyncPluginInfo *info, OSyncContext *ctx); 160 void sync_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx); 161 void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx); 157 162 158 163 osync_bool parse_config( -
plugins/syncml/src/syncml_http_client.c
r3571 r3573 1 1 #include "syncml_common.h" 2 #include "syncml_callbacks.h"3 #include "syncml_devinf.h"4 #include "syncml_ds_client.h"5 #include "syncml_vformat.h"6 7 #include <opensync/plugin/opensync_sink.h>8 2 9 3 /* Some informations about the SyncML protocol … … 54 48 { 55 49 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, oerror); 56 SmlError *error = NULL; 57 58 SmlPluginEnv *env = osync_try_malloc0(sizeof(SmlPluginEnv), oerror); 50 51 SmlPluginEnv *env = syncml_init( 52 SML_SESSION_TYPE_CLIENT, 53 SML_TRANSPORT_HTTP_CLIENT, 54 plugin, info, oerror); 59 55 if (!env) 60 56 goto error; 61 env->sessionType = SML_SESSION_TYPE_CLIENT;62 env->pluginInfo = info;63 osync_plugin_info_ref(env->pluginInfo);64 57 65 OSyncPluginConfig *config = osync_plugin_info_get_config(info);66 osync_trace(TRACE_INTERNAL, "The config: %p", config);67 68 /* create data sync object */69 env->dsObject1 = smlDataSyncNew(70 SML_SESSION_TYPE_CLIENT,71 SML_TRANSPORT_HTTP_CLIENT,72 &error);73 if (!env->dsObject1)74 goto error;75 env->dsObject2 = smlDataSyncNew(76 SML_SESSION_TYPE_CLIENT,77 SML_TRANSPORT_HTTP_CLIENT,78 &error);79 if (!env->dsObject2)80 goto error;81 82 /* configure the instance */83 if (!parse_config(SML_TRANSPORT_HTTP_CLIENT, env->dsObject1, config, oerror))84 goto error_free_env;85 if (!parse_config(SML_TRANSPORT_HTTP_CLIENT, env->dsObject2, config, oerror))86 goto error_free_env;87 88 /* prepare the function list for OpenSync */89 OSyncObjTypeSinkFunctions main_functions;90 memset(&main_functions, 0, sizeof(main_functions));91 main_functions.connect = syncml_connect;92 main_functions.disconnect = disconnect;93 94 /* Register main sink for connect and disconnect functions */95 OSyncObjTypeSink *mainsink = osync_objtype_main_sink_new(oerror);96 if (!mainsink)97 goto error_free_env;98 99 osync_objtype_sink_set_functions(mainsink, main_functions, NULL);100 osync_plugin_info_set_main_sink(info, mainsink);101 osync_objtype_sink_unref(mainsink);102 103 /* prepare paths for callbacks */104 env->anchor_path = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info));105 env->devinf_path = g_strdup_printf("%s/devinf.db", osync_plugin_info_get_configdir(info));106 107 /* set callbacks */108 smlDataSyncRegisterEventCallback(env->dsObject1, _recv_event, env);109 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject1, _get_alert_type, env);110 smlDataSyncRegisterGetAnchorCallback(env->dsObject1, _get_anchor, env);111 smlDataSyncRegisterSetAnchorCallback(env->dsObject1, _set_anchor, env);112 smlDataSyncRegisterWriteDevInfCallback(env->dsObject1, _write_devinf, env);113 smlDataSyncRegisterReadDevInfCallback(env->dsObject1, _read_devinf, env);114 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject1, _handle_remote_devinf, env);115 smlDataSyncRegisterChangeStatusCallback(env->dsObject1, _recv_change_status);116 smlDataSyncRegisterEventCallback(env->dsObject2, _recv_event, env);117 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject2, _get_alert_type, env);118 smlDataSyncRegisterGetAnchorCallback(env->dsObject2, _get_anchor, env);119 smlDataSyncRegisterSetAnchorCallback(env->dsObject2, _set_anchor, env);120 smlDataSyncRegisterWriteDevInfCallback(env->dsObject2, _write_devinf, env);121 smlDataSyncRegisterReadDevInfCallback(env->dsObject2, _read_devinf, env);122 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject2, _handle_remote_devinf, env);123 smlDataSyncRegisterChangeStatusCallback(env->dsObject2, _recv_change_status);124 125 /* configure databases */126 if (!ds_client_init_databases(env, info, oerror))127 goto error_free_env;128 129 osync_trace(TRACE_EXIT, "%s: %p", __func__, env);130 return (void *)env;131 132 error_free_env:133 finalize(env);134 58 error: 135 if (error) {136 osync_error_set(oerror, OSYNC_ERROR_GENERIC, "%s", smlErrorPrint(&error));137 smlErrorDeref(&error);138 }139 59 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(oerror)); 140 60 return NULL; -
plugins/syncml/src/syncml_http_server.c
r3571 r3573 20 20 21 21 #include "syncml_common.h" 22 #include "syncml_callbacks.h"23 #include "syncml_devinf.h"24 #include "syncml_ds_server.h"25 #include "syncml_vformat.h"26 22 27 23 void *syncml_http_server_init(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **oerror) 28 24 { 29 25 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, oerror); 30 SmlError *error = NULL; 31 32 SmlPluginEnv *env = osync_try_malloc0(sizeof(SmlPluginEnv), oerror); 26 27 SmlPluginEnv *env = syncml_init( 28 SML_SESSION_TYPE_SERVER, 29 SML_TRANSPORT_HTTP_SERVER, 30 plugin, info, oerror); 33 31 if (!env) 34 32 goto error; 35 env->sessionType = SML_SESSION_TYPE_SERVER;36 env->pluginInfo = info;37 osync_plugin_info_ref(env->pluginInfo);38 33 39 OSyncPluginConfig *config = osync_plugin_info_get_config(info);40 osync_trace(TRACE_INTERNAL, "The config: %p", config);41 42 /* create data sync object */43 env->dsObject1 = smlDataSyncNew(44 SML_SESSION_TYPE_SERVER,45 SML_TRANSPORT_HTTP_SERVER,46 &error);47 if (!env->dsObject1)48 goto error;49 50 /* configure the instance */51 if (!parse_config(SML_TRANSPORT_HTTP_SERVER, env->dsObject1, config, oerror))52 goto error_free_env;53 54 /* prepare the function list for OpenSync */55 OSyncObjTypeSinkFunctions main_functions;56 memset(&main_functions, 0, sizeof(main_functions));57 main_functions.connect = syncml_connect;58 main_functions.disconnect = disconnect;59 60 /* Register main sink for connect and disconnect functions */61 OSyncObjTypeSink *mainsink = osync_objtype_main_sink_new(oerror);62 if (!mainsink)63 goto error_free_env;64 65 osync_objtype_sink_set_functions(mainsink, main_functions, NULL);66 osync_plugin_info_set_main_sink(info, mainsink);67 osync_objtype_sink_unref(mainsink);68 69 /* prepare paths for callbacks */70 env->anchor_path = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info));71 env->devinf_path = g_strdup_printf("%s/devinf.db", osync_plugin_info_get_configdir(info));72 73 /* set callbacks */74 smlDataSyncRegisterEventCallback(env->dsObject1, _recv_event, env);75 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject1, _get_alert_type, env);76 smlDataSyncRegisterGetAnchorCallback(env->dsObject1, _get_anchor, env);77 smlDataSyncRegisterSetAnchorCallback(env->dsObject1, _set_anchor, env);78 smlDataSyncRegisterWriteDevInfCallback(env->dsObject1, _write_devinf, env);79 smlDataSyncRegisterReadDevInfCallback(env->dsObject1, _read_devinf, env);80 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject1, _handle_remote_devinf, env);81 smlDataSyncRegisterChangeStatusCallback(env->dsObject1, _recv_change_status);82 83 /* configure databases */84 if (!ds_server_init_databases(env, info, oerror))85 goto error_free_env;86 87 osync_trace(TRACE_EXIT, "%s: %p", __func__, env);88 return (void *)env;89 90 error_free_env:91 finalize(env);92 34 error: 93 if (error) {94 osync_error_set(oerror, OSYNC_ERROR_GENERIC, "%s", smlErrorPrint(&error));95 smlErrorDeref(&error);96 }97 35 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(oerror)); 98 36 return NULL; -
plugins/syncml/src/syncml_obex_client.c
r3571 r3573 20 20 21 21 #include "syncml_common.h" 22 #include "syncml_callbacks.h"23 #include "syncml_devinf.h"24 #include "syncml_vformat.h"25 #include "syncml_ds_server.h"26 #include <libsyncml/standard.h>27 22 28 23 void *syncml_obex_client_init(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **oerror) 29 24 { 30 25 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, oerror); 31 SmlError *error = NULL; 32 33 SmlPluginEnv *env = osync_try_malloc0(sizeof(SmlPluginEnv), oerror); 26 27 SmlPluginEnv *env = syncml_init( 28 SML_SESSION_TYPE_SERVER, 29 SML_TRANSPORT_OBEX_CLIENT, 30 plugin, info, oerror); 34 31 if (!env) 35 32 goto error; 36 env->sessionType = SML_SESSION_TYPE_SERVER;37 env->pluginInfo = info;38 osync_plugin_info_ref(env->pluginInfo);39 40 OSyncPluginConfig *config = osync_plugin_info_get_config(info);41 osync_trace(TRACE_INTERNAL, "The config: %p", config);42 43 /* create data sync object */44 env->dsObject1 = smlDataSyncNew(45 SML_SESSION_TYPE_SERVER,46 SML_TRANSPORT_OBEX_CLIENT,47 &error);48 if (!env->dsObject1)49 goto error;50 51 /* configure the instance */52 if (!parse_config(SML_TRANSPORT_OBEX_CLIENT, env->dsObject1, config, oerror))53 goto error_free_env;54 55 /* prepare the function list for OpenSync */56 OSyncObjTypeSinkFunctions main_functions;57 memset(&main_functions, 0, sizeof(main_functions));58 main_functions.connect = syncml_connect;59 main_functions.disconnect = disconnect;60 61 /* Register main sink for connect and disconnect functions */62 OSyncObjTypeSink *mainsink = osync_objtype_main_sink_new(oerror);63 if (!mainsink)64 goto error_free_env;65 66 osync_objtype_sink_set_functions(mainsink, main_functions, env);67 osync_plugin_info_set_main_sink(info, mainsink);68 osync_objtype_sink_unref(mainsink);69 70 /* prepare paths for callbacks */71 env->anchor_path = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info));72 env->devinf_path = g_strdup_printf("%s/devinf.db", osync_plugin_info_get_configdir(info));73 74 /* set callbacks */75 smlDataSyncRegisterEventCallback(env->dsObject1, _recv_event, env);76 smlDataSyncRegisterGetAlertTypeCallback(env->dsObject1, _get_alert_type, env);77 smlDataSyncRegisterGetAnchorCallback(env->dsObject1, _get_anchor, env);78 smlDataSyncRegisterSetAnchorCallback(env->dsObject1, _set_anchor, env);79 smlDataSyncRegisterWriteDevInfCallback(env->dsObject1, _write_devinf, env);80 smlDataSyncRegisterReadDevInfCallback(env->dsObject1, _read_devinf, env);81 smlDataSyncRegisterHandleRemoteDevInfCallback(env->dsObject1, _handle_remote_devinf, env);82 smlDataSyncRegisterChangeStatusCallback(env->dsObject1, _recv_change_status);83 84 /* configure databases */85 if (!ds_server_init_databases(env, info, oerror))86 goto error_free_env;87 33 88 34 /* add the datastores */ 35 SmlError *error = NULL; 89 36 GList *o = env->databases; 90 37 for (; o; o = o->next) {
