Skip to content

Instantly share code, notes, and snippets.

@dom96
Last active August 29, 2015 13:56
Show Gist options
  • Save dom96/61bb0b210ec7497565d5 to your computer and use it in GitHub Desktop.
Save dom96/61bb0b210ec7497565d5 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:
proc doTest(): PFuture[int] =
var retFuture = newFuture[int]()
iterator test(): PFutureVoid {.closure.} =
var fut = p.connect(sock, "irc.freenode.org", TPort(6667))
yield fut
echo fut.read
#var fut2 = p.recv(sock, 10)
# Iterator is done here. Complete procedure future.
retFuture.complete(0)
var testIter = test
var first = testIter()
proc cbVoid =
if not testIter.finished:
var next = testIter()
next.callbackVoid = cbVoid
first.callbackVoid = cbVoid
return retFuture
var x = doTest()
echo x.read
while true:
p.poll()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment