• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List

opensync/opensync_message_internals.h

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

Generated on Mon Jul 26 2010 for OpenSync by  doxygen 1.7.1