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);