Issue #9: implement worker frame protocol
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
using MxGateway.Contracts;
|
||||
|
||||
namespace MxGateway.Server.Workers;
|
||||
|
||||
public sealed class WorkerFrameProtocolOptions
|
||||
{
|
||||
public const int DefaultMaxMessageBytes = 16 * 1024 * 1024;
|
||||
|
||||
public WorkerFrameProtocolOptions(string sessionId)
|
||||
: this(
|
||||
sessionId,
|
||||
GatewayContractInfo.WorkerProtocolVersion,
|
||||
DefaultMaxMessageBytes)
|
||||
{
|
||||
}
|
||||
|
||||
public WorkerFrameProtocolOptions(
|
||||
string sessionId,
|
||||
uint protocolVersion,
|
||||
int maxMessageBytes)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(sessionId))
|
||||
{
|
||||
throw new WorkerFrameProtocolException(
|
||||
WorkerFrameProtocolErrorCode.InvalidConfiguration,
|
||||
"Worker frame protocol requires a session id.");
|
||||
}
|
||||
|
||||
if (protocolVersion == 0)
|
||||
{
|
||||
throw new WorkerFrameProtocolException(
|
||||
WorkerFrameProtocolErrorCode.InvalidConfiguration,
|
||||
"Worker frame protocol requires a non-zero protocol version.");
|
||||
}
|
||||
|
||||
if (maxMessageBytes <= 0)
|
||||
{
|
||||
throw new WorkerFrameProtocolException(
|
||||
WorkerFrameProtocolErrorCode.InvalidConfiguration,
|
||||
"Worker frame protocol max message size must be greater than zero.");
|
||||
}
|
||||
|
||||
SessionId = sessionId;
|
||||
ProtocolVersion = protocolVersion;
|
||||
MaxMessageBytes = maxMessageBytes;
|
||||
}
|
||||
|
||||
public string SessionId { get; }
|
||||
|
||||
public uint ProtocolVersion { get; }
|
||||
|
||||
public int MaxMessageBytes { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user