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)
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)
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
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)
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