00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef OPENSYNC_ENGINE_PRIVATE_H_
00022 #define OPENSYNC_ENGINE_PRIVATE_H_
00023
00032
00033 typedef enum {
00034 OSYNC_ENGINE_SOLVE_DUPLICATE,
00035 OSYNC_ENGINE_SOLVE_CHOOSE,
00036 OSYNC_ENGINE_SOLVE_IGNORE,
00037 OSYNC_ENGINE_SOLVE_USE_LATEST
00038 } OSyncEngineSolveType;
00039
00040 typedef struct OSyncEngineCommand {
00041 OSyncEngineCmd cmd;
00042 OSyncMappingEngine *mapping_engine;
00043 OSyncChange *master;
00044 OSyncEngineSolveType solve_type;
00045 OSyncMember *member;
00046 } OSyncEngineCommand;
00047
00048 struct OSyncEngine {
00049 int ref_count;
00051 OSyncGroup *group;
00052 OSyncArchive *archive;
00053
00054 char *engine_path;
00055 char *plugin_dir;
00056 char *format_dir;
00057 #ifdef OPENSYNC_UNITTESTS
00058 char *schema_dir;
00059 #endif
00060 OSyncFormatEnv *formatenv;
00061 OSyncPluginEnv *pluginenv;
00062
00063 OSyncEngineState state;
00064
00065 osync_conflict_cb conflict_callback;
00066 void *conflict_userdata;
00067
00068 osync_multiply_cb multiply_callback;
00069 void *multiply_userdata;
00070
00071 osync_status_change_cb changestat_callback;
00072 void *changestat_userdata;
00073
00074 osync_status_member_cb mebstat_callback;
00075 void *mebstat_userdata;
00076
00077 osync_status_engine_cb engstat_callback;
00078 void *engstat_userdata;
00079
00080 osync_status_mapping_cb mapstat_callback;
00081 void *mapstat_userdata;
00082
00084 OSyncThread *thread;
00085 GMainContext *context;
00086
00087 GAsyncQueue *command_queue;
00088 GSourceFuncs *command_functions;
00089 GSource *command_source;
00090
00091 GCond* syncing;
00092 GMutex* syncing_mutex;
00093
00094 GCond* started;
00095 GMutex* started_mutex;
00096
00098 OSyncList *proxies;
00099
00101 OSyncList *object_engines;
00102
00103 osync_bool man_dispatch;
00104 osync_bool allow_sync_alert;
00105
00106 OSyncError *error;
00107
00109 osync_bool disconnecting;
00110
00111 int proxy_connects;
00112 int proxy_connect_done;
00113 int proxy_disconnects;
00114 int proxy_get_changes;
00115 int proxy_written;
00116 int proxy_sync_done;
00117 int proxy_errors;
00118
00119 int obj_errors;
00120 int obj_connects;
00121 int obj_connect_done;
00122 int obj_disconnects;
00123 int obj_get_changes;
00124 int obj_prepared_map;
00125 int obj_mapped;
00126 int obj_solved;
00127 int obj_multiplied;
00128 int obj_prepared_write;
00129 int obj_written;
00130 int obj_sync_done;
00131
00132 osync_bool busy;
00133
00134 GHashTable *internalFormats;
00135 GHashTable *internalSchemas;
00137 GHashTable *converterPathes;
00138
00140 OSyncEngineEvent lastevent;
00141 };
00142
00151 void osync_engine_set_error(OSyncEngine *engine, OSyncError *error);
00152
00162 osync_bool osync_engine_initialize_formats(OSyncEngine *engine, OSyncError **error);
00163
00166 #endif