-
-
Save iffy/4cd33aaa7af421fe37759570178c10ec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
proc processClient(db: DbConn, client: AsyncSocket) {.async.} = | |
debug "client connected" | |
var ss = newStringSocket() | |
var handler = db.createHandler(ss) | |
echo "client.attachTo(ss)" | |
asyncCheck client.attachTo(ss) | |
yield handler.connected | |
echo "handler.connected done" | |
if handler.connected.failed: | |
warn "handshake failed" | |
else: | |
debug "handshake complete" | |
let name = await handler.get_remote_name() | |
debug "client processing done" | |
echo "about to close" | |
echo "client closed" | |
proc serve(db: DbConn, port: Port, address = "") {.async.} = | |
var server = newAsyncSocket() | |
server.setSockOpt(OptReuseAddr, true) | |
server.bindAddr(port, address) | |
server.listen() | |
info "Accepting connections on port: ", $port | |
while true: | |
echo "awaiting client" | |
let client = await server.accept() | |
echo "gonna process client" | |
asyncCheck processClient(db, client) | |
echo "done processing client" | |
var keepgoing = false | |
proc sharing_start_server*(db: DbConn, port: Port, address = "") = | |
## Turn on the sharing server | |
info "Starting share server" | |
asyncCheck serve(db, port, address) | |
info "Starting the reactor..." | |
keepgoing = true | |
while keepgoing: | |
try: | |
echo "about to poll" | |
poll() | |
echo "polled" | |
except: | |
echo "Error encountered: ", getCurrentExceptionMsg() | |
raise | |
info "Stopped the reactor..." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
handler.connected done | |
WARN handshake failed | |
DEBUG client processing done | |
about to close | |
client closed | |
Error encountered: Bad file descriptor | |
Async traceback: | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare | |
/Users/matt/m/nim-argparse/src/argparse.nim(724) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(715) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer | |
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read | |
Exception message: Bad file descriptor | |
Exception type: | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare | |
/Users/matt/m/nim-argparse/src/argparse.nim(724) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(715) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer | |
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read | |
[[reraised from: | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare | |
/Users/matt/m/nim-argparse/src/argparse.nim(724) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(715) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer | |
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(422) asyncCheckCallback | |
]] | |
Error: unhandled exception: Bad file descriptor | |
Async traceback: | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare | |
/Users/matt/m/nim-argparse/src/argparse.nim(724) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(715) run | |
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse | |
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous | |
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer | |
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter | |
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read | |
Exception message: Bad file descriptor | |
Exception type: [OSError] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment