55import uuid
66from urllib .parse import urlparse
77
8- from .protocol import BasicProtocol , create_peer
98from .receptor import Receptor
109from .messages import envelope
11- from . import connection
1210from .connection import ws , sock , Worker
13- from . import protocol
1411
1512logger = logging .getLogger (__name__ )
1613
@@ -20,6 +17,7 @@ class Controller:
2017 def __init__ (self , config , loop = asyncio .get_event_loop (), queue = None ):
2118 self .receptor = Receptor (config )
2219 self .loop = loop
20+ self .factory = lambda : Worker (self .receptor , loop )
2321 self .queue = queue
2422 if self .queue is None :
2523 self .queue = asyncio .Queue (loop = loop )
@@ -32,7 +30,7 @@ def parse_peer(self, peer):
3230
3331 def enable_server (self , listen_url ):
3432 service = self .parse_peer (listen_url )
35- cb = functools .partial (sock .serve , factory = factory )
33+ client_connected_cb = functools .partial (sock .serve , factory = self . factory )
3634 listener = asyncio .start_server (
3735 client_connected_cb ,
3836 host = service .hostname ,
@@ -43,9 +41,8 @@ def enable_server(self, listen_url):
4341
4442 def enable_websocket_server (self , listen_url ):
4543 service = urlparse (listen_url )
46- factory = lambda : Worker (receptor , loop )
4744 listener = self .loop .create_server (
48- ws .app (factory ).make_handler (),
45+ ws .app (self . factory ).make_handler (),
4946 service .hostname , service .port ,
5047 ssl = self .receptor .config .get_server_ssl_context ())
5148 logger .info ("Serving websockets on {}:{}" .format (service .hostname , service .port ))
@@ -55,10 +52,10 @@ async def add_peer(self, peer):
5552 parsed = self .parse_peer (peer )
5653 if parsed .scheme == 'receptor' :
5754 logger .info ("Connecting to receptor peer {}" .format (peer ))
58- await self .loop .create_task (create_peer ( self . receptor , self . loop , parsed . hostname , parsed . port ))
55+ await self .loop .create_task (sock . connect ( parsed . hostname , parsed . port , self . factory , self . loop ))
5956 elif parsed .scheme in ('ws' , 'wss' ):
6057 logger .info ("Connecting to websocket peer {}" .format (peer ))
61- await self .loop .create_task (WSClient ( self .receptor , self .loop ). connect ( peer ))
58+ await self .loop .create_task (ws . connect ( peer , self .factory , self .loop ))
6259
6360 async def recv (self ):
6461 inner = await self .receptor .response_queue .get ()
0 commit comments