22 #include "opensync_internals.h"
24 OSyncContext *osync_context_new(
OSyncMember *member)
26 OSyncContext *ctx = g_malloc0(
sizeof(OSyncContext));
31 void osync_context_free(OSyncContext *context)
38 void *osync_context_get_plugin_data(OSyncContext *context)
41 g_assert(context->member);
42 return context->member->plugindata;
45 void osync_context_report_osyncerror(OSyncContext *context,
OSyncError **error)
49 if (context->callback_function)
50 (context->callback_function)(context->member, context->calldata, error);
51 osync_context_free(context);
55 void osync_context_report_error(OSyncContext *context,
OSyncErrorType type,
const char *format, ...)
61 va_start(args, format);
64 if (context->callback_function)
65 (context->callback_function)(context->member, context->calldata, &error);
67 osync_context_free(context);
71 void osync_context_report_success(OSyncContext *context)
75 if (context->callback_function)
76 (context->callback_function)(context->member, context->calldata, NULL);
77 osync_context_free(context);
81 void osync_context_report_change(OSyncContext *context,
OSyncChange *change)
89 osync_assert_msg(change->
uid,
"You forgot to set a uid on the change you reported!");
91 osync_assert_msg((!(change->
data) && change->
size == 0) || (change->
data && change->
size != 0),
"No data and datasize was not 0!");
106 osync_assert_msg(member->memberfunctions->rf_change,
"The engine must set a callback to receive changes");
107 member->memberfunctions->rf_change(member, change, context->calldata);
111 void osync_context_send_log(OSyncContext *ctx,
const char *message, ...)
119 memset(buffer, 0,
sizeof(buffer));
120 va_start(arglist, message);
121 g_vsnprintf(buffer, 1024, message, arglist);
123 osync_debug(
"OSYNC", 3,
"Sending logmessage \"%s\"", buffer);
124 if (member->memberfunctions->rf_log)
125 member->memberfunctions->rf_log(member, buffer);
130 void osync_report_message(
OSyncMember *member,
const char *message,
void *data)
132 member->memberfunctions->rf_message(member, message, data, FALSE);
135 void *osync_report_message_sync(
OSyncMember *member,
const char *message,
void *data)
137 return member->memberfunctions->rf_message(member, message, data, TRUE);
140 OSyncMember *osync_context_get_member(OSyncContext *ctx)