58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Grpc.Core;
|
|
using MxGateway.Contracts.Proto;
|
|
|
|
namespace MxGateway.Client;
|
|
|
|
internal interface IMxGatewayClientTransport
|
|
{
|
|
/// <summary>
|
|
/// Gets the client configuration options.
|
|
/// </summary>
|
|
MxGatewayClientOptions Options { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the underlying gRPC client, if available.
|
|
/// </summary>
|
|
MxAccessGateway.MxAccessGatewayClient? RawClient { get; }
|
|
|
|
/// <summary>
|
|
/// Opens a new gateway session.
|
|
/// </summary>
|
|
/// <param name="request">Session open request.</param>
|
|
/// <param name="callOptions">gRPC call options.</param>
|
|
/// <returns>The session open reply.</returns>
|
|
Task<OpenSessionReply> OpenSessionAsync(
|
|
OpenSessionRequest request,
|
|
CallOptions callOptions);
|
|
|
|
/// <summary>
|
|
/// Closes an open gateway session.
|
|
/// </summary>
|
|
/// <param name="request">Session close request.</param>
|
|
/// <param name="callOptions">gRPC call options.</param>
|
|
/// <returns>The session close reply.</returns>
|
|
Task<CloseSessionReply> CloseSessionAsync(
|
|
CloseSessionRequest request,
|
|
CallOptions callOptions);
|
|
|
|
/// <summary>
|
|
/// Invokes an MXAccess command on the session.
|
|
/// </summary>
|
|
/// <param name="request">The command request.</param>
|
|
/// <param name="callOptions">gRPC call options.</param>
|
|
/// <returns>The command reply.</returns>
|
|
Task<MxCommandReply> InvokeAsync(
|
|
MxCommandRequest request,
|
|
CallOptions callOptions);
|
|
|
|
/// <summary>
|
|
/// Streams events from the session.
|
|
/// </summary>
|
|
/// <param name="request">The stream events request.</param>
|
|
/// <param name="callOptions">gRPC call options.</param>
|
|
/// <returns>An async enumerable of events.</returns>
|
|
IAsyncEnumerable<MxEvent> StreamEventsAsync(
|
|
StreamEventsRequest request,
|
|
CallOptions callOptions);
|
|
}
|