Class ObservableQueryHubMessage

Namespace
Cratis.Arc.Queries
Assembly
Cratis.Arc.Core.dll

Represents a protocol message exchanged over the ObservableQueryDemultiplexer WebSocket or SSE connection.

public class ObservableQueryHubMessage
Inheritance
ObservableQueryHubMessage
Inherited Members
Extension Methods

Constructors

ObservableQueryHubMessage()

Represents a protocol message exchanged over the ObservableQueryDemultiplexer WebSocket or SSE connection.

[JsonConstructor]
public ObservableQueryHubMessage()

Properties

KeepAliveIntervalMs

Gets or sets the server's keep-alive interval in milliseconds, or 0 when keep-alive is disabled.

public long? KeepAliveIntervalMs { get; set; }

Property Value

long?

Remarks

Only set on Connected messages. Clients derive their idle threshold from this rather than assuming the default interval, so that reconfiguring the server cannot leave a client declaring healthy connections dead.

Payload

Gets or sets the message payload. Interpretation depends on Type:

public object? Payload { get; set; }

Property Value

object

QueryId

Gets or sets the client-assigned query identifier used to correlate subscriptions with their result updates.

public string? QueryId { get; set; }

Property Value

string

Revision

Gets or sets the optional positive subscription revision used to order operations and reject stale messages.

public long? Revision { get; set; }

Property Value

long?

SupportsSubscriptionRevisions

Gets or sets whether the server supports revision-aware subscription operations and result frames.

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
public bool SupportsSubscriptionRevisions { get; set; }

Property Value

bool

Remarks

Set to true on Connected messages from capable servers. The field is absent when communicating with older servers.

Timestamp

Gets or sets the Unix millisecond timestamp, used for ping/pong latency tracking.

public long? Timestamp { get; set; }

Property Value

long?

Type

Gets or sets the type of message.

[JsonConverter(typeof(JsonStringEnumConverter<ObservableQueryHubMessageType>))]
public ObservableQueryHubMessageType Type { get; set; }

Property Value

ObservableQueryHubMessageType

Methods

CreateConnected(string, TimeSpan)

Creates a Connected message carrying the server-assigned connection identifier, the server's keep-alive interval, and its subscription revision capability.

public static ObservableQueryHubMessage CreateConnected(string connectionId, TimeSpan keepAliveInterval)

Parameters

connectionId string

The unique identifier for the observable query hub connection.

keepAliveInterval TimeSpan

The server's keep-alive interval. Zero or negative means keep-alive is disabled.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateError(string, string)

Creates an Error message.

public static ObservableQueryHubMessage CreateError(string queryId, string errorMessage)

Parameters

queryId string

The query identifier.

errorMessage string

The error message.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateError(string, string, long?)

Creates a revision-aware Error message.

public static ObservableQueryHubMessage CreateError(string queryId, string errorMessage, long? revision)

Parameters

queryId string

The query identifier.

errorMessage string

The error message.

revision long?

The optional subscription revision.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreatePing()

Creates a Ping message with the current UTC timestamp.

public static ObservableQueryHubMessage CreatePing()

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreatePong(long)

Creates a Pong message.

public static ObservableQueryHubMessage CreatePong(long timestamp)

Parameters

timestamp long

The timestamp echoed from the original ping.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateQueryResult(string, QueryResult)

Creates a QueryResult message.

public static ObservableQueryHubMessage CreateQueryResult(string queryId, QueryResult result)

Parameters

queryId string

The query identifier.

result QueryResult

The query result payload.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateQueryResult(string, QueryResult, long?)

Creates a revision-aware QueryResult message.

public static ObservableQueryHubMessage CreateQueryResult(string queryId, QueryResult result, long? revision)

Parameters

queryId string

The query identifier.

result QueryResult

The query result payload.

revision long?

The optional subscription revision.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateUnauthorized(string)

Creates an Unauthorized message.

public static ObservableQueryHubMessage CreateUnauthorized(string queryId)

Parameters

queryId string

The query identifier.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.

CreateUnauthorized(string, long?)

Creates a revision-aware Unauthorized message.

public static ObservableQueryHubMessage CreateUnauthorized(string queryId, long? revision)

Parameters

queryId string

The query identifier.

revision long?

The optional subscription revision.

Returns

ObservableQueryHubMessage

A populated ObservableQueryHubMessage.