Changeset 381
- Timestamp:
- 03/21/05 01:07:30 (4 years ago)
- Location:
- trunk
- Files:
-
- 9 modified
-
Makefile.am (modified) (1 diff)
-
opensync/opensync_format_internals.h (modified) (1 diff)
-
opensync/opensync_member.c (modified) (3 diffs)
-
opensync/opensync_member.h (modified) (1 diff)
-
opensync/opensync_plugin.h (modified) (1 diff)
-
osengine/osengine_client.c (modified) (3 diffs)
-
osengine/osengine_client_internals.h (modified) (1 diff)
-
osengine/osengine_engine.c (modified) (1 diff)
-
osengine/osengine_engine_internals.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Makefile.am
r257 r381 18 18 EXTRA_DIST = \ 19 19 autogen.sh \ 20 buildtest.sh \21 20 plugins \ 22 21 opensync-1.0.pc.in \ 23 osengine-1.0.pc.in 22 osengine-1.0.pc.in \ 23 misc/buildtest.sh \ 24 misc/doxygen.css 24 25 25 26 dist-hook: -
trunk/opensync/opensync_format_internals.h
r374 r381 84 84 char *extension_name; 85 85 struct OSyncObjTypeSink *objtype_sink; 86 GList *commit_changes; 87 GList *commit_contexts; 86 88 } OSyncObjFormatSink; 87 89 -
trunk/opensync/opensync_member.c
r374 r381 563 563 g_assert(change); 564 564 565 OSyncFormatEnv *env = osync_member_get_format_env(member); 565 566 OSyncContext *context = osync_context_new(member); 566 567 context->callback_function = function; 567 568 context->calldata = user_data; 568 569 OSyncFormatEnv *env = osync_member_get_format_env(member); 569 570 570 571 571 OSyncObjType *type = change->objtype; … … 618 618 osync_debug("OSYNC", 2, "Comparing change %s with sink %s", osync_change_get_objformat(change)->name, fmtsink->format ? fmtsink->format->name : "None"); 619 619 if (fmtsink->format == osync_change_get_objformat(change)) { 620 // Send the change 621 fmtsink->functions.commit_change(context, change); 622 osync_trace(TRACE_EXIT, "%s", __func__); 623 return; 620 if (fmtsink->functions.batch_commit) { 621 //Append to the stored changes 622 fmtsink->commit_changes = g_list_append(fmtsink->commit_changes, change); 623 fmtsink->commit_contexts = g_list_append(fmtsink->commit_contexts, context); 624 osync_trace(TRACE_EXIT, "%s: Waiting for batch processing", __func__); 625 return; 626 } else { 627 // Send the change 628 fmtsink->functions.commit_change(context, change); 629 osync_trace(TRACE_EXIT, "%s", __func__); 630 return; 631 } 624 632 } 625 633 } … … 627 635 osync_context_report_error(context, OSYNC_ERROR_CONVERT, "Unable to send changes"); 628 636 osync_trace(TRACE_EXIT_ERROR, "%s: Unable to find a sink", __func__); 637 } 638 639 void osync_member_committed_all(OSyncMember *member) 640 { 641 osync_trace(TRACE_ENTRY, "%s(%p)", __func__, member); 642 643 GList *f; 644 for (f = member->format_sinks; f; f = f->next) { 645 OSyncObjFormatSink *fmtsink = f->data; 646 osync_debug("OSYNC", 2, "Sending committed all to sink %s", fmtsink->format ? fmtsink->format->name : "None"); 647 648 OSyncFormatFunctions functions = fmtsink->functions; 649 650 if (functions.batch_commit) { 651 GList *o = fmtsink->commit_contexts; 652 GList *c = NULL; 653 654 int i = 0; 655 OSyncChange **changes = g_malloc0(sizeof(OSyncChange *) * (g_list_length(fmtsink->commit_changes) + 1)); 656 OSyncContext **contexts = g_malloc0(sizeof(OSyncContext *) * (g_list_length(fmtsink->commit_changes) + 1));; 657 658 for (c = fmtsink->commit_changes; c && o; c = c->next) { 659 OSyncChange *change = c->data; 660 OSyncContext *context = o->data; 661 662 changes[i] = change; 663 contexts[i] = context; 664 665 i++; 666 o = o->next; 667 } 668 669 changes[i] = NULL; 670 contexts[i] = NULL; 671 functions.batch_commit(member->plugindata, contexts, changes); 672 673 g_free(changes); 674 g_free(contexts); 675 676 g_list_free(fmtsink->commit_changes); 677 fmtsink->commit_changes = NULL; 678 679 g_list_free(fmtsink->commit_contexts); 680 fmtsink->commit_contexts = NULL; 681 } else if (functions.committed_all) { 682 functions.committed_all(member->plugindata); 683 } 684 } 685 686 osync_trace(TRACE_EXIT, "%s", __func__); 629 687 } 630 688 -
trunk/opensync/opensync_member.h
r374 r381 40 40 void osync_member_get_changeinfo(OSyncMember *member, OSyncEngCallback function, void *user_data); 41 41 void osync_member_read_change(OSyncMember *member, OSyncChange *change, OSyncEngCallback function, void *user_data); 42 void osync_member_committed_all(OSyncMember *member); 42 43 43 44 void *osync_member_call_plugin(OSyncMember *member, const char *function, void *data, OSyncError **error); -
trunk/opensync/opensync_plugin.h
r375 r381 36 36 typedef struct OSyncFormatFunctions { 37 37 osync_bool (* commit_change) (OSyncContext *, OSyncChange *); 38 void (* committed_all) (void *); 39 void (* batch_commit) (void *, OSyncContext **, OSyncChange **); 38 40 osync_bool (* access) (OSyncContext *, OSyncChange *); 39 41 void (* read) (OSyncContext *, OSyncChange *); -
trunk/osengine/osengine_client.c
r375 r381 42 42 client->fl_done = osync_flag_new(NULL); 43 43 client->fl_finished = osync_flag_new(engine->cmb_finished); 44 //client->fl_reset = osync_flag_new(engine->cmb_reset); 45 44 45 client->cmb_written = osync_comb_flag_new(FALSE, FALSE); 46 osync_flag_set_pos_trigger(client->cmb_written, (MSyncFlagTriggerFunc)send_committed_all, client, engine); 47 46 48 return client; 47 49 } … … 61 63 osync_flag_free(client->fl_done); 62 64 osync_flag_free(client->fl_finished); 65 osync_flag_free(client->cmb_written); 63 66 64 67 g_free(client); … … 171 174 } 172 175 176 if (itm_message_is_methodcall(message, "COMMITTED_ALL")) { 177 osync_member_committed_all(client->member); 178 osync_trace(TRACE_EXIT, "client_message_handler"); 179 return; 180 } 181 173 182 if (itm_message_is_methodcall(message, "READ_CHANGE")) { 174 183 OSyncChange *change = itm_message_get_data(message, "change"); -
trunk/osengine/osengine_client_internals.h
r361 r381 15 15 MSyncFlag *fl_done; 16 16 MSyncFlag *fl_finished; 17 MSyncFlag *cmb_written; 17 18 GThread *thread; 18 19 GMainContext *context; -
trunk/osengine/osengine_engine.c
r376 r381 348 348 } 349 349 350 void send_committed_all(OSyncClient *target, OSyncEngine *sender) 351 { 352 osync_flag_changing(target->fl_done); 353 ITMessage *message = itm_message_new_signal(sender, "COMMITTED_ALL"); 354 itm_queue_send(target->incoming, message); 355 } 356 350 357 void send_disconnect(OSyncClient *target, OSyncEngine *sender) 351 358 { -
trunk/osengine/osengine_engine_internals.h
r375 r381 70 70 void send_read_change(OSyncEngine *sender, OSyncMappingEntry *entry); 71 71 void send_engine_changed(OSyncEngine *engine); 72 void send_committed_all(OSyncClient *target, OSyncEngine *sender);
