Advertisement
Guest User

Untitled

a guest
Apr 12th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 0.86 KB | None | 0 0
  1. proc processHost(host: string, port: Port) {.async.} = # template/generic instantiation from here
  2.   let sock  = newAsyncSocket()
  3.   await sock.connect(host, port)
  4.   asyncCheck sock.process(host) # Error goes away when I remove this call
  5.  
  6. proc process(peer: RemoteRuntime, remote: string) {.async.} =
  7.   while true:
  8.     let str = await peer.recvLine()
  9.     if str == "": break
  10.  
  11.     let msg = to[Message](str)
  12.     case (to[Message](str)).typ:
  13.       of tokenMsg: asyncCheck processToken(msg.token)
  14.       of hostMsg:  asyncCheck processHost(msg.host, msg.port)
  15.       of stopMsg:  quit(0) # TODO: Shut down more gracefully
  16.  
  17. proc listenForPeers(port: Port) {.async.} =
  18.   let listener = newAsyncSocket()
  19.   listener.bindAddr(port)
  20.   listener.listen()
  21.  
  22.   while true:
  23.     let (host, peer) = await listener.acceptAddr()
  24.     asyncCheck peer.process(host)
  25.     peers.add(peer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement