Rob Shearman : rpcrt4: Convert the named pipe server code to look directly into the

Alexandre Julliard julliard at wine.codeweavers.com
Tue Oct 31 15:07:54 CST 2006


Module: wine
Branch: master
Commit: 593d0fbac0cee12faeacdc88154d726c4336101c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=593d0fbac0cee12faeacdc88154d726c4336101c

Author: Rob Shearman <rob at codeweavers.com>
Date:   Tue Oct 31 19:00:45 2006 +0000

rpcrt4: Convert the named pipe server code to look directly into the
connection to get at the wait handles, instead of using
get_connect_wait_handle which isn't generic enough to be used for
other protocols.
Remove the unneeded get_connect_wait_handle function from the connection 
operations function list.

---

 dlls/rpcrt4/rpc_binding.h   |    6 ------
 dlls/rpcrt4/rpc_transport.c |   37 ++++++++++++++-----------------------
 2 files changed, 14 insertions(+), 29 deletions(-)

diff --git a/dlls/rpcrt4/rpc_binding.h b/dlls/rpcrt4/rpc_binding.h
index 221918d..e6b097c 100644
--- a/dlls/rpcrt4/rpc_binding.h
+++ b/dlls/rpcrt4/rpc_binding.h
@@ -66,7 +66,6 @@ struct connection_ops {
   unsigned char epm_protocols[2]; /* only floors 3 and 4. see http://www.opengroup.org/onlinepubs/9629399/apdxl.htm */
   RpcConnection *(*alloc)(void);
   RPC_STATUS (*open_connection)(RpcConnection *conn);
-  HANDLE (*get_connect_wait_handle)(RpcConnection *conn);
   RPC_STATUS (*handoff)(RpcConnection *old_conn, RpcConnection *new_conn);
   int (*read)(RpcConnection *conn, void *buffer, unsigned int len);
   int (*write)(RpcConnection *conn, const void *buffer, unsigned int len);
@@ -150,11 +149,6 @@ static inline int rpcrt4_conn_close(RpcC
   return Connection->ops->close(Connection);
 }
 
-static inline HANDLE rpcrt4_conn_get_wait_object(RpcConnection *Connection)
-{
-  return Connection->ops->get_connect_wait_handle(Connection);
-}
-
 static inline RPC_STATUS rpcrt4_conn_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
 {
   return old_conn->ops->handoff(old_conn, new_conn);
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c
index d3829c0..2f65f75 100644
--- a/dlls/rpcrt4/rpc_transport.c
+++ b/dlls/rpcrt4/rpc_transport.c
@@ -221,12 +221,6 @@ static RPC_STATUS rpcrt4_ncacn_np_open(R
   return r;
 }
 
-static HANDLE rpcrt4_conn_np_get_connect_event(RpcConnection *Connection)
-{
-  RpcConnection_np *npc = (RpcConnection_np *) Connection;
-  return npc->ovl.hEvent;
-}
-
 static RPC_STATUS rpcrt4_conn_np_handoff(RpcConnection *old_conn, RpcConnection *new_conn)
 {
   RpcConnection_np *old_npc = (RpcConnection_np *) old_conn;
@@ -406,19 +400,19 @@ static void rpcrt4_protseq_np_signal_sta
 static void *rpcrt4_protseq_np_get_wait_array(RpcServerProtseq *protseq, void *prev_array, unsigned int *count)
 {
     HANDLE *objs = prev_array;
-    RpcConnection* conn;
+    RpcConnection_np *conn;
     RpcServerProtseq_np *npps = CONTAINING_RECORD(protseq, RpcServerProtseq_np, common);
     
     EnterCriticalSection(&protseq->cs);
     
     /* open and count connections */
     *count = 1;
-    conn = protseq->conn;
+    conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
     while (conn) {
-        RPCRT4_OpenConnection(conn);
-        if (rpcrt4_conn_get_wait_object(conn))
+        RPCRT4_OpenConnection(&conn->common);
+        if (conn->ovl.hEvent)
             (*count)++;
-        conn = conn->Next;
+        conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
     }
     
     /* make array of connections */
@@ -435,11 +429,11 @@ static void *rpcrt4_protseq_np_get_wait_
     
     objs[0] = npps->mgr_event;
     *count = 1;
-    conn = protseq->conn;
+    conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
     while (conn) {
-        if ((objs[*count] = rpcrt4_conn_get_wait_object(conn)))
+        if ((objs[*count] = conn->ovl.hEvent))
             (*count)++;
-        conn = conn->Next;
+        conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
     }
     LeaveCriticalSection(&protseq->cs);
     return objs;
@@ -455,8 +449,8 @@ static int rpcrt4_protseq_np_wait_for_ne
     HANDLE b_handle;
     HANDLE *objs = wait_array;
     DWORD res;
-    RpcConnection* cconn;
-    RpcConnection* conn;
+    RpcConnection *cconn;
+    RpcConnection_np *conn;
     
     if (!objs)
         return -1;
@@ -474,14 +468,14 @@ static int rpcrt4_protseq_np_wait_for_ne
         b_handle = objs[res - WAIT_OBJECT_0];
         /* find which connection got a RPC */
         EnterCriticalSection(&protseq->cs);
-        conn = protseq->conn;
+        conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common);
         while (conn) {
-            if (b_handle == rpcrt4_conn_get_wait_object(conn)) break;
-            conn = conn->Next;
+            if (b_handle == conn->ovl.hEvent) break;
+            conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common);
         }
         cconn = NULL;
         if (conn)
-            RPCRT4_SpawnConnection(&cconn, conn);
+            RPCRT4_SpawnConnection(&cconn, &conn->common);
         else
             ERR("failed to locate connection for handle %p\n", b_handle);
         LeaveCriticalSection(&protseq->cs);
@@ -1004,7 +998,6 @@ static const struct connection_ops conn_
     { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_SMB },
     rpcrt4_conn_np_alloc,
     rpcrt4_ncacn_np_open,
-    rpcrt4_conn_np_get_connect_event,
     rpcrt4_conn_np_handoff,
     rpcrt4_conn_np_read,
     rpcrt4_conn_np_write,
@@ -1016,7 +1009,6 @@ static const struct connection_ops conn_
     { EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE },
     rpcrt4_conn_np_alloc,
     rpcrt4_ncalrpc_open,
-    rpcrt4_conn_np_get_connect_event,
     rpcrt4_conn_np_handoff,
     rpcrt4_conn_np_read,
     rpcrt4_conn_np_write,
@@ -1028,7 +1020,6 @@ static const struct connection_ops conn_
     { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_TCP },
     rpcrt4_conn_tcp_alloc,
     rpcrt4_ncacn_ip_tcp_open,
-    NULL,
     rpcrt4_conn_tcp_handoff,
     rpcrt4_conn_tcp_read,
     rpcrt4_conn_tcp_write,




More information about the wine-cvs mailing list