Hi,
renames requests bellow
On 11/07/2011 01:44 PM, Alon Levy wrote:
---
  server/dispatcher.c |    9 +++++++++
  server/dispatcher.h |   15 +++++++++++++++
  2 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/server/dispatcher.c b/server/dispatcher.c
index b54580e..7e9eb3a 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -111,6 +111,8 @@ static int dispatcher_handle_single_read(Dispatcher 
*dispatcher)
              red_printf("error writing ack for message %d\n", type);
              /* TODO: close socketpair? */
          }
+    } else if (msg->ack == DISPATCHER_ASYNC&&  dispatcher->handle_async) {
+        dispatcher->handle_async(dispatcher->opaque, type, (void *)payload);
      }
      return 1;
  }
@@ -159,6 +161,13 @@ unlock:
      pthread_mutex_unlock(&dispatcher->lock);
  }

+void dispatcher_register_async_callback(Dispatcher *dispatcher,
+                                        dispatcher_handle_async handler)
+{
+    assert(dispatcher->handle_async == NULL);
+    dispatcher->handle_async = handler;
+}
+
s/handle_async/handle_async_done & s/async_callback/async_done_callback (to avoid confusion with handling the async request)
  void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t 
message_type,
                                   dispatcher_handle_message handler, size_t 
size,
                                   int ack)
diff --git a/server/dispatcher.h b/server/dispatcher.h
index 95b6bfc..b85d639 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -8,6 +8,11 @@ typedef struct Dispatcher Dispatcher;
  typedef void (*dispatcher_handle_message)(void *opaque,
                                            void *payload);

+typedef void (*dispatcher_handle_async)(void *opaque,
+                                        uint32_t message_type,
+                                        void *payload);
+
+
s/handle_async/handle_async_done
  typedef struct DispatcherMessage {
      size_t size;
      int ack;
@@ -26,6 +31,7 @@ struct Dispatcher {
      void *payload; /* allocated as max of message sizes */
      size_t payload_size; /* used to track realloc calls */
      void *opaque;
+    dispatcher_handle_async handle_async;
s/handle_async/handle_async_done
  };

  /*
@@ -69,6 +75,15 @@ void dispatcher_register_handler(Dispatcher *dispatcher, 
uint32_t message_type,
                                   int ack);

  /*
+ * dispatcher_register_async_callback
+ * @dispatcher:     dispatcher
+ * @handler:        callback on the receiver side called *after* the
+ *                  message callback in case ack == DISPATCHER_ASYNC.
+ */
+void dispatcher_register_async_callback(Dispatcher *dispatcher,
+                                        dispatcher_handle_async handler);
+
+/*
   *  dispatcher_handle_recv_read
   *  @dispatcher: Dispatcher instance
   */

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to