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