def RouteResponse(self, fromUID, toUID, trackingNbr, code, dataFormat, formatOpt, data): if toUID or self.CentralSessionExists(): if toUID: session = self._objectsSessions.get(toUID, None) else: session = self._centralSession if session: session.EndTrackingRequest(trackingNbr) data = IoTSocketStruct.MakeResponseTRHdr( fromUID, trackingNbr, code, dataFormat, formatOpt, len(data) ) \ + data return session.Send(data) else: httpReq, exp = self._centralHTTPRequests.get( trackingNbr, (None, None)) if httpReq: plFormat, plObject = IoTSocketStruct.DecodeJSONPayload( data, dataFormat) if plFormat is not None and plObject is not None: self.RemoveCentralHTTPRequest(httpReq) return httpReq.SendResponse(code, plObject, plFormat) self.Log('ROUTER > NO DESTINATION FOR RESPONSE (#%s)' % trackingNbr) return False
def RouteTelemetry(self, token, dataFormat, formatOpt, data): if token and data: uid, exp = self._telemetryTokens.get(token, (None, None)) if uid: self.Log( 'ROUTER > TELEMETRY RECEIVED FROM {%s} WITH TOKEN %s' % (IoTSocketStruct.UIDFromBin128(uid), self.TelemetryTokenToStr(token))) if self.CentralSessionExists(): session = self._centralSession if session: data = IoTSocketStruct.MakeIdentTelemetryTRHdr( uid, dataFormat, formatOpt, len(data) ) \ + data if session.Send(data): return True elif self._onGetWebHookTelemetry: plFormat, plObject = IoTSocketStruct.DecodeJSONPayload( data, dataFormat) if plFormat is not None and plObject is not None: webHook = self._onGetWebHookTelemetry(self) if webHook: webHook.Post(self._centralAuthKeyHex, uid, plObject, plFormat) return True self.Log('ROUTER > ERROR TO OPEN WEBHOOK OF TELEMETRY') self.Log('ROUTER > NO DESTINATION FOR TELEMETRY') return False
def RouteRequest(self, fromUID, toUID, trackingNbr, dataFormat, formatOpt, data): if toUID or self.CentralSessionExists(): if toUID: session = self._objectsSessions.get(toUID, None) else: session = self._centralSession data = IoTSocketStruct.MakeRequestTRHdr( fromUID, trackingNbr, dataFormat, formatOpt, len(data) ) \ + data if session and session.Send(data): return True if not toUID: toUID = IoTSocketStruct.CENTRAL_EMPTY_UID sessionData, exp = self._keepSessionsData.get(toUID, (None, None)) if sessionData is not None: sessionData.append(data) self.Log('ROUTER > REQUEST KEPT (#%s)' % trackingNbr) return True else: if self._onGetWebHookRequest: plFormat, plObject = IoTSocketStruct.DecodeJSONPayload( data, dataFormat) if plFormat is not None and plObject is not None: webHook = self._onGetWebHookRequest(self) if webHook: webHook.ObjRef = (fromUID, trackingNbr) webHook.OnResponseOk = self._onWebHookResponseOk webHook.OnClosed = self._onWebHookClosed webHook.Post(self._centralAuthKeyHex, fromUID, plObject, plFormat) return True self.Log('ROUTER > ERROR TO OPEN WEBHOOK OF REQUEST') self.Log('ROUTER > NO DESTINATION FOR REQUEST (#%s)' % trackingNbr) return False