public void Send <TClass>(BaseContainer <TClass> message, BaseAgenda agenda) { Container messageRequest = message.GetContainer(); switch (agenda.Type) { case ChannelType.General: { foreach (KeyValuePair <Guid, WsConnection> connection in _connections.Where(author => author.Value.Login != message.Author)) { connection.Value.Send(messageRequest); } break; } case ChannelType.Private: { if (_connections.Values.Count == 0) { return; } _connections.Values.FirstOrDefault(item => item.Login == ((PrivateAgenda)agenda).Target)?.Send(messageRequest); break; } } }
public void Send <TClass>(BaseContainer <TClass> message, BaseAgenda agenda) { byte[] messageBroadcast = ConvertToBytes(message.GetContainer()); switch (agenda.Type) { case ChannelType.General: { foreach (KeyValuePair <IPEndPoint, TcpConnection> connection in _connections.Where(author => author.Value.Login != message.Author)) { connection.Value.Send(messageBroadcast); } break; } case ChannelType.Private: { if (_connections.Values.Count == 0) { return; } _connections.Values.FirstOrDefault(item => item.Login == ((PrivateAgenda)agenda).Target)?.Send(messageBroadcast); break; } case ChannelType.Group: throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } }
public MessageReceivedEventArgs(string author, string message, InterfaceType type, BaseAgenda agenda, DateTime time) { Type = type; Author = author; Message = message; Agenda = agenda; Time = time; }
public static BaseContainer <string> GetSortedMessage(MessageReceivedEventArgs eventArgs) { string author = eventArgs.Author; string message = eventArgs.Message; InterfaceType type = eventArgs.Type; BaseAgenda agenda = eventArgs.Agenda; switch (agenda.Type) { case ChannelType.General: return(new GeneralMessageContainer(author, message, type)); case ChannelType.Private: return(new PrivateMessageContainer(author, ((PrivateAgenda)agenda).Target, message, type)); case ChannelType.Group: default: throw new ArgumentOutOfRangeException("Get sorted message without type!"); } }
private async void EventSaveAsync(MessageEventLogContainer messageEvent, BaseAgenda agenda) { await Task.Delay(1000); await Task.Run( () => { _wsServer.Send(messageEvent, agenda); _tcpServer.Send(messageEvent, agenda); _dataBaseManager.CreateEventAsync( new Event { IsSuccessfully = messageEvent.Content.IsSuccessfully, Message = messageEvent.Content.Text, Time = DateTime.Now, UserName = messageEvent.Content.SenderName, Type = messageEvent.Request }); }); }
private void SendCurrentServer <TContainer>(InterfaceType type, BaseContainer <TContainer> message, BaseAgenda agenda) { switch (type) { case InterfaceType.WebSocket: _tcpServer.Send(message, agenda); break; case InterfaceType.Tcp: _wsServer.Send(message, agenda); break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
public static BaseContainer <string> GetSortedMessage(string author, string message, InterfaceType type, BaseAgenda agenda) { switch (agenda.Type) { case ChannelType.General: return(new GeneralMessageContainer(author, message, type)); case ChannelType.Private: return(new PrivateMessageContainer(author, ((PrivateAgenda)agenda).Target, message, type)); case ChannelType.Group: default: throw new ArgumentOutOfRangeException("Get sorted message without type!"); } }