public WebSocketClient( Uri url, WebSocketMessageSender sender = null, ReceiverMemoryConfig receiverConfig = null, ILogger logger = null, string name = "CLIENT", Encoding messageEncoding = null, Func <ClientWebSocket> clientFactory = null) { if (!ValidationUtils.ValidateInput(url)) { throw new ArgumentNullException(nameof(url)); } Url = url; Name = name; _logger = logger; MessageEncoding = messageEncoding ?? Encoding.UTF8; receiverConfig = receiverConfig ?? ReceiverMemoryConfig.Default; //cannot use =?? in unity _memoryPool = new MemoryPool(receiverConfig.InitialMemorySize, receiverConfig.MarginSize, logger); _clientFactory = clientFactory ?? DefaultClientFactory; _webSocketMessageSender = sender?.AsCore() ?? new SingleQueueSenderCore(); _webSocketMessageSender.SetConfig(MessageEncoding, logger, Name); _webSocketMessageSender .ExceptionHappenedInSending .Subscribe(x => { _backgroundExceptionQueue.Enqueue(x); Dispose(); }); }
public WebSocketClient( WebSocket connectedSocket, WebSocketMessageSender sender = null, ReceiverMemoryConfig receiverConfig = null, ILogger logger = null, string name = "CLIENT", Encoding messageEncoding = null) { _socket = connectedSocket ?? throw new ArgumentNullException(nameof(connectedSocket)); Url = null; _clientFactory = null; Name = name; _logger = logger; MessageEncoding = messageEncoding ?? Encoding.UTF8; receiverConfig = receiverConfig ?? ReceiverMemoryConfig.Default; _memoryPool = new MemoryPool(receiverConfig.InitialMemorySize, receiverConfig.MarginSize, logger); _webSocketMessageSender = sender?.AsCore() ?? new SingleQueueSenderCore(); _webSocketMessageSender.SetConfig(MessageEncoding, logger, Name); _webSocketMessageSender .ExceptionHappenedInSending .Subscribe(x => { _backgroundExceptionQueue.Enqueue(x); Dispose(); }); }
public SingleQueueSender(int capacity) { if (0 <= capacity) { var channel = Channel.CreateBounded <SentMessage>(new BoundedChannelOptions(capacity) { SingleReader = true, SingleWriter = false }); _core = new SingleQueueSenderCore(channel); } else { _core = new SingleQueueSenderCore(); } }
public BinaryOnlySender(int capacity) { if (0 < capacity) { var channel = Channel.CreateBounded <ArraySegment <byte> >(new BoundedChannelOptions(capacity) { SingleReader = true, SingleWriter = false }); _core = new BinaryOnlySenderCore(channel); } else { _core = new BinaryOnlySenderCore(); } }
public DoubleQueueSender(int binaryQueueCapacity, int textQueueCapacity) { Channel <ArraySegment <byte> > binaryMessageQueue = null; Channel <ArraySegment <byte> > textMessageQueue = null; if (0 < binaryQueueCapacity) { binaryMessageQueue = Channel.CreateBounded <ArraySegment <byte> >(new BoundedChannelOptions(binaryQueueCapacity) { SingleReader = true, SingleWriter = false }); } if (0 < textQueueCapacity) { textMessageQueue = Channel.CreateBounded <ArraySegment <byte> >(new BoundedChannelOptions(textQueueCapacity) { SingleReader = true, SingleWriter = false }); } _core = new DoubleQueueSenderCore(binaryMessageQueue, textMessageQueue); }
public SingleQueueSender(Channel <SentMessage> sentMessageQueue = null) { _core = new SingleQueueSenderCore(sentMessageQueue); }
public BinaryOnlySender(Channel <ArraySegment <byte> > sentMessageQueue = null) { _core = new BinaryOnlySenderCore(sentMessageQueue); }
public DoubleQueueSender(Channel <ArraySegment <byte> > binaryMessageQueue = null, Channel <ArraySegment <byte> > textMessageQueue = null) { _core = new DoubleQueueSenderCore(binaryMessageQueue, textMessageQueue); }