PushDeliverySender Class
One delivery pass of a stream's outbox over push (RFC 8935, carried by SSF 1.0 Section 6.1.1): each pending SET is POSTed to the receiver's endpoint in enqueue order, an accepted one is acknowledged out of the queue, and the pass stops at the first transient failure so order survives into the next pass - which is also where retry lives: the caller's schedule IS the backoff, and this type stays a single honest attempt.
public sealed class PushDeliverySenderInheritance System.Object → PushDeliverySender
Constructors
PushDeliverySender(HttpClient, IEventOutbox, ReceiverAddressPolicy, ILogger<PushDeliverySender>) Constructor
One delivery pass of a stream's outbox over push (RFC 8935, carried by SSF 1.0 Section 6.1.1): each pending SET is POSTed to the receiver's endpoint in enqueue order, an accepted one is acknowledged out of the queue, and the pass stops at the first transient failure so order survives into the next pass - which is also where retry lives: the caller's schedule IS the backoff, and this type stays a single honest attempt.
public PushDeliverySender(System.Net.Http.HttpClient httpClient, Abblix.SharedSignals.Transmitter.IEventOutbox outbox, Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy addressPolicy, Microsoft.Extensions.Logging.ILogger<Abblix.SharedSignals.Transmitter.PushDeliverySender> logger);Parameters
httpClient System.Net.Http.HttpClient
The client transmissions travel through.
outbox IEventOutbox
The queues being drained.
addressPolicy ReceiverAddressPolicy
Judges the receiver's address before anything is sent to it.
logger Microsoft.Extensions.Logging.ILogger<PushDeliverySender>
Carries the receiver's own reason for a refusal into this deployment's log.
Methods
PushDeliverySender.SendPendingAsync(StreamState, CancellationToken) Method
Sends what one stream has pending.
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.PushDeliveryPassOutcome> SendPendingAsync(Abblix.SharedSignals.Transmitter.StreamState stream, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));Parameters
stream StreamState
The stream whose queue is drained.
cancellationToken System.Threading.CancellationToken
Cancels the pass between transmissions.
Returns
System.Threading.Tasks.Task<PushDeliveryPassOutcome>
How the pass went: what was delivered, what the receiver rejected.
Remarks
A stream that is not enabled sends nothing except status announcements - holding is the pause's meaning (SSF 1.0 Section 8.1.2.1), and the announcement is the one item that must still go out, since Section 8.1.5 wants it with the receiver although the stop has already happened here.
A "400 Bad Request" carries the receiver's verdict in its body (RFC 8935 Section 2.3), and the verdict rather than the status decides what happens to the event. RFC 8935 Section 4 separates the two cases: a structural complaint "is likely to remain when retransmitting the same SET", so the event is dropped instead of poisoning the head of the queue, while a complaint about the transmitter's credentials or authorization "may be transient" and the event stays queued for a pass made after the deployment fixes what the receiver objected to.