OpenSync  0.22
opensync_queue_internals.h
1 #ifndef _OPENSYNC_QUEUE_INTERNALS_H
2 #define _OPENSYNC_QUEUE_INTERNALS_H
3 
12 
13 typedef enum {
14  OSYNC_QUEUE_EVENT_NONE,
15  OSYNC_QUEUE_EVENT_READ,
16  OSYNC_QUEUE_EVENT_ERROR,
17  OSYNC_QUEUE_EVENT_HUP
18 } OSyncQueueEvent;
19 
20 typedef enum {
21  OSYNC_QUEUE_SENDER,
22  OSYNC_QUEUE_RECEIVER
23 } OSyncQueueType;
24 
27 struct OSyncQueue {
28  OSyncQueueType type;
30  int fd;
32  char *name;
36  gpointer user_data;
38  GSourceFuncs *incoming_functions;
39  GSource *incoming_source;
41  GMainContext *context;
42  GMainContext *incomingContext;
43 
44  OSyncThread *thread;
45 
46  GAsyncQueue *incoming;
47  GAsyncQueue *outgoing;
48 
49  GList *pendingReplies;
50  GMutex *pendingLock;
51 
52  GSourceFuncs *write_functions;
53  GSource *write_source;
54 
55  GSourceFuncs *read_functions;
56  GSource *read_source;
57 
58  osync_bool connected;
59 };
60 
63 int _osync_queue_write_data(OSyncQueue *queue, const void *vptr, size_t n, OSyncError **error);
64 osync_bool _osync_queue_write_long_long_int(OSyncQueue *queue, const long long int message, OSyncError **error);
65 osync_bool _osync_queue_write_int(OSyncQueue *queue, const int message, OSyncError **error);
66 
67 OSyncQueue *osync_queue_new(const char *name, OSyncError **error);
68 osync_bool osync_queue_new_pipes(OSyncQueue **read_queue, OSyncQueue **write_queue, OSyncError **error);
69 osync_bool osync_queue_create(OSyncQueue *queue, OSyncError **error);
70 
71 void osync_queue_free(OSyncQueue *queue);
72 osync_bool osync_queue_remove(OSyncQueue *queue, OSyncError **error);
73 osync_bool osync_queue_exists(OSyncQueue *queue);
74 
75 osync_bool osync_queue_connect(OSyncQueue *queue, OSyncQueueType type, OSyncError **error);
76 osync_bool osync_queue_try_connect(OSyncQueue *queue, OSyncQueueType type, OSyncError **error);
77 osync_bool osync_queue_disconnect(OSyncQueue *queue, OSyncError **error);
78 osync_bool osync_queue_is_connected(OSyncQueue *queue);
79 
81 osync_bool osync_queue_send_message(OSyncQueue *queue, OSyncQueue *replyqueue, OSyncMessage *message, OSyncError **error);
82 osync_bool osync_queue_send_message_with_timeout(OSyncQueue *queue, OSyncQueue *replyqueue, OSyncMessage *message, int timeout, OSyncError **error);
83 
84 void osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context);
85 osync_bool osync_queue_dispatch(OSyncQueue *queue, OSyncError **error);
86 
87 OSyncQueueEvent osync_queue_poll(OSyncQueue *queue);
88 
90 
91 osync_bool osync_queue_is_alive(OSyncQueue *queue);
92 
93 #endif
OSyncMessageHandler message_handler
Represent an error.
void osync_queue_set_message_handler(OSyncQueue *queue, OSyncMessageHandler handler, gpointer user_data)
Sets the message handler for a queue.
void(* OSyncMessageHandler)(OSyncMessage *message, void *user_data)
Function which can receive messages.
void osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context)
Sets the queue to use the gmainloop with the given context.
OSyncQueue * osync_queue_new(const char *name, OSyncError **error)
Creates a new asynchronous queue.
GMainContext * context
GSourceFuncs * incoming_functions
Represents a Queue which can be used to receive messages.
OSyncMessage * osync_queue_get_message(OSyncQueue *queue)