← All compilation units

Flyology.HTTP.Server.SSE_Handlers

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