summaryrefslogtreecommitdiff
path: root/src/router.moon
diff options
context:
space:
mode:
Diffstat (limited to 'src/router.moon')
-rw-r--r--src/router.moon16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/router.moon b/src/router.moon
index 7ef9bfc..e414f07 100644
--- a/src/router.moon
+++ b/src/router.moon
@@ -72,7 +72,7 @@ net.register_message("Simplify",{required:{
--Testing
net.register_message("Raw",{optional:{s:"string"}})
-
+router_singleton = nil
class Queue
new: () =>
@queue = {}
@@ -86,15 +86,17 @@ class Router
@peerlist = {}
@routes = {}
- -- "uninitalized", "peer", "candidate", "elected"
- @state = "unitialized"
+ -- "uninitialized", "peer", "candidate", "elected"
+ @state = "uninitialized"
-- [peerid] = "votes for peerid"
+ @nonce = 0
@prevotes = {}
@term = 0
-- The uncommited queue
@uncommited = Queue!
+ router_singleton = @
initalize: (id) =>
@set_route("RequestClusterInfo",(conn, message) =>
@@ -242,4 +244,10 @@ class Router
else
log.warn("No message callback registered for format " .. msgfmt .. " routes are: " .. tostring(@routes), {"net"})
-{:Router}
+node = am.group!
+node\update(() ->
+ if router_singleton and router_singleton.state ~= "uninitalized"
+ net.pump!
+ coroutine.yield!
+)
+{:Router, :node}