import sys sys.path.insert(0, './tmsp') from wire import * from server import * # tmsp application interface class CounterApplication(): def __init__(self): self.hashCount = 0 self.txCount = 0 self.commitCount = 0 def open(self): return CounterAppContext(self) class CounterAppContext(): def __init__(self, app): self.app = app self.hashCount = app.hashCount self.txCount = app.txCount self.commitCount = app.commitCount self.serial = False def echo(self, msg): return msg, 0 def info(self): return ["hash, tx, commit counts:%d, %d, %d"%(self.hashCount, self.txCount, self.commitCount)], 0 def set_option(self, key, value): if key == "serial" and value == "on": self.serial = True return 0 def append_tx(self, txBytes): if self.serial: txByteArray = bytearray(txBytes) if len(txBytes) >= 2 and txBytes[:2] == "0x": txByteArray = hex2bytes(txBytes[2:]) txValue = decode_big_endian(BytesBuffer(txByteArray), len(txBytes)) if txValue != self.txCount: return None, 1 self.txCount += 1 return None, 0 def get_hash(self): self.hashCount += 1 if self.txCount == 0: return "", 0 h = encode_big_endian(self.txCount, 8) h.reverse() return str(h), 0 def commit(self): self.commitCount += 1 return 0 def rollback(self): return 0 def add_listener(self): return 0 def rm_listener(self): return 0 def event(self): return if __name__ == '__main__': l = len(sys.argv) if l == 1: port = 46658 elif l == 2: port = int(sys.argv[1]) else: print "too many arguments" quit() print 'TMSP Demo APP (Python)' app = CounterApplication() server = TMSPServer(app, port) server.main_loop()