@@ -57,40 +57,43 @@ cdef class UVPipeServer(UVStreamServer):
57
57
58
58
self ._mark_as_open()
59
59
60
- cdef UVTransport _make_new_transport(self , object protocol):
60
+ cdef UVTransport _make_new_transport(self , object protocol, object waiter ):
61
61
cdef UVPipeTransport tr
62
- tr = UVPipeTransport.new(self ._loop, protocol, self ._server)
62
+ tr = UVPipeTransport.new(self ._loop, protocol, self ._server, waiter )
63
63
return < UVTransport> tr
64
64
65
65
66
66
@cython.no_gc_clear
67
67
cdef class UVPipeTransport(UVTransport):
68
68
69
69
@staticmethod
70
- cdef UVPipeTransport new(Loop loop, object protocol, Server server):
70
+ cdef UVPipeTransport new(Loop loop, object protocol, Server server,
71
+ object waiter):
72
+
71
73
cdef UVPipeTransport handle
72
74
handle = UVPipeTransport.__new__ (UVPipeTransport)
73
- handle._init(loop, protocol, server)
75
+ handle._init(loop, protocol, server, waiter )
74
76
__pipe_init_uv_handle(< UVStream> handle, loop)
75
77
return handle
76
78
77
79
cdef open (self , int sockfd):
78
80
__pipe_open(< UVStream> self , sockfd)
79
81
80
- cdef connect(self , char * addr, object callback ):
82
+ cdef connect(self , char * addr):
81
83
cdef _PipeConnectRequest req
82
- req = _PipeConnectRequest(self ._loop, self , callback )
84
+ req = _PipeConnectRequest(self ._loop, self )
83
85
req.connect(addr)
84
86
85
87
86
88
@cython.no_gc_clear
87
89
cdef class UVReadPipeTransport(UVReadTransport):
88
90
89
91
@staticmethod
90
- cdef UVReadPipeTransport new(Loop loop, object protocol, Server server):
92
+ cdef UVReadPipeTransport new(Loop loop, object protocol, Server server,
93
+ object waiter):
91
94
cdef UVReadPipeTransport handle
92
95
handle = UVReadPipeTransport.__new__ (UVReadPipeTransport)
93
- handle._init(loop, protocol, server)
96
+ handle._init(loop, protocol, server, waiter )
94
97
__pipe_init_uv_handle(< UVStream> handle, loop)
95
98
return handle
96
99
@@ -102,10 +105,11 @@ cdef class UVReadPipeTransport(UVReadTransport):
102
105
cdef class UVWritePipeTransport(UVWriteTransport):
103
106
104
107
@staticmethod
105
- cdef UVWritePipeTransport new(Loop loop, object protocol, Server server):
108
+ cdef UVWritePipeTransport new(Loop loop, object protocol, Server server,
109
+ object waiter):
106
110
cdef UVWritePipeTransport handle
107
111
handle = UVWritePipeTransport.__new__ (UVWritePipeTransport)
108
- handle._init(loop, protocol, server)
112
+ handle._init(loop, protocol, server, waiter )
109
113
__pipe_init_uv_handle(< UVStream> handle, loop)
110
114
return handle
111
115
@@ -115,18 +119,15 @@ cdef class UVWritePipeTransport(UVWriteTransport):
115
119
116
120
cdef class _PipeConnectRequest(UVRequest):
117
121
cdef:
118
- object callback
119
122
UVPipeTransport transport
120
123
121
- def __cinit__ (self , loop , transport , callback ):
124
+ def __cinit__ (self , loop , transport ):
122
125
self .request = < uv.uv_req_t* > PyMem_Malloc(sizeof(uv.uv_connect_t))
123
126
if self .request is NULL :
124
127
self .on_done()
125
128
raise MemoryError ()
126
129
self .request.data = < void * > self
127
-
128
130
self .transport = transport
129
- self .callback = callback
130
131
131
132
cdef connect(self , char * addr):
132
133
# uv_pipe_connect returns void
@@ -137,19 +138,19 @@ cdef class _PipeConnectRequest(UVRequest):
137
138
138
139
cdef void __pipe_connect_callback(uv.uv_connect_t* req, int status) with gil:
139
140
cdef:
140
- _TCPConnectRequest wrapper
141
- object callback
141
+ _PipeConnectRequest wrapper
142
+ UVPipeTransport transport
142
143
143
- wrapper = < _TCPConnectRequest > req.data
144
- callback = wrapper.callback
144
+ wrapper = < _PipeConnectRequest > req.data
145
+ transport = wrapper.transport
145
146
146
147
if status < 0 :
147
148
exc = convert_error(status)
148
149
else :
149
150
exc = None
150
151
151
152
try :
152
- callback (exc)
153
+ transport._on_connect (exc)
153
154
except BaseException as ex:
154
155
wrapper.transport._error(ex, False )
155
156
finally :
0 commit comments