Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 72086db

Browse files
committed
*channels takes ownership on nested *channels
1 parent 93c4e88 commit 72086db

File tree

7 files changed

+16
-61
lines changed

7 files changed

+16
-61
lines changed

tests/test_buffered_channel.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,10 @@ def test_close_server_bufchan():
5555
gevent.sleep(3)
5656
print 'CLOSE SERVER SOCKET!!!'
5757
server_bufchan.close()
58-
server_hbchan.close()
59-
server_channel.close()
6058
with assert_raises(zerorpc.LostRemote):
6159
client_bufchan.recv()
6260
print 'CLIENT LOST SERVER :)'
6361
client_bufchan.close()
64-
client_hbchan.close()
65-
client_channel.close()
6662
server.close()
6763
client.close()
6864

@@ -91,14 +87,10 @@ def test_close_client_bufchan():
9187
gevent.sleep(3)
9288
print 'CLOSE CLIENT SOCKET!!!'
9389
client_bufchan.close()
94-
server_hbchan.close()
95-
client_channel.close()
9690
with assert_raises(zerorpc.LostRemote):
9791
server_bufchan.recv()
9892
print 'SERVER LOST CLIENT :)'
9993
server_bufchan.close()
100-
client_hbchan.close()
101-
server_channel.close()
10294
server.close()
10395
client.close()
10496

@@ -125,14 +117,10 @@ def test_heartbeat_can_open_channel_server_close():
125117
gevent.sleep(3)
126118
print 'CLOSE SERVER SOCKET!!!'
127119
server_bufchan.close()
128-
server_hbchan.close()
129-
server_channel.close()
130120
with assert_raises(zerorpc.LostRemote):
131121
client_bufchan.recv()
132122
print 'CLIENT LOST SERVER :)'
133123
client_bufchan.close()
134-
client_hbchan.close()
135-
client_channel.close()
136124
server.close()
137125
client.close()
138126

@@ -159,15 +147,11 @@ def test_heartbeat_can_open_channel_client_close():
159147
gevent.sleep(3)
160148
print 'CLOSE CLIENT SOCKET!!!'
161149
client_bufchan.close()
162-
server_hbchan.close()
163-
client_channel.close()
164150
client.close()
165151
with assert_raises(zerorpc.LostRemote):
166152
server_bufchan.recv()
167153
print 'SERVER LOST CLIENT :)'
168154
server_bufchan.close()
169-
client_hbchan.close()
170-
server_channel.close()
171155
server.close()
172156

173157

@@ -197,8 +181,6 @@ def client_do():
197181
assert event.name == 'OK'
198182
assert event.args == (x + x * x,)
199183
client_bufchan.close()
200-
client_hbchan.close()
201-
client_channel.close()
202184

203185
client_task = gevent.spawn(client_do)
204186

@@ -208,8 +190,6 @@ def server_do():
208190
assert event.name == 'add'
209191
server_bufchan.emit('OK', (sum(event.args),))
210192
server_bufchan.close()
211-
server_hbchan.close()
212-
server_channel.close()
213193

214194
server_task = gevent.spawn(server_do)
215195

@@ -243,8 +223,6 @@ def client_do():
243223
with assert_raises(zerorpc.LostRemote):
244224
event = client_bufchan.recv()
245225
client_bufchan.close()
246-
client_hbchan.close()
247-
client_channel.close()
248226

249227
client_task = gevent.spawn(client_do)
250228

@@ -258,8 +236,6 @@ def server_do():
258236
assert event.name == 'add'
259237
server_bufchan.emit('OK', (sum(event.args),))
260238
server_bufchan.close()
261-
server_hbchan.close()
262-
server_channel.close()
263239

264240
server_task = gevent.spawn(server_do)
265241

@@ -290,7 +266,6 @@ def client_do():
290266
assert event.name == 'OK'
291267
assert event.args == (x + x * x,)
292268
client_bufchan.close()
293-
client_channel.close()
294269

295270
client_task = gevent.spawn(client_do)
296271

@@ -308,7 +283,6 @@ def server_do():
308283
with assert_raises(zerorpc.LostRemote):
309284
event = server_bufchan.recv()
310285
server_bufchan.close()
311-
server_channel.close()
312286

313287
server_task = gevent.spawn(server_do)
314288

@@ -340,7 +314,6 @@ def client_do():
340314
assert event.name == 'OK'
341315
assert event.args == (x,)
342316
client_bufchan.close()
343-
client_channel.close()
344317

345318
client_task = gevent.spawn(client_do)
346319

@@ -357,7 +330,6 @@ def server_do():
357330
gevent.sleep(event.args[0])
358331
server_bufchan.emit('OK', event.args)
359332
server_bufchan.close()
360-
server_channel.close()
361333

362334
server_task = gevent.spawn(server_do)
363335

@@ -416,9 +388,7 @@ def server_do():
416388
server_task.get()
417389
client_task.get()
418390
client_bufchan.close()
419-
client_hbchan.close()
420391
client.close()
421392
server_task.get()
422393
server_bufchan.close()
423-
server_hbchan.close()
424394
server.close()

tests/test_channel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,4 @@ def test_events_channel_both_side():
114114
server_events.close()
115115
server_channel.close()
116116
client_channel.close()
117-
client_channel.close()
117+
client_events.close()

tests/test_heartbeat.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,10 @@ def test_close_server_hbchan():
5353
gevent.sleep(3)
5454
print 'CLOSE SERVER SOCKET!!!'
5555
server_hbchan.close()
56-
server_channel.close()
5756
with assert_raises(zerorpc.LostRemote):
5857
client_hbchan.recv()
5958
print 'CLIENT LOST SERVER :)'
6059
client_hbchan.close()
61-
client_channel.close()
6260
server.close()
6361
client.close()
6462

@@ -85,12 +83,10 @@ def test_close_client_hbchan():
8583
gevent.sleep(3)
8684
print 'CLOSE CLIENT SOCKET!!!'
8785
client_hbchan.close()
88-
client_channel.close()
8986
with assert_raises(zerorpc.LostRemote):
9087
server_hbchan.recv()
9188
print 'SERVER LOST CLIENT :)'
9289
server_hbchan.close()
93-
server_channel.close()
9490
server.close()
9591
client.close()
9692

@@ -115,12 +111,10 @@ def test_heartbeat_can_open_channel_server_close():
115111
gevent.sleep(3)
116112
print 'CLOSE SERVER SOCKET!!!'
117113
server_hbchan.close()
118-
server_channel.close()
119114
with assert_raises(zerorpc.LostRemote):
120115
client_hbchan.recv()
121116
print 'CLIENT LOST SERVER :)'
122117
client_hbchan.close()
123-
client_channel.close()
124118
server.close()
125119
client.close()
126120

@@ -145,13 +139,11 @@ def test_heartbeat_can_open_channel_client_close():
145139
gevent.sleep(3)
146140
print 'CLOSE CLIENT SOCKET!!!'
147141
client_hbchan.close()
148-
client_channel.close()
149142
client.close()
150143
with assert_raises(zerorpc.LostRemote):
151144
server_hbchan.recv()
152145
print 'SERVER LOST CLIENT :)'
153146
server_hbchan.close()
154-
server_channel.close()
155147
server.close()
156148

157149

@@ -179,7 +171,6 @@ def client_do():
179171
assert event.name == 'OK'
180172
assert event.args == (x + x * x,)
181173
client_hbchan.close()
182-
client_channel.close()
183174

184175
client_task = gevent.spawn(client_do)
185176

@@ -189,7 +180,6 @@ def server_do():
189180
assert event.name == 'add'
190181
server_hbchan.emit('OK', (sum(event.args),))
191182
server_hbchan.close()
192-
server_channel.close()
193183

194184
server_task = gevent.spawn(server_do)
195185

@@ -222,7 +212,6 @@ def client_do():
222212
with assert_raises(zerorpc.LostRemote):
223213
event = client_hbchan.recv()
224214
client_hbchan.close()
225-
client_channel.close()
226215

227216
client_task = gevent.spawn(client_do)
228217

@@ -235,7 +224,6 @@ def server_do():
235224
assert event.name == 'add'
236225
server_hbchan.emit('OK', (sum(event.args),))
237226
server_hbchan.close()
238-
server_channel.close()
239227

240228
server_task = gevent.spawn(server_do)
241229

@@ -265,7 +253,6 @@ def client_do():
265253
assert event.name == 'OK'
266254
assert event.args == (x + x * x,)
267255
client_hbchan.close()
268-
client_channel.close()
269256

270257
client_task = gevent.spawn(client_do)
271258

@@ -282,7 +269,6 @@ def server_do():
282269
with assert_raises(zerorpc.LostRemote):
283270
event = server_hbchan.recv()
284271
server_hbchan.close()
285-
server_channel.close()
286272

287273
server_task = gevent.spawn(server_do)
288274

@@ -313,7 +299,6 @@ def client_do():
313299
assert event.name == 'OK'
314300
assert event.args == (x,)
315301
client_hbchan.close()
316-
client_channel.close()
317302

318303
client_task = gevent.spawn(client_do)
319304

@@ -329,7 +314,6 @@ def server_do():
329314
gevent.sleep(event.args[0])
330315
server_hbchan.emit('OK', event.args)
331316
server_hbchan.close()
332-
server_channel.close()
333317

334318
server_task = gevent.spawn(server_do)
335319

zerorpc/channel.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,12 @@ def __del__(self):
181181
self.close()
182182

183183
def close(self):
184-
if self._recv_task:
184+
if self._recv_task is not None:
185185
self._recv_task.kill()
186+
self._recv_task = None
187+
if self._channel is not None:
188+
self._channel.close()
189+
self._channel = None
186190

187191
def _recver(self):
188192
while True:

zerorpc/core.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,6 @@ def _async_task(self, initial_event):
147147
self._context.middleware_get_task_context())
148148
finally:
149149
bufchan.close()
150-
bufchan.channel.close()
151-
bufchan.channel.channel.close()
152150

153151
def _acceptor(self):
154152
while True:
@@ -213,8 +211,6 @@ def _process_response(self, method, bufchan, timeout):
213211
self._raise_remote_error)
214212
except:
215213
bufchan.close()
216-
bufchan.channel.close()
217-
bufchan.channel.channel.close()
218214
raise
219215

220216
def __call__(self, method, *args, **kargs):
@@ -237,8 +233,6 @@ def __call__(self, method, *args, **kargs):
237233
return async_result
238234
except:
239235
bufchan.close()
240-
bufchan.channel.close()
241-
bufchan.channel.channel.close()
242236
raise
243237

244238
def __getattr__(self, method):

zerorpc/heartbeat.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,15 @@ def __del__(self):
5656
self.close()
5757

5858
def close(self):
59-
if self._heartbeat_task:
59+
if self._heartbeat_task is not None:
6060
self._heartbeat_task.kill()
61-
if self._recv_task:
61+
self._heartbeat_task = None
62+
if self._recv_task is not None:
6263
self._recv_task.kill()
64+
self._recv_task = None
65+
if self._channel is not None:
66+
self._channel.close()
67+
self._channel = None
6368

6469
def _heartbeat(self):
6570
while True:

zerorpc/patterns.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525

2626

27-
class ReqRep():
27+
class ReqRep:
2828

2929
def process_call(self, context, bufchan, event, functor):
3030
result = context.middleware_call_procedure(functor, *event.args)
@@ -39,12 +39,10 @@ def process_answer(self, context, bufchan, event, method,
3939
if event.name == 'ERR':
4040
raise_remote_error(event)
4141
bufchan.close()
42-
bufchan.channel.close()
43-
bufchan.channel.channel.close()
4442
return result
4543

4644

47-
class ReqStream():
45+
class ReqStream:
4846

4947
def process_call(self, context, bufchan, event, functor):
5048
xheader = context.middleware_get_task_context()
@@ -65,7 +63,7 @@ def iterator(event):
6563
if event.name == 'ERR':
6664
raise_remote_error(event)
6765
bufchan.close()
68-
bufchan.channel.channel.close()
6966
return iterator(event)
7067

68+
7169
patterns_list = [ReqStream(), ReqRep()]

0 commit comments

Comments
 (0)