Document relays a bit
This commit is contained in:
parent
91a218f7fb
commit
76d550602f
|
@ -288,7 +288,7 @@ when defined(posix):
|
||||||
import std/asyncnet
|
import std/asyncnet
|
||||||
from std/nativesockets import AF_INET, AF_UNIX, IPPROTO_TCP, SOCK_STREAM, Protocol
|
from std/nativesockets import AF_INET, AF_UNIX, IPPROTO_TCP, SOCK_STREAM, Protocol
|
||||||
|
|
||||||
import protocols/[gatekeeper, sturdy]
|
import protocols/gatekeeper
|
||||||
|
|
||||||
type ShutdownEntity* = ref object of Entity
|
type ShutdownEntity* = ref object of Entity
|
||||||
|
|
||||||
|
@ -303,6 +303,8 @@ when defined(posix):
|
||||||
export Unix
|
export Unix
|
||||||
|
|
||||||
proc connect*(turn: var Turn; socket: AsyncSocket; step: Preserve[Ref]; bootProc: ConnectProc) =
|
proc connect*(turn: var Turn; socket: AsyncSocket; step: Preserve[Ref]; bootProc: ConnectProc) =
|
||||||
|
## Relay a dataspace over an open `AsyncSocket`.
|
||||||
|
## *`bootProc` may be called multiple times for multiple remote gatekeepers.*
|
||||||
proc socketWriter(packet: sink Packet): Future[void] =
|
proc socketWriter(packet: sink Packet): Future[void] =
|
||||||
socket.send(cast[string](encode(packet)))
|
socket.send(cast[string](encode(packet)))
|
||||||
const recvSize = 0x2000
|
const recvSize = 0x2000
|
||||||
|
@ -330,7 +332,8 @@ when defined(posix):
|
||||||
var (success, pr) = decode(wireBuf)
|
var (success, pr) = decode(wireBuf)
|
||||||
if success:
|
if success:
|
||||||
dispatch(relay, pr)
|
dispatch(relay, pr)
|
||||||
socket.recv(recvSize).addCallback(recvCb)
|
if not socket.isClosed:
|
||||||
|
socket.recv(recvSize).addCallback(recvCb)
|
||||||
socket.recv(recvSize).addCallback(recvCb)
|
socket.recv(recvSize).addCallback(recvCb)
|
||||||
turn.facet.actor.atExit do (turn: var Turn): close(socket)
|
turn.facet.actor.atExit do (turn: var Turn): close(socket)
|
||||||
discard publish(turn, connectionClosedRef, true)
|
discard publish(turn, connectionClosedRef, true)
|
||||||
|
@ -362,6 +365,8 @@ when defined(posix):
|
||||||
asyncCheck(turn, fut)
|
asyncCheck(turn, fut)
|
||||||
|
|
||||||
proc connect*(turn: var Turn; transport: Tcp; step: Preserve[Ref]; bootProc: ConnectProc) =
|
proc connect*(turn: var Turn; transport: Tcp; step: Preserve[Ref]; bootProc: ConnectProc) =
|
||||||
|
## Relay a dataspace over TCP.
|
||||||
|
## *`bootProc` may be called multiple times for multiple remote gatekeepers.*
|
||||||
let socket = newAsyncSocket(
|
let socket = newAsyncSocket(
|
||||||
domain = AF_INET,
|
domain = AF_INET,
|
||||||
sockType = SOCK_STREAM,
|
sockType = SOCK_STREAM,
|
||||||
|
@ -372,6 +377,8 @@ when defined(posix):
|
||||||
connect(turn, socket, step, bootProc)
|
connect(turn, socket, step, bootProc)
|
||||||
|
|
||||||
proc connect*(turn: var Turn; transport: Unix; step: Preserve[Ref]; bootProc: ConnectProc) =
|
proc connect*(turn: var Turn; transport: Unix; step: Preserve[Ref]; bootProc: ConnectProc) =
|
||||||
|
## Relay a dataspace over a UNIX socket.
|
||||||
|
## *`bootProc` may be called multiple times for multiple remote gatekeepers.*
|
||||||
let socket = newAsyncSocket(
|
let socket = newAsyncSocket(
|
||||||
domain = AF_UNIX,
|
domain = AF_UNIX,
|
||||||
sockType = SOCK_STREAM,
|
sockType = SOCK_STREAM,
|
||||||
|
|
Loading…
Reference in New Issue