In order to receive events the from a Storyboard application, a client program
must first create a receive communication channel using the
gre_io_open()
function. This function takes the name of a
channel to create and the mode in which to open the channel, for reading or
writing. Receiving clients must open it for reading.
Once the communication channel is created, then the client program then must
call gre_io_receive()
in order to receive and process
events.
The client communication channel can be created in either a blocking or
non-blocking mode. By default the gre_io_receive()
function will
not return unless there is an event available or an error has occurred.
Once an event has been received the data can be unserialized into its standard
components using the gre_io_unserialze()
function.
char *name = (char *)arg; gre_io_t *rhandle; gre_io_serialized_data_t *buffer = NULL; int ret; char *revent_name; char *revent_target; char *revent_format; uint8_t *revent_data; int offset, i, rnbytes; rhandle = gre_io_open(name, GRE_IO_TYPE_RDONLY); if(rhandle == NULL) { printf("Can't open IO channel %s\n", name); return 0; } printf("Waiting on channel [%s]\n", name); while(1) { ret = gre_io_receive(rhandle, &buffer); if(ret < 0) { printf("Problem receiving data on channel [%s]\n", name); break; } rnbytes = gre_io_unserialize(buffer, &revent_target, &revent_name, &revent_format, (void **)&revent_data); printf("Event Received [%s] on channel [%s]:\n", revent_name, name); printf(" Event Target: [%s]\n", revent_target); printf(" Event Format: [%s]\n", revent_format); printf(" Event Data (%d bytes):\n", rnbytes); } gre_io_close(rhandle);