Beispiel #1
0
        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;
            }
            }
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
 public MessageReceivedEventArgs(string author, string message, InterfaceType type, BaseAgenda agenda, DateTime time)
 {
     Type    = type;
     Author  = author;
     Message = message;
     Agenda  = agenda;
     Time    = time;
 }
Beispiel #4
0
        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!");
            }
        }
Beispiel #5
0
        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
                });
            });
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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!");
            }
        }