mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-07-31 03:33:25 +00:00
Fake DatagramTransport: first compile
Override Chronos DatagramTransport with a fake one Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
7956898882
commit
b1957f4b60
@ -20,6 +20,46 @@ const
|
||||
responseTimeout* = 4.seconds ## timeout for the response of a request-response
|
||||
## call
|
||||
|
||||
type
|
||||
DatagramCallback* = proc(transp: DatagramTransport,
|
||||
remote: TransportAddress): Future[void] {.
|
||||
gcsafe, raises: [Defect].}
|
||||
|
||||
DatagramTransport = ref object
|
||||
udata*: pointer # User-driven pointer
|
||||
|
||||
proc sendTo*[T](transp: DatagramTransport, remote: TransportAddress,
|
||||
msg: sink seq[T], msglen = -1) {.async.} =
|
||||
echo "sending to ", remote
|
||||
|
||||
proc getMessage*(t: DatagramTransport,): seq[byte] {.
|
||||
raises: [Defect, CatchableError].} =
|
||||
echo "getMessage "
|
||||
|
||||
proc close*(transp: DatagramTransport) =
|
||||
echo "close"
|
||||
|
||||
proc closed*(transp: DatagramTransport): bool {.inline.} =
|
||||
result = false
|
||||
|
||||
proc closeWait*(transp: DatagramTransport) {.async.} =
|
||||
echo "closeWait "
|
||||
|
||||
proc getUserData*[T](transp: DatagramTransport): T {.inline.} =
|
||||
## Obtain user data stored in ``transp`` object.
|
||||
result = cast[T](transp.udata)
|
||||
|
||||
proc newFakeDatagramTransport*[T](cbproc: DatagramCallback,
|
||||
udata: ref T,
|
||||
local: TransportAddress = AnyAddress,
|
||||
): DatagramTransport {.
|
||||
raises: [Defect, CatchableError].} =
|
||||
echo "new"
|
||||
result = DatagramTransport()
|
||||
GC_ref(udata)
|
||||
result.udata = cast[pointer](udata)
|
||||
|
||||
|
||||
type
|
||||
Transport* [Client] = ref object
|
||||
client: Client
|
||||
@ -186,7 +226,7 @@ proc open*[T](t: Transport[T]) {.raises: [Defect, CatchableError].} =
|
||||
|
||||
# TODO allow binding to specific IP / IPv6 / etc
|
||||
let ta = initTAddress(t.bindAddress.ip, t.bindAddress.port)
|
||||
t.transp = newDatagramTransport(processClient[T], udata = t, local = ta)
|
||||
t.transp = newFakeDatagramTransport(processClient[T], udata = t, local = ta)
|
||||
|
||||
proc close*(t: Transport) =
|
||||
t.transp.close
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user