예제 #1
0
 protected virtual void OnClientSendMessage(string cMessage) //brodcasted messages
 {
     ClientSendMessage?.Invoke(this, new ClientEventArgs()
     {
         clientMessageToSend = cMessage
     });                                                                                        //TODO all Send message
 }
 protected virtual void OnClientSendMessage(string cMessage) //транслируемые сообщения
 {
     ClientSendMessage?.Invoke(this, new ClientEventArgs()
     {
         clientMessageToSend = cMessage
     });
 }
예제 #3
0
파일: Client.cs 프로젝트: Groszczu/TcpChat
        // Metoda przetwarzająca polecania wprowadzone przez użytkownika.
        // Wykorzystuje metody statyczne sprawdzające czy wpisane polecenie jest poprawne.
        // W przypadku sukcesu wykonuje odpowiednią operację
        private void ProcessTag(string tag)
        {
            ClientCommand command = null;

            if (HelpTagValidator.Validate(tag))
            {
                PrintHelp();
                return;
            }

            if (ConnectionTagValidator.Validate(tag))
            {
                var ipAddress  = ConnectionTagValidator.GetIpAddress(tag);
                var portNumber = ConnectionTagValidator.GetPortNumber(tag);
                TryToConnect(ipAddress, portNumber);
                StartReceivingIfConnected();
                return;
            }

            if (QuitTagValidator.Validate(tag))
            {
                if (_client.Connected)
                {
                    command  = new ClientDisconnect(_id, _sessionId, _byteSender, _packetFormatter);
                    _quiting = true;
                }
                else
                {
                    QuitProgram();
                }
            }

            // Jeżeli klient nie jest podłączony z serwerem metoda ta kończy się, ponieważ operacje poniżej wymagają
            // połączenia z serwerem do ich realizacji
            if (!_client.Connected)
            {
                PrintInvalidInputOrConnectionRequiredMessage();
                return;
            }

            // Operacje wymagające połączenia z serwerem
            int destinationId;

            switch (tag)
            {
            case var input when IdTagValidator.Validate(input):
                command = new ClientGetId(_id, _sessionId, _byteSender, _packetFormatter);

                break;

            case var input when InviteTagValidator.Validate(input):
                destinationId = int.Parse(InviteTagValidator.GetMatchedValue(tag));

                command = new ClientInvite(_id, destinationId, _sessionId,
                                           _byteSender, _packetFormatter);
                break;

            case var input when AcceptTagValidator.Validate(input):
                destinationId = int.Parse(AcceptTagValidator.GetMatchedValue(tag));

                command = new ClientAcceptInvite(_id, destinationId, _sessionId,
                                                 _byteSender, _packetFormatter);
                break;

            case var input when DeclineTagValidator.Validate(input):
                destinationId = int.Parse(DeclineTagValidator.GetMatchedValue(tag));

                command = new ClientDeclineInvite(_id, destinationId, _sessionId,
                                                  _byteSender, _packetFormatter);
                break;

            case var input when MessageTagValidator.Validate(input):
                var messageToSend = MessageTagValidator.GetMatchedValue(tag);

                command = new ClientSendMessage(_id, _sessionId, _byteSender, _packetFormatter, messageToSend);
                break;

            case var input when CloseTagValidator.Validate(input):
                command = new ClientCloseAndOpenNewSessionCommand(_id, _sessionId, _byteSender, _packetFormatter);

                break;

            case var input when DisconnectTagValidator.Validate(input):
                command = new ClientDisconnect(_id, _sessionId, _byteSender, _packetFormatter);

                break;
            }

            if (command != null)
            {
                _commandHandler.Handle(command);
            }
            else
            {
                PrintInvalidInputMessage();
            }
        }