class Chat(threading.Thread): def __init__(self, user, varName, wsName, **opt): threading.Thread.__init__(self, name="Chat") self._user, self._varName, self._wsName = user, varName, wsName self._ws = NetWorkSpace(wsName, persistent=True, **opt) self._ws.declare(varName, FIFO) self._queue = Queue.Queue() recvWs = NetWorkSpace(wsName, **opt) self._ifind = recvWs.ifind(varName) self.setDaemon(True) self.start() def sendMessage(self, ent): msg = ent.get().strip() if len(msg) > 0: self._ws.store(self._varName, "%s: %s" % (self._user, msg)) ent.delete(0, END) def checkForNewMessages(self, txt): txt.config(state=NORMAL) while not self._queue.empty(): txt.insert(END, self._queue.get() + "\n") txt.see(END) txt.config(state=DISABLED) txt.after(1000, self.checkForNewMessages, txt) def run(self): for val in self._ifind: self._queue.put(val)
def run(self): while True: try: try: ws = NetWorkSpace(self.wsName, self.nwsHost, self.nwsPort, persistent=True) ws.declare(self.varName, FIFO) while True: s = ws.fetch(self.varName) try: # split the request using the first character x = s[1:].split(s[0]) r = {'PythonSleighNwsHost': self.nwsHost, 'PythonSleighNwsPort': str(self.nwsPort)} r['PythonSleighNwsName'], r['PythonSleighWorkerCount'], \ r['PythonSleighID'], r['PythonSleighWorkingDir'], \ r['PythonSleighWorkerOut'], r['PythonSleighLogDir'], \ r['PythonSleighUserName'], r['PythonSleighModulePath'] = x self.gotRequest(r) except: # bad request: ignore it pass except NwsServerException: # server is probably down. sleep a bit, and try again time.sleep(10) except NwsOperationException: # maybe someone deleted my variable to signal a shutdown? return finally: # ws may not be defined try:ws.server.close() except: pass ws = None
class Chat: def __init__(self, user, varName, wsName, **opt): self._user, self._varName, self._wsName = user, varName, wsName self._ws = NetWorkSpace(wsName, persistent=True, **opt) self._ws.declare(varName, FIFO) self._ifindTry = self._ws.ifindTry(varName) def sendMessage(self, ent): msg = ent.get().strip() if len(msg) > 0: self._ws.store(self._varName, "%s: %s" % (self._user, msg)) ent.delete(0, END) def checkForNewMessages(self, txt): txt.config(state=NORMAL) self._ifindTry.restart() for msg in self._ifindTry: txt.insert(END, msg + '\n') txt.see(END) txt.config(state=DISABLED) txt.after(1000, self.checkForNewMessages, txt)
print 'associate another value with x.' ws.store('x', 2) print ws.listVars() print 'consume values for x, should see them in order saved.' print ws.fetch('x') print ws.fetch('x') print 'no more values for x... .' print ws.listVars() print 'so try to fetch and see what happens... .' print ws.fetchTry('x', 'no go') print 'create a single-value variable.' ws.declare('pi', 'single') print ws.listVars() print 'get rid of x.' ws.deleteVar('x') print ws.listVars() print 'try to store two values to pi.' ws.store('pi', 2.171828182) ws.store('pi', 3.141592654) print ws.listVars() print 'check that the right one was kept.' print ws.find('pi') print "store a dictionary."
#start tuple space - twistd -y /etc/nws.tac #deleteVar() - deleta #find() - return a value #store() - insere no espaco #fetch() - retira do espaco #fetchTry() - retira nao bloqueante port = 8765 host = sys.argv[1] shows = ["Red Hot Chili Peppers", "ACDC", "Linkin Park", "Iron Maiden"] for tsname in shows: data = NetWorkSpace("database", host, port, persistent=True) data.declare(tsname, 'fifo') data.store(tsname, tsname) ts = NetWorkSpace(tsname, host, port, persistent=True) alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] try: for i in alpha[:10]: for j in range(10): ts.declare("%s%d" % (i, j), 'fifo') ts.store("%s%d" % (i, j), "%s%d" % (i, j)) print("Creation successful!") except: print ("Creation failed.") print ("new_show.py <show_name> <host> <show_size>")
f = open(n, 'rb') except IOError: print >> sys.stderr, "error reading file", n continue varName = os.path.basename(n) if exists(ws, varName): a = raw_input("overwrite existing variable %s? (y/n) " % varName) if not a.strip().lower().startswith('y'): print >> sys.stderr, "skipping", n continue else: print >> sys.stderr, "overwriting", n try: ws.declare(varName, 'single') ws.storeFile(varName, f) except: print >> sys.stderr, "error putting file", n try: f.close() except: pass elif op in ['get', 'find', 'read']: vars = args or listVars(ws) for n in vars: varName = os.path.basename(n) if not exists(ws, varName): print >> sys.stderr, "no variable named", varName continue # only confirm when wildcarding