tendermint/example/python/app.py

89 lines
1.7 KiB
Python
Raw Normal View History

2015-12-06 15:18:13 -08:00
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:
2015-12-14 15:00:18 -08:00
txByteArray = bytearray(txBytes)
if len(txBytes) >= 2 and txBytes[:2] == "0x":
txByteArray = hex2bytes(txBytes[2:])
txValue = decode_big_endian(BytesReader(txByteArray), len(txBytes))
2015-12-06 15:18:13 -08:00
if txValue != self.txCount:
2015-12-14 15:00:18 -08:00
return None, 1
2015-12-06 15:18:13 -08:00
self.txCount += 1
return None, 0
def get_hash(self):
self.hashCount += 1
if self.txCount == 0:
return "", 0
2015-12-14 15:00:18 -08:00
h = encode_big_endian(self.txCount, 8)
h.reverse()
return str(h), 0
2015-12-06 15:18:13 -08:00
def commit(self):
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()