Example #1
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()
def clientId(ix):
    return CumulusNative.CumulusClientId(HashNative.Hash(ix))