mirror of
https://github.com/status-im/nim-raft.git
synced 2025-02-26 20:00:40 +00:00
Tornado frontend
This commit is contained in:
parent
491b9129f6
commit
2d034b6c86
@ -15,19 +15,38 @@ type
|
||||
|
||||
RaftPeersConfContainer* = seq[RaftPeerConf]
|
||||
|
||||
var
|
||||
conf: RaftPeersConfContainer
|
||||
proc loadConfig(): RaftPeersConfContainer =
|
||||
var
|
||||
conf: RaftPeersConfContainer
|
||||
|
||||
proc loadConfig() =
|
||||
let jsonFile = "raft_node_config.json"
|
||||
# read and parse file
|
||||
let jsConf = parseFile(jsonFile)
|
||||
for n in jsConf["raftPeers"]:
|
||||
conf.add(RaftPeerConf(id: parseUUID(n["id"].astToStr), host: n["host"].astToStr, port: parseInt(n["port"].astToStr)))
|
||||
debug "Conf", conf=conf
|
||||
info "Conf", config=repr(conf)
|
||||
conf.add(RaftPeerConf(id: parseUUID(n["id"].getStr), host: n["host"].getStr, port: n["port"].getInt))
|
||||
result = conf
|
||||
|
||||
proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback =
|
||||
proc RaftPipesRead(node: BasicRaftNode, port: int) {.async.}=
|
||||
var
|
||||
fifoRead = fmt"RAFTNODERECEIVEMSGPIPE{port}"
|
||||
fifoWrite = fmt"RAFTNODESENDMSGRESPPIPE{port}"
|
||||
frFD = open(fifoRead, fmRead)
|
||||
fwFD = open(fifoWrite, fmAppend)
|
||||
|
||||
var
|
||||
ss = MsgStream.init(frFD.readAll)
|
||||
xx: RaftMessageBase
|
||||
|
||||
ss.unpack(xx) #and here too
|
||||
|
||||
var
|
||||
r: RaftMessageResponseBase = await RaftNodeMessageDeliver(node, xx)
|
||||
rs = MsgStream.init()
|
||||
|
||||
rs.pack(r)
|
||||
fwFD.write(rs.data)
|
||||
|
||||
proc TestRaftMessageSendCallbackCreate(conf: RaftPeersConfContainer, node: BasicRaftNode, port: int): RaftMessageSendCallback =
|
||||
proc (msg: RaftMessageBase): Future[RaftMessageResponseBase] {.async, gcsafe.} =
|
||||
var
|
||||
host: string
|
||||
@ -42,9 +61,12 @@ proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback =
|
||||
|
||||
s.pack(msg) #here the magic happened
|
||||
|
||||
debug "req: ", req=fmt"http://{host}:{port}", data=s.data
|
||||
var
|
||||
resp = client.post(fmt"http://{host}:{port}", s.data)
|
||||
|
||||
await RaftPipesRead(node, port)
|
||||
|
||||
echo resp.status
|
||||
|
||||
var
|
||||
@ -54,8 +76,9 @@ proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback =
|
||||
ss.unpack(xx) #and here too
|
||||
result = xx
|
||||
|
||||
if isMainModule:
|
||||
loadConfig()
|
||||
proc main() {.async.} =
|
||||
var conf = loadConfig()
|
||||
|
||||
var
|
||||
nodesIds: seq[UUID]
|
||||
node: BasicRaftNode
|
||||
@ -65,9 +88,16 @@ if isMainModule:
|
||||
nodesIds.add(c.id)
|
||||
|
||||
var
|
||||
nodeId = parseUUID("f9695ea4-4f37-11ee-8e75-8ff5a48faa42")
|
||||
nodeId = parseUUID("0edc0976-4f38-11ee-b1ad-5b3b0f690e65")
|
||||
peersIds = nodesIds
|
||||
port: int
|
||||
idx = peersIds.find(nodeId)
|
||||
port = conf[idx].port
|
||||
peersIds.del(idx)
|
||||
|
||||
peersIds.del(peersIds.find(nodeId))
|
||||
node = BasicRaftNode.new(nodeId, peersIds, TestRaftMessageSendCallbackCreate(conf, node, port))
|
||||
RaftNodeStart(node)
|
||||
|
||||
node = BasicRaftNode.new(nodeId, peersIds, TestRaftMessageSendCallbackCreate())
|
||||
if isMainModule:
|
||||
waitFor main()
|
||||
runForever()
|
@ -5,8 +5,8 @@ import sys
|
||||
import errno
|
||||
import msgpack
|
||||
|
||||
writeFIFO = '/home/raych/prg/nim-raft/RAFTNODERECEIVEMSGPIPE'
|
||||
readFIFO = '/home/raych/prg/nim-raft/RAFTNODESENDMSGRESPPIPE'
|
||||
writeFIFO = 'RAFTNODERECEIVEMSGPIPE'
|
||||
readFIFO = 'RAFTNODESENDMSGRESPPIPE'
|
||||
|
||||
def writeFifo(data):
|
||||
with open(writeFIFO, "a") as fw:
|
||||
@ -25,7 +25,7 @@ def readPipe():
|
||||
|
||||
class MainHandler(tornado.web.RequestHandler):
|
||||
def post(self):
|
||||
s = self.request.body.decode("utf-8")
|
||||
s = self.request.body
|
||||
writeFifo(s)
|
||||
self.write(readPipe())
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user