@@ -170,10 +170,14 @@ def connection_lost(self, exc):
170170 self .receptor .controller_connections .remove (self )
171171
172172 def emit_response (self , response ):
173- self .transport .write (json .dumps (dict (timestamp = response .timestamp ,
174- in_response_to = response .in_response_to ,
175- payload = response .raw_payload ,
176- code = response .code )).encode () + DELIM )
173+ emit_task = self .loop .create_task (response .sign_and_serialize ())
174+ emit_task .add_done_callback (
175+ functools .partial (self ._do_emit_callback )
176+ )
177+
178+ def _do_emit_callback (self , fut ):
179+ res = fut .result ()
180+ self .transport .write (res .encode () + DELIM )
177181
178182 def data_received (self , data ):
179183 recipient , directive , payload = data .rstrip (DELIM ).decode ('utf8' ).split ('\n ' , 2 )
@@ -198,21 +202,21 @@ def data_received(self, data):
198202 )
199203 )
200204 send_task .add_done_callback (
201- functools .partial (self .data_received_callback , inner_env )
205+ functools .partial (self ._data_received_callback , inner_env )
202206 )
203207
204- def data_received_callback (self , inner_env , fut ):
208+ def _data_received_callback (self , inner_env , fut ):
205209 try :
206210 fut .result ()
207211 except Exception as e :
208- self .transport .write (
209- json .dumps (
210- dict (
211- timestamp = datetime .datetime .utcnow ().isoformat (),
212- in_response_to = inner_env .message_id ,
213- payload = str (e ),
214- code = 1 ,
215- )
216- ).encode () + DELIM
212+ err_resp = envelope .InnerEnvelope .make_response (
213+ receptor = self .receptor ,
214+ recipient = inner_env .sender ,
215+ payload = str (e ),
216+ in_response_to = inner_env .message_id ,
217+ ttl = inner_env .ttl ,
218+ serial = inner_env .serial ,
219+ code = 1 ,
217220 )
221+ self .emit_response (err_resp )
218222
0 commit comments