Просмотр исходного кода

ncd: NCDRequestClient: use struct BConnection_addr for the address argument

ambrop7 13 лет назад
Родитель
Сommit
be19453b5f
4 измененных файлов с 16 добавлено и 49 удалено
  1. 5 5
      ncd-request/ncd-request.c
  2. 4 21
      ncd/NCDRequestClient.c
  3. 2 18
      ncd/NCDRequestClient.h
  4. 5 5
      ncd/modules/sys_request_client.c

+ 5 - 5
ncd-request/ncd-request.c

@@ -50,7 +50,7 @@ static void request_handler_sent (void *user);
 static void request_handler_reply (void *user, NCDValMem reply_mem, NCDValRef reply_value);
 static void request_handler_finished (void *user, int is_error);
 static int write_all (int fd, const uint8_t *data, size_t len);
-static int make_connect_addr (const char *str, struct NCDRequestClient_addr *out_addr);
+static int make_connect_addr (const char *str, struct BConnection_addr *out_addr);
 
 NCDValMem request_mem;
 NCDValRef request_value;
@@ -92,7 +92,7 @@ int main (int argc, char *argv[])
         goto fail1;
     }
     
-    struct NCDRequestClient_addr addr;
+    struct BConnection_addr addr;
     if (!make_connect_addr(connect_address, &addr)) {
         goto fail2;
     }
@@ -120,12 +120,12 @@ fail0:
     return res;
 }
 
-static int make_connect_addr (const char *str, struct NCDRequestClient_addr *out_addr)
+static int make_connect_addr (const char *str, struct BConnection_addr *out_addr)
 {
     size_t i;
     
     if (i = string_begins_with(str, "unix:")) {
-        *out_addr = NCDREQUESTCLIENT_UNIX_ADDR(str + i);
+        *out_addr = BConnection_addr_unix(str + i);
     }
     else if (i = string_begins_with(str, "tcp:")) {
         BAddr baddr;
@@ -134,7 +134,7 @@ static int make_connect_addr (const char *str, struct NCDRequestClient_addr *out
             return 0;
         }
         
-        *out_addr = NCDREQUESTCLIENT_TCP_ADDR(baddr);
+        *out_addr = BConnection_addr_baddr(baddr);
     }
     else {
         BLog(BLOG_ERROR, "address must start with unix: or tcp:");

+ 4 - 21
ncd/NCDRequestClient.c

@@ -465,7 +465,7 @@ static void req_qflow_send_iface_handler_done (struct NCDRequestClient_req *req)
     }
 }
 
-int NCDRequestClient_Init (NCDRequestClient *o, struct NCDRequestClient_addr addr, BReactor *reactor, void *user,
+int NCDRequestClient_Init (NCDRequestClient *o, struct BConnection_addr addr, BReactor *reactor, void *user,
                            NCDRequestClient_handler_error handler_error,
                            NCDRequestClient_handler_connected handler_connected)
 {
@@ -479,26 +479,9 @@ int NCDRequestClient_Init (NCDRequestClient *o, struct NCDRequestClient_addr add
     o->handler_connected = handler_connected;
     
     // init connector
-    switch (addr.type) {
-        case NCDREQUESTCLIENT_ADDR_TYPE_UNIX: {
-            ASSERT(addr.u.unix_socket_path)
-            
-            if (!BConnector_InitUnix(&o->connector, addr.u.unix_socket_path, reactor, o, (BConnector_handler)connector_handler)) {
-                BLog(BLOG_ERROR, "BConnector_InitUnix failed");
-                goto fail0;
-            }
-        } break;
-        
-        case NCDREQUESTCLIENT_ADDR_TYPE_TCP: {
-            BAddr_Assert(&addr.u.tcp_baddr);
-            
-            if (!BConnector_Init(&o->connector, addr.u.tcp_baddr, reactor, o, (BConnector_handler)connector_handler)) {
-                BLog(BLOG_ERROR, "BConnector_InitUnix failed");
-                goto fail0;
-            }
-        } break;
-        
-        default: ASSERT(0);
+    if (!BConnector_InitGeneric(&o->connector, addr, reactor, o, (BConnector_handler)connector_handler)) {
+        BLog(BLOG_ERROR, "BConnector_InitGeneric failed");
+        goto fail0;
     }
     
     // init reqs tree

+ 2 - 18
ncd/NCDRequestClient.h

@@ -38,6 +38,7 @@
 #include <structure/BAVL.h>
 #include <base/DebugObject.h>
 #include <system/BConnection.h>
+#include <system/BConnectionGeneric.h>
 #include <flow/PacketProtoDecoder.h>
 #include <flow/PacketStreamSender.h>
 #include <flow/PacketPassFifoQueue.h>
@@ -95,24 +96,7 @@ struct NCDRequestClient_req {
     int state;
 };
 
-#define NCDREQUESTCLIENT_ADDR_TYPE_UNIX 1
-#define NCDREQUESTCLIENT_ADDR_TYPE_TCP 2
-
-struct NCDRequestClient_addr {
-    int type;
-    union {
-        const char *unix_socket_path;
-        BAddr tcp_baddr;
-    } u;
-};
-
-#define NCDREQUESTCLIENT_UNIX_ADDR(socket_path) \
-  (struct NCDRequestClient_addr){.type = NCDREQUESTCLIENT_ADDR_TYPE_UNIX, .u.unix_socket_path = (socket_path)}
-
-#define NCDREQUESTCLIENT_TCP_ADDR(baddr) \
-  (struct NCDRequestClient_addr){.type = NCDREQUESTCLIENT_ADDR_TYPE_TCP, .u.tcp_baddr = (baddr)}
-
-int NCDRequestClient_Init (NCDRequestClient *o, struct NCDRequestClient_addr addr, BReactor *reactor, void *user,
+int NCDRequestClient_Init (NCDRequestClient *o, struct BConnection_addr addr, BReactor *reactor, void *user,
                            NCDRequestClient_handler_error handler_error,
                            NCDRequestClient_handler_connected handler_connected) WARN_UNUSED;
 void NCDRequestClient_Free (NCDRequestClient *o);

+ 5 - 5
ncd/modules/sys_request_client.c

@@ -159,7 +159,7 @@ static void request_die (struct request_instance *o, int is_error);
 static void request_free_reply (struct request_instance *o, struct reply *r, int have_value);
 static int request_init_reply_process (struct request_instance *o, NCDValMem reply_mem, NCDValSafeRef reply_data);
 static int request_init_finished_process (struct request_instance *o);
-static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, struct NCDRequestClient_addr *out_addr);
+static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, struct BConnection_addr *out_addr);
 static void instance_free (struct instance *o, int with_error);
 static void request_instance_free (struct request_instance *o, int with_error);
 
@@ -472,7 +472,7 @@ fail0:
     return 0;
 }
 
-static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, struct NCDRequestClient_addr *out_addr)
+static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, struct BConnection_addr *out_addr)
 {
     if (!NCDVal_IsList(connect_addr_arg)) {
         goto bad;
@@ -498,7 +498,7 @@ static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, str
             goto bad;
         }
         
-        *out_addr = NCDREQUESTCLIENT_UNIX_ADDR(NCDVal_StringValue(socket_path_arg));
+        *out_addr = BConnection_addr_unix(NCDVal_StringValue(socket_path_arg));
     }
     else if (!strcmp(type, "tcp")) {
         NCDValRef ip_address_arg;
@@ -524,7 +524,7 @@ static int get_connect_addr (struct instance *o, NCDValRef connect_addr_arg, str
         BAddr addr;
         BAddr_InitFromIpaddrAndPort(&addr, ipaddr, hton16(port));
         
-        *out_addr = NCDREQUESTCLIENT_TCP_ADDR(addr);
+        *out_addr = BConnection_addr_baddr(addr);
     }
     else {
         goto bad;
@@ -550,7 +550,7 @@ static void func_new (void *vo, NCDModuleInst *i, const struct NCDModuleInst_new
     }
     
     // get address
-    struct NCDRequestClient_addr addr;
+    struct BConnection_addr addr;
     if (!get_connect_addr(o, connect_addr_arg, &addr)) {
         goto fail0;
     }