20 MOQSESS_SETUP_HALF = 1,
21 MOQSESS_ESTABLISHED = 2,
27 MOQSESS_EV_SENT_SETUP = 0,
28 MOQSESS_EV_RECV_SETUP = 1,
29 MOQSESS_EV_CTRL_CLOSED = 2,
30 MOQSESS_EV_UNKNOWN_UNI = 3,
31 MOQSESS_EV_SECOND_CTRL = 4,
32 MOQSESS_EV_MALFORMED_CTRL = 5,
33 MOQSESS_EV_SEND_GOAWAY = 6,
34 MOQSESS_EV_RECV_GOAWAY = 7,
35 MOQSESS_EV_RECV_GOAWAY_BAD_URI = 8,
36 MOQSESS_EV_GOAWAY_TIMEOUT = 9,
37 MOQSESS_EV_BAD_FIRST = 10,
39 MOQSESS_EV_BAD_REQUEST_ID = 11,
44#define MOQSESS_CLOSE_NONE 0
47#define MOQSESS_CLOSE_PROTOCOL_VIOLATION 1
49#define MOQSESS_CLOSE_INVALID_REQUEST_ID 2
51#define MOQSESS_CLOSE_GOAWAY_TIMEOUT 3
53#define MOQSESS_CLOSE_NO_ERROR 4
101 MOQSUB_ESTABLISHED = 2,
102 MOQSUB_TERMINATED = 3,
107 MOQSUB_ROLE_SUBSCRIBER = 0,
108 MOQSUB_ROLE_PUBLISHER = 1,
117 MOQSUB_EV_UPDATE = 3,
118 MOQSUB_EV_STOP_SENDING = 4,
119 MOQSUB_EV_PUBLISH_DONE = 5,
120 MOQSUB_EV_FIN_RESP = 6,
121 MOQSUB_EV_FIN_REQ = 7,
126#define MOQSUB_TERM_NONE 0
128#define MOQSUB_TERM_STOP_SENDING 1
130#define MOQSUB_TERM_PUBLISH_DONE 2
132#define MOQSUB_TERM_ERROR 3
134#define MOQSUB_TERM_EARLY_FIN 4
137#define MOQSUB_TERM_DUP_RESPONSE 5
moqsub_state
One subscription's state (draft 5.1: SUBSCRIBE/PUBLISH -> response -> termination,...
Definition moqsess.h:98
int moqsub_step(moqsub *s, moqsub_event ev)
Apply one event.
int moqsess_suppress_own_requests(const moqsess *s)
True if this endpoint SHOULD NOT initiate new requests of its own (GOAWAY received on the control str...
moqsess_event
Events the run layer feeds in as it decodes the wire.
Definition moqsess.h:26
int moqsub_terminated(const moqsub *s)
True once Terminated (state machine done; s->term_reason explains why).
int moqsess_established(const moqsess *s)
True once SETUP is fully established (both directions done).
moqsess_state
Session state (draft 3.3: each endpoint opens one uni control stream and sends SETUP first; the sessi...
Definition moqsess.h:18
int moqsess_should_buffer(const moqsess *s)
True while SETUP has not yet completed both directions: requests and data streams that arrive now mus...
void moqsess_init(moqsess *s)
Zero-initialize (equivalent to = {0}; provided for callers that build the struct at runtime rather th...
int moqsess_step(moqsess *s, moqsess_event ev)
Apply one event.
int moqsub_may_forward(const moqsub *s, int forward)
Forward State gate (5.1 / SS10.2 FORWARD parameter, subscribe notes decision 9): Object sending towar...
int moqsess_may_reject_request(const moqsess *s)
True if a newly arriving request MAY be rejected with GOING_AWAY (either side sent or received GOAWAY...
moqsub_role
Which side opened the request stream with its First message.
Definition moqsess.h:106
void moqsub_init(moqsub *s, moqsub_role role)
Initialize a fresh subscription: role is fixed by which message (SUBSCRIBE vs PUBLISH) opened the req...
moqsub_event
Events moqsub_step applies, each sent or received on the request stream.
Definition moqsess.h:113
int moqsub_may_send_publish_done(usz open_stream_count)
PUBLISH_DONE precondition (draft 8.9): a publisher may only send PUBLISH_DONE once every data stream ...
int moqsub_established(const moqsub *s)
True once the subscription is Established (SS10.6/10.9 semantics apply: REQUEST_UPDATE legal,...
Session state including the GOAWAY-lifecycle flags (5.1: GOAWAY may be sent/received at most once per...
Definition moqsess.h:58
int goaway_recv
1 once the peer's GOAWAY arrived; a second one is a violation.
Definition moqsess.h:64
moqsess_state state
Establishment state.
Definition moqsess.h:60
int close_reason
MOQSESS_CLOSE_* once state == MOQSESS_CLOSED, else 0.
Definition moqsess.h:66
int goaway_sent
1 once this endpoint sent GOAWAY.
Definition moqsess.h:62
One subscription's lifecycle state plus the flags moqsub_step keeps.
Definition moqsess.h:140
int session_fault
1 after a duplicate response: a session-level violation.
Definition moqsess.h:157
int pending_ok
Publisher-initiated: 1 when PUBLISH_DONE came before any response, so a PUBLISH_OK is still owed.
Definition moqsess.h:149
moqsub_state state
Lifecycle state.
Definition moqsess.h:142
moqsub_role role
Side whose First message opened the request stream.
Definition moqsess.h:144
int fin_resp
1 once the responder's direction closed (FIN).
Definition moqsess.h:153
int fin_req
1 once the requester's direction closed (FIN).
Definition moqsess.h:151
int responded
Exactly-one-response gate: 1 once OK or ERROR was seen.
Definition moqsess.h:146
int term_reason
MOQSUB_TERM_* once state == MOQSUB_TERMINATED, else 0.
Definition moqsess.h:155
u64 usz
unsigned size (size_t equivalent)
Definition types.h:20