コード例 #1
0
    def sendDeleted(self, modelSetKey: str,
                    traceConfigKeys: List[str]) -> None:
        """ Send Deleted

        Send grid updates to the client services

        :param modelSetKey: The model set key
        :param traceConfigKeys: A list of object buckets that have been updated
        :returns: Nothing
        """

        if not traceConfigKeys:
            return

        if peekClientName not in VortexFactory.getRemoteVortexName():
            logger.debug("No clients are online to send the doc chunk to, %s",
                         traceConfigKeys)
            return

        payload = Payload(filt=copy(clientTraceConfigUpdateFromServerFilt))
        payload.filt[plDeleteKey] = True
        payload.tuples = dict(modelSetKey=modelSetKey,
                              traceConfigKeys=traceConfigKeys)

        payloadEnvelope = yield payload.makePayloadEnvelopeDefer()
        vortexMsg = yield payloadEnvelope.toVortexMsgDefer()

        try:
            VortexFactory.sendVortexMsg(vortexMsg,
                                        destVortexName=peekClientName)

        except Exception as e:
            logger.exception(e)
コード例 #2
0
        def sendChunk(toSend):
            if not toSend and not cacheAll:
                return

            payload = Payload(filt=filt, tuples=toSend)
            d: Deferred = payload.makePayloadEnvelopeDefer(compressionLevel=2)
            d.addCallback(
                lambda payloadEnvelope: payloadEnvelope.toVortexMsgDefer())
            d.addCallback(sendResponse)
            d.addErrback(vortexLogFailure, logger, consumeError=True)
コード例 #3
0
 def makeVortexMsg(self, filt: dict,
                   tupleSelector: TupleSelector) -> Union[Deferred, bytes]:
     tuple_ = DocumentUpdateDateTuple()
     tuple_.updateDateByChunkKey = {
         key:self._cacheHandler.encodedChunk(key).lastUpdate
         for key in self._cacheHandler.encodedChunkKeys()
     }
     payload = Payload(filt, tuples=[tuple_])
     payloadEnvelope = yield payload.makePayloadEnvelopeDefer()
     vortexMsg = yield payloadEnvelope.toVortexMsg()
     return vortexMsg
コード例 #4
0
    def _callback(self, result, replyFilt: dict, tupleName: str,
                  sendResponse: SendVortexMsgResponseCallable):

        if not isinstance(result, list):
            result = [result]
        payload = Payload(filt=replyFilt, tuples=result)

        payloadEnvelope = yield payload.makePayloadEnvelopeDefer()
        vortexMsg = yield payloadEnvelope.toVortexMsgDefer()
        try:
            yield sendResponse(vortexMsg)

        except Exception as e:
            logger.error("Failed to send TupleAction response for %s", tupleName)
            logger.exception(e)
コード例 #5
0
    def makeVortexMsg(self, filt: dict,
                      tupleSelector: TupleSelector) -> Deferred:
        # TODO HACK - Hard coded for mobile users
        mobileGroup = yield self._mobileGroup()
        users = yield self._ourApi.infoApi.users(groupNames=[mobileGroup])

        tuples = []
        for userDetails in users:
            tuples.append(
                UserListItemTuple(userId=userDetails.userName,
                                  displayName=userDetails.userTitle))

        payload = Payload(filt=filt, tuples=tuples)
        paylodEnvelope = yield payload.makePayloadEnvelopeDefer()
        vortexMsg = yield paylodEnvelope.toVortexMsgDefer()
        return vortexMsg