30 event->ring = (
char**) malloc(event->
size * sizeof (
char*));
31 if (event->
ring == NULL)
fatal_error(
"cannot allocate event buffers\n");
32 for (i = 0; i <
event->size; ++i) event->
ring[i] = NULL;
35 condition_init(event);
51 for (i = 0; i <
event->size; ++i) {
53 event->ring[i] = NULL;
73 for (i = 0; i <
event->size; ++i) {
81 condition_free(event);
102 event->end = (
event->end + 1) % event->
size;
105 new_size =
event->size * 2;
106 new_ring = (
char**) malloc(new_size *
sizeof (
char*));
107 if (new_ring == NULL)
fatal_error(
"cannot allocate event buffers\n");
108 for (i = 0; i <
event->size; ++i)
109 new_ring[i] = event->
ring[(i + event->
first) %
event->size];
110 for (; i < new_size; ++i) new_ring[i] = NULL;
112 event->end =
event->size;
113 last =
event->size - 1;
114 event->size = new_size;
116 event->ring = new_ring;
119 event->ring[last] = message;
120 info(
"<event add [%d]: %s>\n", last, message);
140 condition_wait(event);
147 info(
"<event wait: %s>\n", message);
150 *cmd = (
char*) malloc(n + 1);
151 *param = (
char*) malloc(n + 1);
159 puts(
"Press [Enter] to continue");
162 condition_wait(event);
178 return (event->
first != event->
end);
194 message =
event->ring[
event->first];
195 event->ring[
event->first] = NULL;
196 event->first = (
event->first + 1) % event->
size;
void event_clear_messages(Event *event)
Remove all unprocessed messages.
Definition event.c:45
bool event_exist(Event *event)
Check if there is a message.
Definition event.c:176
void event_init(Event *event)
Initialize a message event.
Definition event.c:23
void event_wait_enter(Event *event)
Definition event.c:156
void event_wait(Event *event, char **cmd, char **param)
Wait input.
Definition event.c:133
void event_free(Event *event)
Free a message event.
Definition event.c:67
void event_add_message(Event *event, char *message)
Add a new message at the bottom of the list.
Definition event.c:93
char * event_peek_message(Event *event)
Peek the first message from the list.
Definition event.c:187
int size
Definition event.h:21
char ** ring
Definition event.h:20
int first
Definition event.h:22
int end
Definition event.h:23
char * parse_command(const char *string, char *cmd, char *param, const unsigned int size)
Parse a command.
Definition util.c:867
Miscellaneous utilities header.
#define fatal_error(...)
Display an error message as "FATAL_ERROR : file name : function name : line number : ....
Definition util.h:349
#define info(...)
Display a message.
Definition util.h:382