Commit graph CultLib/src/GameCult.Networking/CultNetSchemaClient.cs
Author SHA1 Message Date
Libby
541d734675 C#: a forward is retryable only when provably not sent; unconfirmed otherwise; refusals carry fixed text
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
CultNetWriteNotSentException names the pre-send boundary (connect, hello, no endpoint,
or a send port that proves nothing was written). Every other forwarding failure keeps
the session claim. ForUnownedSchema and the routing refusal no longer carry exception text.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 15:02:56 +00:00
Libby
09e6a528b8 C#: SubmitDocumentAsync and the shard write forwarder complete on the result frame
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 6m41s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 32s
CultNetWriteCompletion.SendAndAwaitResultAsync registers a refusal handler before
the send, then waits a result window (default 500 ms; CultMeshClientOptions.
SubmitResultWindow, CultNetSchemaWriteForwarderOptions.ResultWindow). A
cultnet.error.v0 inside it rejects with the new CultNetWriteRefusedException
(Code: write_not_authorized, message_invalid, ...) whatever its order against the
send or transport ack; a send returning no longer completes the write. The
forwarder's refusal now throws on the same path as an unreachable primary, so
CultNetDatabaseServer.TryForwardPutAsync/DeleteAsync no longer report a refused
forward as done. Raw send primitives (C# schema client/session, Python, Kotlin)
carry the doc line: fire-and-forget, an ack or a return is not admission, read the
result frame.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 13:24:27 +00:00
Meta Vens
cb7f9e8fa2 Retain native clients across provider routes 2026-08-18 03:34:59 +02:00
Meta Vens
c16163a82f Modularize CultMesh transport planes 2026-07-19 17:57:26 +01:00
Meta Vens
25231429c1 Drain RUDP content traffic without per-packet sleeps 2026-07-16 02:36:48 +01:00
Meta Vens
fbee58eba1 Prevent RUDP snapshot traffic from starving peers 2026-07-12 19:42:16 +01:00
Meta Vens
b6c596866c Bind loopback RUDP clients to loopback 2026-07-12 12:54:49 +01:00
Meta Vens
5f1583b3c0 Close RUDP schema client sessions cleanly 2026-07-12 10:53:05 +01:00
Meta Vens
6be0573ffc Surface CultNet background transport failures 2026-07-12 10:33:02 +01:00
Meta Vens
c398bad186 Deliver large scoped snapshots reliably 2026-07-12 08:42:08 +01:00
Meta Vens
114fb86b0f Add C# RUDP schema client adoption path 2026-06-17 13:27:56 +01:00
Meta Vens
4f69d11644 Add C# schema client transport port 2026-06-16 14:22:41 +01:00