示例#1
0
        public bool ExecuteConditionalAction()
        {
            // first ping
            var msgPing = ChatMessageFactory.CreateDefault(Command.REQ_PING, Participant.CLIENT);
            var dealer  = (DealerSocket)messageBroker.Socket;

            messageBroker.Client_SendMsg(dealer, msgPing);
            ConsoleUI.ShowTextLine(Phrase.AskUsername);

            return(true);
        }
        public bool ExecuteConditionalAction()
        {
            // validating exit (to broadcast)
            if (chatMessage.Validate(validExit).IsValid)
            {
                UserSession chatUserReg = new UserSession(rawAddress.Replace("\0", ""));
                var         router      = (RouterSocket)messageBroker.Socket;

                var msgBroadcastExit = ChatMessageFactory.CreateDefault(Command.BROADCAST_END_SESSION, Participant.SERVER, chatUserReg);

                messageBroker.Server_BroadcastMessage(messageBroker.ChatRoom.ChatUserList, router, rawAddress, msgBroadcastExit);

                return(true);
            }

            return(false);
        }
示例#3
0
        public bool ExecuteConditionalAction()
        {
            // last ping and good bye!
            var msgBye = ChatMessageFactory.CreateDefault(Command.REQ_END_SESSION, Participant.CLIENT, this.messageBroker.ChatRoom.UserSession);
            var dealer = (DealerSocket)messageBroker.Socket;

            messageBroker.Client_SendMsg(dealer, msgBye);

            int numChars = this.messageBroker.ChatRoom.UserSession.HasUserName() ? this.messageBroker.ChatRoom.UserSession.UserName.Length + 3 : 10;

            for (int i = 0; i < numChars; i++)
            {
                // backspace
                Console.Write("\b");
            }

            ConsoleUI.ShowTextLine(Phrase.EndSessionUsername);

            return(true);
        }
示例#4
0
        private void ConsoleLoop()
        {
            ConsoleUI.ShowText(Phrase.UsernamePrefix, new[] { userSession.UserName });
            string msgChat = Console.ReadLine();

            while (msgChat != "/exit")
            {
                var chatToServer = ChatMessageFactory.CreateDefault(Command.REQ_CHAT, Participant.CLIENT, userSession);
                chatToServer.Content = msgChat;

                broker.Client_SendMsg(dealer, chatToServer);

                ConsoleUI.ShowText(Phrase.UsernamePrefix, new[] { userSession.UserName });
                msgChat = Console.ReadLine();
            }

            // exit notification
            new CommandsInvoker(new CmdNotifyExitClient(broker)).Invoke();

            Thread.Sleep(2000);
        }
        public bool ExecuteConditionalAction()
        {
            // New user registration
            if (chatMessage.Validate(_validRegistration).IsValid)
            {
                UserSession chatUserReg = new UserSession(rawAddress.Replace("\0", ""));
                int         ix          = messageBroker.ChatRoom.ChatUserList.IndexOf(rawAddress);
                chatUserReg.SetUserName($"{chatMessage.UserName}{ix}");

                var msgResponseRegistration = ChatMessageFactory.CreateDefault(Command.REQ_REGISTER_USERNAME, Participant.SERVER, chatUserReg);

                var router = (RouterSocket)messageBroker.Socket;

                messageBroker.Server_SendReply(router, new NetMQFrame(rawAddress), msgResponseRegistration);

                var msgBroadcastNewUser = ChatMessageFactory.CreateDefault(Command.BROADCAST_NEW_USER, Participant.SERVER, chatUserReg);

                messageBroker.Server_BroadcastMessage(messageBroker.ChatRoom.ChatUserList, router, rawAddress, msgBroadcastNewUser);

                return(true);
            }

            return(false);
        }
示例#6
0
        public bool ExecuteConditionalAction()
        {
            var regUserCmd = ChatMessageFactory.CreateDefault(Command.REQ_REGISTER_USERNAME,
                                                              Participant.CLIENT, messageBroker.ChatRoom.UserSession);

            ConsoleUI.ShowText(Phrase.GuestPrefix);
            regUserCmd.UserName = Console.ReadLine();
            while (!regUserCmd.Validate(validUserName).IsValid)
            {
                ConsoleUI.ShowTextLine(Phrase.InvalidUsernameFormat);
                ConsoleUI.ShowText(Phrase.GuestPrefix);
                regUserCmd.UserName = Console.ReadLine().ToLower();
            }

            IEnumerable <string> errors;

            if (!regUserCmd.TryValidate(validRegistration, out errors))
            {
                ThrowExHelper.ThrowException($"ERROR:Invalid registration, ChatMessage:{regUserCmd}");
            }

            var dealer = (DealerSocket)messageBroker.Socket;

            //messageBroker.Client_SendMsg(messageBroker.ChatRoom.UserSession.StrUserGuid, dealer, regUserCmd);
            messageBroker.Client_SendMsg(dealer, regUserCmd);

            // waiting the username update from server..
            while (string.IsNullOrWhiteSpace(messageBroker.ChatRoom.UserSession.UserName))
            {
                Thread.Sleep(100);
            }

            ConsoleUI.ShowTextLine(Phrase.ThankYouNewUsername, new[] { messageBroker.ChatRoom.UserSession.UserName });

            return(true);
        }