File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -20,11 +20,16 @@ async def poll(self):
2020 raise exceptions .QueueEmpty ()
2121 if packets == [None ]:
2222 return []
23- try :
24- packets .append (self .queue .get_nowait ())
25- self .queue .task_done ()
26- except asyncio .QueueEmpty :
27- pass
23+ while True :
24+ try :
25+ pkt = self .queue .get_nowait ()
26+ self .queue .task_done ()
27+ if pkt is None :
28+ self .queue .put_nowait (None )
29+ break
30+ packets .append (pkt )
31+ except asyncio .QueueEmpty :
32+ break
2833 return packets
2934
3035 async def receive (self , pkt ):
Original file line number Diff line number Diff line change @@ -36,8 +36,12 @@ def poll(self):
3636 return []
3737 while True :
3838 try :
39- packets . append ( self .queue .get (block = False ) )
39+ pkt = self .queue .get (block = False )
4040 self .queue .task_done ()
41+ if pkt is None :
42+ self .queue .put (None )
43+ break
44+ packets .append (pkt )
4145 except queue_empty :
4246 break
4347 return packets
Original file line number Diff line number Diff line change @@ -94,6 +94,15 @@ def test_poll_none(self):
9494 _run (s .queue .put (None ))
9595 self .assertEqual (_run (s .poll ()), [])
9696
97+ def test_poll_none_after_packet (self ):
98+ mock_server = self ._get_mock_server ()
99+ s = asyncio_socket .AsyncSocket (mock_server , 'sid' )
100+ pkt = packet .Packet (packet .MESSAGE , data = 'hello' )
101+ _run (s .send (pkt ))
102+ _run (s .queue .put (None ))
103+ self .assertEqual (_run (s .poll ()), [pkt ])
104+ self .assertEqual (_run (s .poll ()), [])
105+
97106 def test_ping_pong (self ):
98107 mock_server = self ._get_mock_server ()
99108 s = asyncio_socket .AsyncSocket (mock_server , 'sid' )
Original file line number Diff line number Diff line change @@ -77,6 +77,21 @@ def test_poll(self):
7777 s .send (pkt2 )
7878 self .assertEqual (s .poll (), [pkt1 , pkt2 ])
7979
80+ def test_poll_none (self ):
81+ mock_server = self ._get_mock_server ()
82+ s = socket .Socket (mock_server , 'sid' )
83+ s .queue .put (None )
84+ self .assertEqual (s .poll (), [])
85+
86+ def test_poll_none_after_packet (self ):
87+ mock_server = self ._get_mock_server ()
88+ s = socket .Socket (mock_server , 'sid' )
89+ pkt = packet .Packet (packet .MESSAGE , data = 'hello' )
90+ s .send (pkt )
91+ s .queue .put (None )
92+ self .assertEqual (s .poll (), [pkt ])
93+ self .assertEqual (s .poll (), [])
94+
8095 def test_ping_pong (self ):
8196 mock_server = self ._get_mock_server ()
8297 s = socket .Socket (mock_server , 'sid' )
You can’t perform that action at this time.
0 commit comments