00001 00005 typedef struct OSyncPluginFunctions { 00007 osync_bool (* get_config) (char *, char **, int *); 00009 osync_bool (* store_config) (char *, const char *, int); 00011 osync_bool (* is_available) (OSyncError **); 00013 void * (* initialize) (OSyncMember *, OSyncError **); 00015 void (* finalize) (void *); 00017 void (* connect) (OSyncContext *); 00019 void (* sync_done) (OSyncContext *ctx); 00021 void (* disconnect) (OSyncContext *); 00023 void (* get_changeinfo) (OSyncContext *); 00025 void (* get_data) (OSyncContext *, OSyncChange *); 00027 } OSyncPluginFunctions; 00028 00036 typedef struct OSyncPluginTimeouts { 00038 unsigned int connect_timeout; 00040 unsigned int sync_done_timeout; 00042 unsigned int disconnect_timeout; 00044 unsigned int get_changeinfo_timeout; 00046 unsigned int get_data_timeout; 00048 unsigned int commit_timeout; 00050 unsigned int read_change_timeout; 00051 } OSyncPluginTimeouts; 00052 00053 typedef osync_bool (* OSyncFormatCommitFn) (OSyncContext *, OSyncChange *); 00054 typedef osync_bool (* OSyncFormatAccessFn) (OSyncContext *, OSyncChange *); 00055 typedef void (* OSyncFormatCommittedAllFn) (OSyncContext *); 00056 typedef void (* OSyncFormatReadFn) (OSyncContext *, OSyncChange *); 00057 typedef void (* OSyncFormatBatchCommitFn) (OSyncContext *, OSyncContext **, OSyncChange **); 00058 00062 typedef struct OSyncFormatFunctions { 00064 OSyncFormatCommitFn commit_change; 00066 OSyncFormatCommittedAllFn committed_all; 00068 OSyncFormatBatchCommitFn batch_commit; 00070 OSyncFormatAccessFn access; 00072 OSyncFormatReadFn read; 00073 } OSyncFormatFunctions; 00074 00080 typedef enum { 00082 NO_CONFIGURATION = 0, 00084 OPTIONAL_CONFIGURATION = 1, 00086 NEEDS_CONFIGURATION = 2 00087 } OSyncConfigurationTypes; 00088 00092 typedef struct OSyncPluginInfo { 00094 int version; 00096 const char *name; 00098 const char *longname; 00100 const char *description; 00102 osync_bool is_threadsafe; 00104 OSyncPluginFunctions functions; 00106 OSyncPluginTimeouts timeouts; 00108 OSyncConfigurationTypes config_type; 00110 OSyncPlugin *plugin; 00116 void *plugin_data; 00117 } OSyncPluginInfo; 00118 00119 OSyncPlugin *osync_plugin_new(OSyncEnv *env); 00120 OSyncPluginInfo *osync_plugin_new_info(OSyncEnv *env); 00121 void osync_plugin_free(OSyncPlugin *plugin); 00122 00123 osync_bool osync_module_load(OSyncEnv *env, const char *path, OSyncError **error); 00124 osync_bool osync_module_load_dir(OSyncEnv *env, const char *path, osync_bool must_exist, OSyncError **oserror); 00125 00126 OSyncPlugin *osync_plugin_from_name(OSyncEnv *osinfo, const char *name); 00127 const char *osync_plugin_get_name(OSyncPlugin *plugin); 00128 const char *osync_plugin_get_longname(OSyncPlugin *plugin); 00129 const char *osync_plugin_get_description(OSyncPlugin *plugin); 00130 OSyncPluginTimeouts osync_plugin_get_timeouts(OSyncPlugin *plugin); 00131 void *osync_plugin_get_plugin_data(OSyncPlugin *plugin); 00132 const char *osync_plugin_get_path(OSyncPlugin *plugin); 00133 00134 void *osync_plugin_get_function(OSyncPlugin *plugin, const char *name, OSyncError **error); 00135 void osync_plugin_accept_objtype(OSyncPluginInfo *info, const char *objtypestr); 00136 void osync_plugin_accept_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, const char *extension); 00137 void osync_plugin_set_commit_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, OSyncFormatCommitFn commit_change); 00138 void osync_plugin_set_access_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, OSyncFormatAccessFn access_fn); 00139 void osync_plugin_set_read_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, OSyncFormatReadFn read_fn); 00140 void osync_plugin_set_batch_commit_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, OSyncFormatBatchCommitFn batch); 00141 void osync_plugin_set_committed_all_objformat(OSyncPluginInfo *info, const char *objtypestr, const char *formatstr, OSyncFormatCommittedAllFn committed_all);