Task IGangMember.ConnectAsync( IGangController controller, Func <Task> _onDisconnectAsync) { return(Task.Run(async() => { do { using var data = new MemoryStream(); WebSocketReceiveResult result; do { result = await _webSocket .ReceiveAsync(_buffer, CancellationToken.None); if (result.MessageType != WebSocketMessageType.Binary) { break; } await data.WriteAsync(_buffer.AsMemory(0, result.Count)); } while (!result.EndOfMessage); if (data.Length > 0) { await controller.ReceiveAsync(data.ToArray()); } } while (_webSocket.State == WebSocketState.Open); if (_onDisconnectAsync != null) { await _onDisconnectAsync(); } })); }
public static IGangMember GetMember( this IGangController controller, byte[] memberId ) { return(controller.GetGang().MemberById(memberId)); }
public static Task DisconnectAsync( this IGangController controller, string memberId, string reason = null) { return(controller.DisconnectAsync(memberId.GangToBytes(), reason)); }
Task IGangMember.ConnectAsync( IGangController controller, Func <Task> onDisconnectAsync) { Controller = controller; OnDisconnectAsync = onDisconnectAsync; Connected = true; return(Task.CompletedTask); }
async Task IGangMember.ConnectAsync( IGangController controller, Func <Task> onDisconnectAsync) { _onDisconnectAsync = onDisconnectAsync; Controller = controller; await OnConnectAsync(); }
public static Task SendCommandAsync( this IGangController controller, object data, IEnumerable <byte[]> memberIds = null, uint?replySequence = null) { if (data is null) { throw new ArgumentNullException(nameof(data)); } return(controller.SendCommandAsync( data.GetType().GetCommandTypeName(), data, memberIds, replySequence)); }