[Spice-devel] [PATCH spice-server v3 12/32] dispatcher: Use socket compatibility layer

Frediano Ziglio fziglio at redhat.com
Mon Jan 7 18:01:55 UTC 2019


Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/dispatcher.c | 26 +++++++++++++-------------
 server/dispatcher.h |  2 +-
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/server/dispatcher.c b/server/dispatcher.c
index 3e27f2c2..4cd91f11 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -50,8 +50,8 @@ G_DEFINE_TYPE(Dispatcher, dispatcher, G_TYPE_OBJECT)
 #define DISPATCHER_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_DISPATCHER, DispatcherPrivate))
 
 struct DispatcherPrivate {
-    int recv_fd;
-    int send_fd;
+    socket_t recv_fd;
+    socket_t send_fd;
     pthread_t thread_id;
     pthread_mutex_t lock;
     DispatcherMessage *messages;
@@ -109,8 +109,8 @@ dispatcher_finalize(GObject *object)
 {
     Dispatcher *self = DISPATCHER(object);
     g_free(self->priv->messages);
-    close(self->priv->send_fd);
-    close(self->priv->recv_fd);
+    socket_close(self->priv->send_fd);
+    socket_close(self->priv->recv_fd);
     pthread_mutex_destroy(&self->priv->lock);
     g_free(self->priv->payload);
     G_OBJECT_CLASS(dispatcher_parent_class)->finalize(object);
@@ -119,14 +119,14 @@ dispatcher_finalize(GObject *object)
 static void dispatcher_constructed(GObject *object)
 {
     Dispatcher *self = DISPATCHER(object);
-    int channels[2];
+    socket_t channels[2];
 
     G_OBJECT_CLASS(dispatcher_parent_class)->constructed(object);
 
 #ifdef DEBUG_DISPATCHER
     setup_dummy_signal_handler();
 #endif
-    if (socketpair(AF_LOCAL, SOCK_STREAM, 0, channels) == -1) {
+    if (socket_newpair(SOCK_STREAM, 0, channels) == -1) {
         spice_error("socketpair failed %s", strerror(errno));
         return;
     }
@@ -187,7 +187,7 @@ dispatcher_new(size_t max_message_type)
  *        if 0 poll first, return immediately if no bytes available, otherwise
  *         read size in blocking mode.
  */
-static int read_safe(int fd, uint8_t *buf, size_t size, int block)
+static int read_safe(socket_t fd, uint8_t *buf, size_t size, int block)
 {
     int read_size = 0;
     int ret;
@@ -197,7 +197,7 @@ static int read_safe(int fd, uint8_t *buf, size_t size, int block)
     }
 
     if (!block) {
-        struct pollfd pollfd = {.fd = fd, .events = POLLIN, .revents = 0};
+        struct pollfd pollfd = {.fd = socket_get_raw(fd), .events = POLLIN, .revents = 0};
         while ((ret = poll(&pollfd, 1, 0)) == -1) {
             if (errno == EINTR) {
                 spice_debug("EINTR in poll");
@@ -211,7 +211,7 @@ static int read_safe(int fd, uint8_t *buf, size_t size, int block)
         }
     }
     while (read_size < size) {
-        ret = read(fd, buf + read_size, size - read_size);
+        ret = socket_read(fd, buf + read_size, size - read_size);
         if (ret == -1) {
             if (errno == EINTR) {
                 spice_debug("EINTR in read");
@@ -232,13 +232,13 @@ static int read_safe(int fd, uint8_t *buf, size_t size, int block)
  * write_safe
  * @return -1 for error, otherwise number of written bytes. may be zero.
  */
-static int write_safe(int fd, uint8_t *buf, size_t size)
+static int write_safe(socket_t fd, uint8_t *buf, size_t size)
 {
     int written_size = 0;
     int ret;
 
     while (written_size < size) {
-        ret = write(fd, buf + written_size, size - written_size);
+        ret = socket_write(fd, buf + written_size, size - written_size);
         if (ret == -1) {
             if (errno != EINTR) {
                 return -1;
@@ -310,7 +310,7 @@ void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type,
 {
     DispatcherMessage *msg;
     uint32_t ack;
-    int send_fd = dispatcher->priv->send_fd;
+    socket_t send_fd = dispatcher->priv->send_fd;
 
     assert(dispatcher->priv->max_message_type > message_type);
     assert(dispatcher->priv->messages[message_type].handler);
@@ -393,7 +393,7 @@ void dispatcher_set_opaque(Dispatcher *self, void *opaque)
     self->priv->opaque = opaque;
 }
 
-int dispatcher_get_recv_fd(Dispatcher *dispatcher)
+socket_t dispatcher_get_recv_fd(Dispatcher *dispatcher)
 {
     return dispatcher->priv->recv_fd;
 }
diff --git a/server/dispatcher.h b/server/dispatcher.h
index bb968e56..bbc88224 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -155,7 +155,7 @@ void dispatcher_handle_recv_read(Dispatcher *);
  *
  * @return: receive file descriptor of the dispatcher
  */
-int dispatcher_get_recv_fd(Dispatcher *);
+socket_t dispatcher_get_recv_fd(Dispatcher *);
 
 /* dispatcher_set_opaque
  *
-- 
2.20.1



More information about the Spice-devel mailing list