コード例 #1
0
 def _onWebHookClosed(self, centralHTTPWebHook):
     uid, trackingNbr = centralHTTPWebHook.ObjRef
     if uid and trackingNbr:
         session = self._objectsSessions.get(uid, None)
         if session:
             session.EndTrackingRequest(trackingNbr)
             data = IoTSocketStruct.MakeResponseErrTR(
                 None, trackingNbr, IoTSocketStruct.RESP_CODE_REQ_NOK)
             session.Send(data)
コード例 #2
0
 def CheckRequestsTimeout(self, nowSec):
     if self._requests:
         with self._requestsLock:
             for trackingNbr in list(self._requests):
                 uid, exp = self._requests[trackingNbr]
                 if nowSec >= exp:
                     del self._requests[trackingNbr]
                     self.Send(
                         IoTSocketStruct.MakeResponseErrTR(
                             uid, trackingNbr,
                             IoTSocketStruct.RESP_CODE_ERR_TIMEOUT))
                     self._router.Log('SESSION %s > REQUEST TIMEOUT (#%s)' %
                                      (self._getSessionName(), trackingNbr))
コード例 #3
0
 def _onRequestRecv(self, xAsyncTCPClient, data, arg):
     uid = arg[0]
     if len(arg) == 2:
         trackingNbr, dataFormat, formatOpt, dataLen = arg[1]
         data = data.tobytes()
     else:
         hdr = IoTSocketStruct.DecodeRequestHdr(data.tobytes())
         trackingNbr, dataFormat, formatOpt, dataLen = hdr
         if dataLen > 0:
             self._recv(dataLen, self._onRequestRecv, (uid, hdr))
             return
         data = b''
     if uid:
         strUID = ('{%s}' % IoTSocketStruct.UIDFromBin128(uid))
     else:
         strUID = 'CENTRAL'
     errCode = None
     with self._requestsLock:
         self._router.Log('SESSION %s > REQUEST TO %s RECEIVED (#%s)' %
                          (self._getSessionName(), strUID, trackingNbr))
         if not trackingNbr in self._requests:
             if self._router.RouteRequest(
                     fromUID=None if self._isCentral else self._uid,
                     toUID=uid,
                     trackingNbr=trackingNbr,
                     dataFormat=dataFormat,
                     formatOpt=formatOpt,
                     data=data):
                 exp = time() + self._reqTimeout
                 self._requests[trackingNbr] = (uid, exp)
             else:
                 errCode = IoTSocketStruct.RESP_CODE_ERR_NO_DEST
         else:
             self._router.Log(
                 'SESSION %s > TRACKING NUMBER #%s ALREADY EXISTS' %
                 (self._getSessionName(), trackingNbr))
             errCode = IoTSocketStruct.RESP_CODE_ERR_SAME_TRK_NBR
     if errCode:
         self.Send(
             IoTSocketStruct.MakeResponseErrTR(uid, trackingNbr, errCode))
     self._waitDataTransmission()