Changeset 3321
- Timestamp:
- 05/04/08 22:45:48 (3 months ago)
- Files:
-
- trunk/opensync/engine/opensync_engine.c (modified) (3 diffs)
- trunk/opensync/engine/opensync_obj_engine.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/opensync/engine/opensync_engine.c
r3212 r3321 136 136 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, proxy, userdata, change); 137 137 138 long long int memberid = osync_member_get_id(osync_client_proxy_get_member(proxy)); 138 OSyncMember *member = osync_client_proxy_get_member(proxy); 139 long long int memberid = osync_member_get_id(member); 139 140 const char *uid = osync_change_get_uid(change); 140 intchangetype = osync_change_get_changetype(change);141 OSyncChangeType changetype = osync_change_get_changetype(change); 141 142 const char *format = osync_objformat_get_name(osync_change_get_objformat(change)); 142 const char *format_config = osync_objformat_get_config(osync_change_get_objformat(change));143 143 const char *objtype = osync_change_get_objtype(change); 144 144 145 osync_trace(TRACE_INTERNAL, "Received change %s, changetype %i, format %s, format conversion config %s, objtype %s from member %lli", uid, changetype, format, format_config, objtype, memberid); 145 OSyncObjTypeSink *objtype_sink = osync_member_find_objtype_sink(member, objtype); 146 147 osync_trace(TRACE_INTERNAL, "Received change %s, changetype %i, format %s, objtype %s from member %lli", uid, changetype, format, objtype, memberid); 146 148 147 149 OSyncData *data = osync_change_get_data(change); … … 156 158 if (internalFormat && osync_group_get_converter_enabled(engine->group) && (osync_change_get_changetype(change) != OSYNC_CHANGE_TYPE_DELETED)) { 157 159 osync_trace(TRACE_INTERNAL, "converting to common format %s", osync_objformat_get_name(internalFormat)); 158 160 159 161 OSyncFormatConverterPath *path = osync_format_env_find_path_with_detectors(engine->formatenv, osync_change_get_data(change), internalFormat, &error); 160 162 … … 162 164 goto error; 163 165 164 osync_converter_path_set_config(path, osync_objformat_get_config(osync_change_get_objformat(change))); 166 OSyncObjFormatSink *formatsink = osync_objtype_sink_find_objformat_sink(objtype_sink, internalFormat); 167 const char *config = osync_objformat_sink_get_config(formatsink); 168 osync_converter_path_set_config(path, config); 165 169 166 170 if (!osync_format_env_convert(engine->formatenv, path, data, &error)) { trunk/opensync/engine/opensync_obj_engine.c
r3305 r3321 823 823 } 824 824 825 static OSyncObjFormat **_get_member_formats(OSyncFormatEnv *env, OSyncClientProxy *proxy, const char *objtype, OSyncError **error)826 {827 osync_trace(TRACE_ENTRY, "%s(%p, %p, %s, %p)", __func__, env, proxy, objtype, error);828 OSyncMember *member = osync_client_proxy_get_member(proxy);829 830 const OSyncList *formats = osync_member_get_objformats(member, objtype, error);831 if (!formats) {832 if (!osync_error_is_set(error))833 osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to find a valid target format");834 goto error;835 }836 837 osync_trace(TRACE_INTERNAL, "Found %i possible sink formats", osync_list_length(formats));838 839 int num = osync_list_length(formats);840 841 OSyncObjFormat **formatArray = osync_try_malloc0(sizeof(OSyncObjFormat *) * (num + 1), error);842 if (!formatArray)843 goto error;844 845 const OSyncList *f = NULL;846 int i = 0;847 for (f = formats; f; f = f->next) {848 const char **format_vertice = f->data;849 const char *formatstr = format_vertice[0];850 const char *format_configstr = format_vertice[1];851 OSyncObjFormat *format = osync_format_env_find_objformat(env, formatstr);852 osync_objformat_set_config(format, format_configstr);853 if (!format) {854 g_free(formatArray);855 osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to find a valid object format for \"%s\"", formatstr);856 goto error;857 }858 859 formatArray[i] = format;860 i++;861 }862 formatArray[i] = NULL;863 864 osync_trace(TRACE_EXIT, "%s: %p", __func__, formatArray);865 return formatArray;866 867 error:868 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error));869 return NULL;870 }871 872 825 osync_bool osync_obj_engine_command(OSyncObjEngine *engine, OSyncEngineCmd cmd, OSyncError **error) 873 826 { … … 1019 972 /* Now we have to convert to one of the formats 1020 973 * that the client can understand */ 1021 OSyncObjFormat **formats = _get_member_formats(engine->formatenv, sinkengine->proxy, osync_change_get_objtype(entry_engine->change), error); 1022 if (!formats) 1023 goto error; 1024 1025 OSyncFormatConverterPath *path = osync_format_env_find_path_formats_with_detectors(engine->formatenv, osync_change_get_data(entry_engine->change), formats, error); 1026 if (!path) { 1027 g_free(formats); 974 OSyncList *format_sinks = osync_objtype_sink_get_objformat_sinks(objtype_sink); 975 if (!format_sinks) { 976 osync_error_set(error, OSYNC_ERROR_GENERIC, "There are no available format sinks."); 1028 977 goto error; 1029 978 } 1030 1031 int length = osync_converter_path_num_edges(path); 979 980 OSyncFormatConverterPath *path = osync_format_env_find_path_formats_with_detectors(engine->formatenv, osync_change_get_data(entry_engine->change), format_sinks, error); 981 if (!path) 982 goto error; 983 984 unsigned int length = osync_converter_path_num_edges(path); 1032 985 OSyncFormatConverter *converter = osync_converter_path_nth_edge(path, length - 1); 1033 986 if (converter) { 1034 987 OSyncObjFormat *format = osync_converter_get_targetformat(converter); 1035 osync_converter_path_set_config( path, osync_objformat_get_config(format)); 988 OSyncObjFormatSink *formatsink = osync_objtype_sink_find_objformat_sink(objtype_sink, format); 989 osync_converter_path_set_config(path, osync_objformat_sink_get_config(formatsink)); 1036 990 } 1037 991 1038 g_free(formats);1039 1040 992 if (!osync_format_env_convert(engine->formatenv, path, osync_change_get_data(entry_engine->change), error)) { 1041 993 osync_converter_path_unref(path); … … 1050 1002 } 1051 1003 1052 osync_trace(TRACE_INTERNAL, "Writing change %s, changetype %i, format %s , format conversion config %s , objtype %s from member %lli", osync_change_get_uid(change), osync_change_get_changetype(change), osync_objformat_get_name(osync_change_get_objformat(change)), osync_objformat_get_config(osync_change_get_objformat(change)), osync_change_get_objtype(change), osync_member_get_id(osync_client_proxy_get_member(sinkengine->proxy))); 1004 osync_trace(TRACE_INTERNAL, "Writing change %s, changetype %i, format %s , objtype %s from member %lli", 1005 osync_change_get_uid(change), 1006 osync_change_get_changetype(change), 1007 osync_objformat_get_name(osync_change_get_objformat(change)), 1008 osync_change_get_objtype(change), 1009 osync_member_get_id(osync_client_proxy_get_member(sinkengine->proxy))); 1053 1010 1054 1011 if (!osync_client_proxy_commit_change(sinkengine->proxy, _osync_obj_engine_commit_change_callback, entry_engine, osync_entry_engine_get_change(entry_engine), error))
