Description
Supplies an optional sole-writer SSE lifecycle above the raw SSE API.
Cancelled
function Cancelled (Item : Session) return Boolean
Report owner-side failure or disconnect cancellation.
Parameters
- Item
SSE session
Return value
True when Run requested producer cancellation
Close
procedure Close (Item : in out Session)
Close producer admission after queued events drain.
Parameters
- Item
SSE session
Default_Session_Bytes
Default_Session_Bytes : constant := 256 * 1_024;
Default aggregate payload bytes retained by one session.
Event_Value
type Event_Value is record
Data : Ada.Strings.Unbounded.Unbounded_String;
Event : Ada.Strings.Unbounded.Unbounded_String;
Id : Ada.Strings.Unbounded.Unbounded_String;
Retry : Natural := 0;
Include_Id : Boolean := False;
Include_Retry : Boolean := False;
end record;
One queued server-sent event.
Record fields
- Data
Event data
- Event
Optional event type
- Id
Optional event identifier
- Retry
Optional retry milliseconds
- Include_Id
Emit id even when Id is empty
- Include_Retry
Emit retry even when Retry is zero
Max_Queued_Message_Bytes
Max_Queued_Message_Bytes : constant := 64 * 1_024;
Maximum payload bytes retained by one queued event.
Publish
procedure Publish
(Item : in out Session;
Value : Event_Value;
Accepted : out Boolean)
Enqueue with backpressure, or return Accepted false after close.
Parameters
- Item
SSE session
- Value
Event value
- Accepted
Whether the event was queued
Publish_For
procedure Publish_For
(Item : in out Session;
Value : Event_Value;
Accepted : out Boolean;
Timeout : Duration;
Timed_Out : out Boolean;
Token : access Flyology.Cancellation.Token := null)
Enqueue with bounded, cancellation-aware backpressure.
Parameters
- Item
SSE session
- Value
Event value
- Accepted
Whether the event was queued
- Timeout
Maximum monotonic wait
- Timed_Out
Whether Timeout expired while the queue stayed full
- Token
Optional cancellation source
Run
procedure Run
(X : in out Applications.Exchange;
Item : in out Session;
Metric_Output : access Metrics.Sink'Class := null;
Idle_Quantum : Duration := 0.05;
Heartbeat : Duration := 15.0)
Own the connection, serialize all event writes, and drain until Close. A send failure closes the mailbox and signals producer cancellation.
Parameters
- X
Request exchange
- Item
SSE session
- Metric_Output
Optional lifecycle metric sink
- Idle_Quantum
Maximum wait before checking cancellation/deadline
- Heartbeat
Idle seconds before an SSE comment probes transport; zero disables heartbeats
Session
type Session
(Capacity : Positive := 32;
Byte_Limit : Positive := Default_Session_Bytes;
Budget : access Outbound_Budget := null) is limited private;
Request-scoped SSE session. Producer tasks may only call Publish, Try_Publish, Close, and Cancelled. Exactly one connection-owner task calls Run. The session must not outlive its Exchange handler scope.
Record fields
- Capacity
Maximum queued events
- Byte_Limit
Maximum retained payload bytes in this session
- Budget
Optional shared server/application outbound budget
Try_Publish
procedure Try_Publish
(Item : in out Session;
Value : Event_Value;
Accepted : out Boolean)
Attempt to enqueue without waiting.
Parameters
- Item
SSE session
- Value
Event value
- Accepted
Whether the event was queued