diff options
author | Alon Levy <alevy@redhat.com> | 2011-11-07 13:27:54 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-11-08 14:59:51 +0200 |
commit | fff04e867c02eb5c3582f17810c1a092ce240fc6 (patch) | |
tree | 2a3e8037e6505472037690222d1f072fcbc788ce /server | |
parent | 776bdd6c95715dcd8e609dc3ff647d0ad73fd339 (diff) | |
download | spice-fff04e867c02eb5c3582f17810c1a092ce240fc6.tar.gz spice-fff04e867c02eb5c3582f17810c1a092ce240fc6.tar.xz spice-fff04e867c02eb5c3582f17810c1a092ce240fc6.zip |
introduce DISPATCHER_{NONE,ACK,ASYNC}
Diffstat (limited to 'server')
-rw-r--r-- | server/dispatcher.c | 12 | ||||
-rw-r--r-- | server/dispatcher.h | 13 |
2 files changed, 18 insertions, 7 deletions
diff --git a/server/dispatcher.c b/server/dispatcher.c index 1cd9e43a..81abbdf3 100644 --- a/server/dispatcher.c +++ b/server/dispatcher.c @@ -120,10 +120,12 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher) } else { red_printf("error: no handler for message type %d\n", type); } - if (msg->ack && write_safe(dispatcher->recv_fd, - &ack, sizeof(ack)) == -1) { - red_printf("error writing ack for message %d\n", type); - /* TODO: close socketpair? */ + if (msg->ack == DISPATCHER_ACK) { + if (write_safe(dispatcher->recv_fd, + &ack, sizeof(ack)) == -1) { + red_printf("error writing ack for message %d\n", type); + /* TODO: close socketpair? */ + } } return 1; } @@ -159,7 +161,7 @@ void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type, message_type); goto unlock; } - if (msg->ack) { + if (msg->ack == DISPATCHER_ACK) { if (read_safe(send_fd, &ack, sizeof(ack), 1) == -1) { red_printf("error: failed to read ack"); } else if (ack != ACK) { diff --git a/server/dispatcher.h b/server/dispatcher.h index 04e6b467..95b6bfc6 100644 --- a/server/dispatcher.h +++ b/server/dispatcher.h @@ -45,13 +45,22 @@ void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type, void dispatcher_init(Dispatcher *dispatcher, size_t max_message_type, void *opaque); +enum { + DISPATCHER_NONE = 0, + DISPATCHER_ACK, + DISPATCHER_ASYNC +}; + /* * dispatcher_register_handler - * @dispatcher: dispatcher + * @dispatcher: dispatcher * @messsage_type: message type * @handler: message handler * @size: message size. Each type has a fixed associated size. - * @ack: send an ack. This is per message type - you can't send the + * @ack: One of DISPATCHER_NONE, DISPATCHER_ACK, DISPATCHER_ASYNC. + * DISPATCHER_NONE - only send the message + * DISPATCHER_ACK - send an ack after the message + * DISPATCHER_ASYNC - call send an ack. This is per message type - you can't send the * same message type with and without. Register two different * messages if that is what you want. */ |