mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-26 07:12:16 +00:00
93 lines
2.1 KiB
Python
93 lines
2.1 KiB
Python
|
import sys
|
||
|
|
||
|
from tmsp.wire import hex2bytes, decode_big_endian, encode_big_endian
|
||
|
from tmsp.server import TMSPServer
|
||
|
from tmsp.reader import BytesBuffer
|
||
|
|
||
|
|
||
|
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()
|