Exemplo n.º 1
0
def createClient(clientId, callbackSchedulerToUse=None):
    if callbackSchedulerToUse is None:
        callbackSchedulerToUse = CallbackScheduler.singletonForTesting()

    vdm = ForaNative.VectorDataManager(callbackSchedulerToUse, 5 * 1024 * 1024)
    vdm.setMemoryLimit(100 * 1024 * 1024, 125 * 1024 * 1024)

    return (CumulusNative.CumulusClient(vdm, clientId,
                                        callbackSchedulerToUse), vdm)
Exemplo n.º 2
0
    def __init__(self, callbackScheduler, vdm, viewFactory):
        Stoppable.Stoppable.__init__(self)

        self.lock_ = threading.Lock()
        self.callbackScheduler = callbackScheduler
        self.definitionToIdMap_ = {}
        self.idToDefinitionMap_ = {}
        self.vdm = vdm

        self.onJsonViewOfSystemChanged = None

        self.persistentCacheIndex = CumulusNative.PersistentCacheIndex(
            viewFactory.createView(retrySeconds=10.0, numRetries=10),
            callbackScheduler)

        self.vdm.setPersistentCacheIndex(self.persistentCacheIndex)

        self.cumulusClientId = CumulusNative.CumulusClientId(
            Hash.Hash.sha1(str(uuid.uuid4())))

        logging.info("CumulusClient created with %s", self.cumulusClientId)

        self.cumulusClient = CumulusNative.CumulusClient(
            vdm, self.cumulusClientId, self.callbackScheduler)

        self.finalResponses = Queue.Queue()

        self.cumulusClientListener = self.cumulusClient.createListener()

        self.cpuAssignmentDependencyGraph = CumulusNative.CpuAssignmentDependencyGraph(
            self.callbackScheduler.getFactory().createScheduler(
                self.callbackScheduler.getMetadata() + "_cpuAssignmentGraph",
                1), self.vdm)
        self.cpuAssignmentDependencyGraph.subscribeToCumulusClient(
            self.cumulusClient)

        self.pendingCallbacksByGuid = {}

        self.cpuAssignmentDependencyGraphListener = \
            self.cpuAssignmentDependencyGraph.createListener()

        self.threads = []

        self.threads.append(
            ManagedThread.ManagedThread(target=self.processClientMessages_,
                                        args=()))
        self.threads.append(
            ManagedThread.ManagedThread(
                target=self.processDependencyGraphMessages_, args=()))

        for t in self.threads:
            t.start()

        self.nextCpuUpdateTime = time.time()
        self.cpuMessagesSinceLastUpdate = 0
        self.lastSystemwideUpdateTime = time.time()