Skip to content

Instantly share code, notes, and snippets.

@dom96
Created February 8, 2014 18:00
Show Gist options
  • Save dom96/11ba488a29b1fa2abe64 to your computer and use it in GitHub Desktop.
Save dom96/11ba488a29b1fa2abe64 to your computer and use it in GitHub Desktop.
import asyncio2, sockets2
var p = newDispatcher()
var sock = socket()
#sock.setBlocking false
p.register(sock)
when false:
var f = p.connect(sock, "irc.freenode.org", TPort(6667))
f.callback =
proc (future: PFuture[int]) =
echo("Connected in future!")
echo(future.read)
for i in 0 .. 50:
var recvF = p.recv(sock, 10)
recvF.callback =
proc (future: PFuture[string]) =
echo("Read: ", future.read)
when false:
await p.connect(sock, "irc.freenode.org", TPort(6667))
for i in 0 .. 50:
var data = await(p.recv(sock, 10))
echo "Read: ", data
when true:
iterator test[T](): PFuture[T] {.closure.} =
yield p.connect(sock, "irc.freenode.org", TPort(6667))
yield p.recv(sock, 10)
var i = test
var f = i()
proc cb(future: PFuture[T]) =
if not i.finished:
var f2 = i()
f2.callback = cb
f.callback = cb
while true:
p.poll()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment