Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+72
View File
@@ -0,0 +1,72 @@
collect(event: dever.io.ReadEvent.Chunk(bytes), state: Bytes) (next: Bytes, stop: Bool) { next = dever.bytes.concat(state, bytes)
stop = dever.bytes.length(next) >= 4 }
collect(event: dever.io.ReadEvent.Failed(message), state: Bytes) (next: Bytes, stop: Bool) { fail(dever.io.ReadEvent.Failed(message)) }
serve(listener: dever.system.Listener) () { socket = dever.net.accept(listener)
dever.net.timeout(socket, 1000)
bytes = reduceUntil(collect, dever.net.chunks(socket, 4), dever.bytes.fromText(""))
dever.net.write(socket, bytes)
dever.net.close(socket) }
echo() (answer: Bool) { listener = dever.net.listen("127.0.0.1", 0)
pending = run(serve(listener))
socket = dever.net.connectTimeout("127.0.0.1", dever.net.port(listener), 1000)
dever.net.timeout(socket, 1000)
dever.net.write(socket, dever.bytes.fromText("ping"))
bytes = reduceUntil(collect, dever.net.chunks(socket, 4), dever.bytes.fromText(""))
dever.net.close(socket)
wait(pending)
dever.net.closeListener(listener)
answer = bytes == dever.bytes.fromText("ping") }
accepted(result: dever.net.ConnectResult.Connected(socket), count: Int) (next: Int, stop: Bool) { dever.net.close(socket)
next = count + 1
stop = true }
accepted(result: dever.net.ConnectResult.Failed(message), count: Int) (next: Int, stop: Bool) { fail(dever.net.ConnectResult.Failed(message)) }
connections() (answer: Bool) { listener = dever.net.listen("127.0.0.1", 0)
port = dever.net.port(listener)
values = dever.net.connections(listener)
socket = dever.net.connectTimeout("127.0.0.1", port, 1000)
count = reduceUntil(accepted, values, 0)
remaining = reduceUntil(accepted, values, 0)
still_open = dever.net.port(listener) == port
dever.net.close(socket)
dever.net.closeListener(listener)
answer = count == 1 and remaining == 0 and still_open }
pair() (client: dever.system.Socket, server: dever.system.Socket) { listener = dever.net.listen("127.0.0.1", 0)
client = dever.net.connectTimeout("127.0.0.1", dever.net.port(listener), 1000)
server = dever.net.accept(listener)
dever.net.closeListener(listener) }
reader(socket: dever.system.Socket, signal: Channel<Int>) () { send(signal, 1)
value = dever.net.read(socket, 1) }
byteRead(value: dever.io.ReadState.Read(bytes)) (answer: Bool) { answer = bytes == dever.bytes.fromText("x") }
byteRead(value: dever.io.ReadState.End) (answer: Bool) { answer = false }
cancelVerify() (answer: Bool) { sockets = pair()
dever.net.timeout(sockets.client, 1000)
signal = channel(Int, 1)
pending = run(reader(sockets.client, signal))
started = receive(signal)
stop(pending)
dever.net.write(sockets.server, dever.bytes.fromText("x"))
received = byteRead(dever.net.read(sockets.client, 1))
dever.net.close(sockets.client)
dever.net.close(sockets.server)
answer = started == 1 and received }
writeFailed(value: dever.io.WriteResult.Done) (answer: Bool) recover("观察关闭别名") { answer = false }
writeFailed(value: dever.io.WriteResult.Failed(message)) (answer: Bool) recover("观察关闭别名") { answer = length(message) > 0 }
aliasClose() (answer: Bool) { sockets = pair()
alias = sockets.client
dever.net.close(alias)
answer = writeFailed(result(dever.net.write(sockets.client, dever.bytes.fromText("x"))))
dever.net.close(sockets.server) }
nullable() (socket: dever.system.Socket?) { socket = null }
invalid() () { socket = dever.net.connectTimeout("localhost", 80, 1000) }