OpenSync 0.22
|
00001 #ifndef _OPENSYNC_MESSAGES_INTERNALS_H 00002 #define _OPENSYNC_MESSAGES_INTERNALS_H 00003 00012 00016 typedef enum { 00017 OSYNC_MESSAGE_NOOP, 00018 OSYNC_MESSAGE_CONNECT, 00019 OSYNC_MESSAGE_DISCONNECT, 00020 OSYNC_MESSAGE_GET_CHANGES, 00021 OSYNC_MESSAGE_GET_CHANGEDATA, 00022 OSYNC_MESSAGE_COMMIT_CHANGE, 00023 OSYNC_MESSAGE_COMMITTED_ALL, 00024 OSYNC_MESSAGE_SYNC_DONE, 00025 OSYNC_MESSAGE_CALL_PLUGIN, 00026 OSYNC_MESSAGE_NEW_CHANGE, 00027 OSYNC_MESSAGE_REPLY, 00028 OSYNC_MESSAGE_ERRORREPLY, 00029 OSYNC_MESSAGE_INITIALIZE, 00030 OSYNC_MESSAGE_FINALIZE, 00031 OSYNC_MESSAGE_SYNCHRONIZE, 00032 OSYNC_MESSAGE_ENGINE_CHANGED, 00033 OSYNC_MESSAGE_MAPPING_CHANGED, 00034 OSYNC_MESSAGE_MAPPINGENTRY_CHANGED, 00035 OSYNC_MESSAGE_ERROR, 00036 OSYNC_MESSAGE_QUEUE_ERROR, 00037 OSYNC_MESSAGE_QUEUE_HUP, 00038 OSYNC_MESSAGE_SYNC_ALERT, 00039 } OSyncMessageCommand; 00040 00048 typedef void (*OSyncMessageHandler)(OSyncMessage *message, void *user_data); 00049 00050 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00051 typedef struct timeout_info { 00052 OSyncQueue *sendingqueue; 00053 OSyncMessage *message; 00054 GSource *source; 00055 void *replysender; 00056 OSyncQueue *replyqueue; 00057 int timeout; 00058 gboolean (*timeoutfunc)(gpointer); 00059 } timeout_info; 00060 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 00061 00065 struct OSyncMessage { 00066 gint refCount; 00068 OSyncMessageCommand cmd; 00070 long long int id1; 00071 int id2; 00073 OSyncMessageHandler callback; 00075 gpointer user_data; 00077 timeout_info *to_info; 00079 osync_bool is_answered; 00081 GByteArray *buffer; 00083 int buffer_read_pos; 00084 }; 00085 00088 OSyncMessage *osync_message_new(OSyncMessageCommand cmd, int size, OSyncError **error); 00089 OSyncMessage *osync_message_new_reply(OSyncMessage *message, OSyncError **error); 00090 OSyncMessage *osync_message_new_errorreply(OSyncMessage *message, OSyncError **error); 00091 OSyncMessage *osync_message_new_error(OSyncError *error, OSyncError **loc_error); 00092 void osync_message_ref(OSyncMessage *message); 00093 void osync_message_unref(OSyncMessage *message); 00094 00095 void osync_message_set_handler(OSyncMessage *message, OSyncMessageHandler handler, gpointer user_data); 00096 gboolean osync_message_is_error(OSyncMessage *message); 00097 osync_bool osync_message_send_message(OSyncMessage *message, OSyncError **error); 00098 osync_bool osync_message_send_with_timeout(OSyncMessage *message, OSyncQueue *queue, OSyncQueue *replyQueue, int timeout, OSyncError **error); 00099 OSyncMessageCommand osync_message_get_command(OSyncMessage *message); 00100 void osync_message_reset_timeout(OSyncMessage *message); 00101 osync_bool osync_message_is_answered(OSyncMessage *message); 00102 void osync_message_set_answered(OSyncMessage *message); 00103 00104 void osync_message_write_int(OSyncMessage *message, int value); 00105 void osync_message_write_long_long_int(OSyncMessage *message, long long int value); 00106 void osync_message_write_string(OSyncMessage *message, const char *value); 00107 void osync_message_write_data(OSyncMessage *message, const void *value, int size); 00108 00109 void osync_message_read_int(OSyncMessage *message, int *value); 00110 void osync_message_read_long_long_int(OSyncMessage *message, long long int *value); 00111 void osync_message_read_string(OSyncMessage *message, char **value); 00112 void osync_message_read_data(OSyncMessage *message, void *value, int size); 00113 void osync_message_read_const_data(OSyncMessage *message, void **value, int size); 00114 void osync_message_read_const_string(OSyncMessage *message, char **value); 00115 00116 #endif