def setValueSlot(self, newValue): logging.info("Setting %s %s", str(self), newValue) if not self.keyspace.loaded: if SynchronousPropertyAccess.SynchronousPropertyAccess.getCurrent() is not None: self.keyspace.waitLoaded() else: logging.info("raising NotLoadedException for %s", self) raise NotLoadedException(self.keyspace) if newValue is None: SharedStateSynchronizer.getSynchronizer().writeValue( self.keyspace.keyspaceName, self.keyName, None ) else: assert isinstance(newValue, tuple) assert len(newValue) == 1 try: SharedStateSynchronizer.getSynchronizer().writeValue( self.keyspace.keyspaceName, self.keyName, JsonPickle.toJson(newValue[0]) ) except Exception as e: logging.error("%s", traceback.format_exc()) raise self.value_ = newValue
def setValueSlot(self, newValue): logging.info("Setting %s %s", str(self), newValue) if not self.keyspace.loaded: if SynchronousPropertyAccess.SynchronousPropertyAccess.getCurrent( ) is not None: self.keyspace.waitLoaded() else: logging.info("raising NotLoadedException for %s", self) raise NotLoadedException(self.keyspace) if newValue is None: SharedStateSynchronizer.getSynchronizer().writeValue( self.keyspace.keyspaceName, self.keyName, None) else: assert isinstance(newValue, tuple) assert len(newValue) == 1 try: SharedStateSynchronizer.getSynchronizer().writeValue( self.keyspace.keyspaceName, self.keyName, JsonPickle.toJson(newValue[0])) except Exception as e: logging.error("%s", traceback.format_exc()) raise self.value_ = newValue
def waitLoaded(self): if not self.isLoaded_: self.ensureSubscribed() SharedStateSynchronizer.getSynchronizer().waitForKeyspaceAndPrefix( self.keyspaceName, NativeJson.Json(()) )
def ensureSubscribed(self): assert SharedStateSynchronizer.isConnected() if not self.isSubscribed_: logging.info("ComputedGraphSharedState subscribing to: %s", self) SharedStateSynchronizer.getSynchronizer().addKeyspaceListener( self.keyspaceName, KeyspaceUpdater(self), NativeJson.Json(())) self.isSubscribed_ = True
def ensureSubscribed(self): assert SharedStateSynchronizer.isConnected() if not self.isSubscribed_: logging.info("ComputedGraphSharedState subscribing to: %s", self) SharedStateSynchronizer.getSynchronizer().addKeyspaceListener( self.keyspaceName, KeyspaceUpdater(self), NativeJson.Json(()) ) self.isSubscribed_ = True
def populateKey(self): keyspace, key = self.createKey() keyspace.waitLoaded() key.value = (self.keyValue,) SharedStateSynchronizer.getSynchronizer().update() SharedStateSynchronizer.getSynchronizer().commitPendingWrites() return key
def initSynchronizer(): self.synchronizer = SharedStateSynchronizer.SharedStateSynchronizer() logging.info("created a SharedStateSynchronizer") self.synchronizer.attachView( sharedStateViewFactory.createView() ) logging.info("attached shared state view.")
def synchronizerUpdateTest(self, computedGraphTestHarness): synchronizer = self.createSynchronizer() def updateValueInSharedState(self, key, view): view[key] = JsonPickle.toJson(self.keyValue) self.runInTransaction(self.keyName, updateValueInSharedState, False) with synchronizer: assert SharedStateSynchronizer.getView() is not None computedGraphKeyspace, computedGraphKey = self.createKey() self.synchronizerWaitForKey(self.keyName, synchronizer) self.assertEqual(computedGraphKey.value, (self.keyValue,))
def waitLoaded(self): if not self.isLoaded_: self.ensureSubscribed() SharedStateSynchronizer.getSynchronizer().waitForKeyspaceAndPrefix( self.keyspaceName, NativeJson.Json(()))
def createSynchronizer(self): synchronizer = SharedStateSynchronizer.SharedStateSynchronizer() synchronizer.attachView(self.sharedState.newView()) return synchronizer
def synchronizerNoConnection(self, computedGraphTestHarness): synchronizer = SharedStateSynchronizer.SharedStateSynchronizer() synchronizer.update()
def setUp(self): self.sharedState = SharedStateTestHarness(inMemory=True) self.synchronizer = SharedStateSynchronizer.SharedStateSynchronizer() self.synchronizer.attachView(self.sharedState.newView()) self.synchronizer.__enter__()