diff --git a/LCS/Messaging/python/messaging/Service.py b/LCS/Messaging/python/messaging/Service.py index 1d5d57eaca39fadeeb24c943ce17ad850d8a5562..f658ac5ce971da2aa4d1beddbc246433e8e34702 100644 --- a/LCS/Messaging/python/messaging/Service.py +++ b/LCS/Messaging/python/messaging/Service.py @@ -41,7 +41,7 @@ class Service: verbose=<bool> show debug text """ - def __init__(self, busname, servicename, servicehandler, options=None, exclusive=True, numthreads=1, startonwith=False, verbose=False): + def __init__(self, busname, servicename, servicehandler, options=None, exclusive=True, numthreads=1, parsefullmessage=False, startonwith=False, verbose=False): self.BusName = busname self.ServiceName = servicename self.ServiceHandler = servicehandler @@ -52,6 +52,7 @@ class Service: self._numthreads = numthreads self.Verbose = verbose self.options = {"capacity": numthreads*20} + self.parsefullmessage=parsefullmessage self.startonwith = startonwith # Set appropriate flags for exclusive binding @@ -134,7 +135,10 @@ class Service: def _send_reply(self, replymessage, status, reply_to, errtxt="",backtrace=""): # Compose Reply message from reply and status. - ToSend = ReplyMessage(replymessage, reply_to) + if isinstance(replymessage,ReplyMessage): + ToSend = replymessage + else: + ToSend = ReplyMessage(replymessage, reply_to) ToSend.status = status ToSend.errmsg = errtxt ToSend.backtrace = backtrace @@ -146,9 +150,10 @@ class Service: # send the result to the RPC client if isinstance(self.Reply,ToBus): + ToSend.subject = reply_to self.Reply.send(ToSend) else: - with ToBus(self.Reply) as dest: + with ToBus(reply_to) as dest: dest.send(ToSend) @@ -174,7 +179,10 @@ class Service: # Execute the service handler function and send reply back to client try: self._debug("Running handler") - replymessage = self.ServiceHandler(msg.content) + if self.parsefullmessage is True: + replymessage = self.ServiceHandler(msg) + else: + replymessage = self.ServiceHandler(msg.content) self._debug("finished handler") self._send_reply(replymessage,"OK",msg.reply_to) self.okcounter[index] += 1