@@ -12,9 +12,12 @@ def __init__(self, name: str, value: Any):
1212 name : str
1313 value : Any
1414
15+
1516InvokeReplyFunc = Callable [[InvokeReplyArg ], None ]
1617
18+
1719class IObjectSink (ProtocolType ):
20+ # interface for object sinks
1821 def olink_object_name () -> str :
1922 # return object name
2023 raise NotImplementedError ()
@@ -35,9 +38,12 @@ def olink_on_release(self) -> None:
3538 # called when sink is released
3639 raise NotImplementedError ()
3740
41+
3842class SinkToClientEntry :
43+ # entry in the client registry
3944 sink : IObjectSink = None
4045 node : "ClientNode" = None
46+
4147 def __init__ (self , sink = None ):
4248 self .sink = sink
4349 self .node = None
@@ -53,7 +59,7 @@ def remove_node(self, node: "ClientNode"):
5359 if entry .node is node :
5460 entry .node = None
5561
56- def add_node_to_sink (self , name : str , node : "ClientNode" ):
62+ def add_node_to_sink (self , name : str , node : "ClientNode" ):
5763 # add not to named sink
5864 self ._entry (name ).node = node
5965
@@ -64,7 +70,8 @@ def remove_node_from_sink(self, name: str, node: "ClientNode"):
6470 if self .entries [resource ].node is node :
6571 self .entries [resource ].node = None
6672 else :
67- self .emit_log (LogLevel .DEBUG , f"unlink node failed, not the same node: { resource } " )
73+ self .emit_log (
74+ LogLevel .DEBUG , f"unlink node failed, not the same node: { resource } " )
6875
6976 def register_sink (self , sink : IObjectSink ) -> "ClientNode" :
7077 # register sink using object name
@@ -77,7 +84,7 @@ def unregister_sink(self, sink: IObjectSink):
7784 # unregister sink using object name
7885 name = sink .olink_object_name ()
7986 self ._remove_entry (name )
80-
87+
8188 def get_sink (self , name : str ) -> Optional [IObjectSink ]:
8289 # get sink using name
8390 return self ._entry (name ).sink
@@ -103,10 +110,14 @@ def _remove_entry(self, name: str) -> None:
103110# global client registry
104111_registry = ClientRegistry ()
105112
113+
106114def get_client_registry () -> ClientRegistry :
115+ # get global client registry
107116 return _registry
108117
118+
109119class ClientNode (BaseNode ):
120+ # client side node
110121 invokes_pending : dict [int , InvokeReplyFunc ] = {}
111122 requestId = 0
112123
@@ -121,15 +132,17 @@ def next_request_id(self) -> int:
121132 return self .requestId
122133
123134 def invoke_remote (self , name : str , args : list [Any ], func : Optional [InvokeReplyFunc ]) -> None :
124- self .emit_log (LogLevel .DEBUG , f"ClientNode.invoke_remote: { name } { args } " )
135+ self .emit_log (LogLevel .DEBUG ,
136+ f"ClientNode.invoke_remote: { name } { args } " )
125137 request_id = self .next_request_id ()
126138 if func :
127139 self .invokes_pending [request_id ] = func
128140 self .emit_write (Protocol .invoke_message (request_id , name , args ))
129141
130142 def set_remote_property (self , name : str , value : Any ) -> None :
131143 # send remote propertymessage
132- self .emit_log (LogLevel .DEBUG , f"ClientNode.set_remote_property: { name } { value } " )
144+ self .emit_log (LogLevel .DEBUG ,
145+ f"ClientNode.set_remote_property: { name } { value } " )
133146 self .emit_write (Protocol .set_property_message (name , value ))
134147
135148 def link_node (self , name : str ):
@@ -144,18 +157,19 @@ def unlink_node(self, name: str) -> None:
144157 def register_sink (sink : IObjectSink ) -> Optional ["ClientNode" ]:
145158 # register sink to registry
146159 return get_client_registry ().register_sink (sink )
147-
160+
148161 @staticmethod
149162 def unregister_sink (sink : IObjectSink ) -> None :
150163 # unregister sink from registry
151164 return get_client_registry ().unregister_sink (sink )
152165
153166 @staticmethod
154167 def get_sink (name : str ) -> Optional [IObjectSink ]:
168+ # get sink from registry
155169 return get_client_registry ().get_sink (name )
156170
157- def link_remote (self , name : str ):
158- # register this node from sink and send a link message
171+ def link_remote (self , name : str ):
172+ # register this node from sink and send a link message
159173 self .emit_log (LogLevel .DEBUG , f"ClientNode.linkRemote: { name } " )
160174 self .registry ().add_node_to_sink (name , self )
161175 self .emit_write (Protocol .link_message (name ))
@@ -175,14 +189,16 @@ def handle_init(self, name: str, props: object):
175189
176190 def handle_property_change (self , name : str , value : Any ) -> None :
177191 # handle property change message from source
178- self .emit_log (LogLevel .DEBUG , f"ClientNode.handle_property_change: { name } " )
179- sink = self .get_sink (name )
192+ self .emit_log (LogLevel .DEBUG ,
193+ f"ClientNode.handle_property_change: { name } " )
194+ sink = self .get_sink (name )
180195 if sink :
181196 sink .olink_on_property_changed (name , value )
182197
183198 def handle_invoke_reply (self , id : int , name : str , value : Any ) -> None :
184199 # handle invoke reply message from source
185- self .emit_log (LogLevel .DEBUG , f"ClientNode.handle_invoke_reply: { id } { name } { value } " )
200+ self .emit_log (LogLevel .DEBUG ,
201+ f"ClientNode.handle_invoke_reply: { id } { name } { value } " )
186202 if id in self .invokes_pending :
187203 func = self .invokes_pending [id ]
188204 if func :
@@ -194,14 +210,13 @@ def handle_invoke_reply(self, id: int, name: str, value: Any) -> None:
194210
195211 def handle_signal (self , name : str , args : list [Any ]) -> None :
196212 # handle signal message from source
197- self .emit_log (LogLevel .DEBUG , f"ClientNode.handle_signal: { name } { args } " )
213+ self .emit_log (LogLevel .DEBUG ,
214+ f"ClientNode.handle_signal: { name } { args } " )
198215 sink = self .get_sink (name )
199216 if sink :
200217 sink .olink_on_signal (name , args )
201218
202219 def handle_error (self , msgType : MsgType , id : int , error : str ):
203220 # handle error message from source
204- self .emit_log (LogLevel .DEBUG , f"ClientNode.handle_error: { msgType } { id } { error } " )
205-
206-
207-
221+ self .emit_log (LogLevel .DEBUG ,
222+ f"ClientNode.handle_error: { msgType } { id } { error } " )
0 commit comments