コード例 #1
0
        private void HandlingAskUser(AskConnectUser ask)
        {
            List <string> users = new List <string>();

            foreach (KeyValuePair <string, TcpClient> client in _DestPrive)
            {
                if (client.Key.Equals(ask.asker.Username) == false)
                {
                    users.Add(client.Key);
                }
            }

            if (users.Count <= 0)
            {
                throw new NoUserConnectedException("No other user are connected !");
            }


            Net.SendServerCommunication(_connection.GetStream(), new Response(ask, users));
        }
コード例 #2
0
        public void HomeMenu()
        {
            List <string> choices = new List <string>();

            if (_client.User == null)
            {
                choices.Add("Log In");
                choices.Add("Sign in");
            }
            else
            {
                choices.Add("Disconnect");
                choices.Add("Join a new Topic");
                choices.Add("Create a new Topic");

                choices.Add("Select a Topic" + " ->");

                choices.Add("Select a User" + " ->");
            }

            choices.Add("<- Exit");

            ChoiceSelection.Choice choice = new ChoiceSelection.Choice("Welcome to the Home Menu, what do you want to do ?", choices);

            int menu = ChoiceSelection.GetChoice(choice, (this._client.User == null) ? null : this._client.User.Username, null);

            if (_client.User == null)
            {
                switch (menu)
                {
                case 0:

                    Console.Clear();
                    ConsoleManager.PrintTrack();

                    string username = ConsoleManager.Read("Please enter your username : "******"Username = "******"\nPlease enter your password : "******"I'm connected as " + username);
                            }

                            break;

                        case CommunicationException ce:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, ce.Message);

                            break;
                        }

                        HomeMenu();
                    }).OnResponse;


                    break;


                case 1:

                    Console.Clear();
                    ConsoleManager.PrintTrack();

                    username = ConsoleManager.Read("Please enter a username : "******"Username = "******"\nPlease enter a password : "******"Username = "******"\nPassword = "******"\nPlease enter a email : ");


                    //On cherche à créer un User
                    request = new SignIn(username, password, email);
                    Net.SendClientCommunication(this._comm.GetStream(), request);

                    ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) =>
                    {
                        switch (response)
                        {
                        case Success success:
                            //Si la réponse est Success, alors la création s'est bien effectué
                            ConsoleManager.TrackWriteLine(ConsoleColor.Green, success.ToString());
                            break;

                        case CommunicationException error:
                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message);
                            break;

                        default:
                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while creating new User : "******"Please enter the name of the Topic : ");


                    Console.Clear();
                    ConsoleManager.PrintTrack();

                    string password = ConsoleManager.Read("Topic name = " + topic_name + "\nPlease enter the password of the Topic : ");


                    //We tried to join the first Topic found
                    ClientCommunication request = new Join(_client.User, topic_name, password);
                    Net.SendClientCommunication(_comm.GetStream(), request);
                    ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) =>
                    {
                        //On écoute la réponse

                        switch (response)
                        {
                        case Topic t:

                            //Si la réponse est bien un Topic, alors le join s'est bien effectué
                            ConsoleManager.TrackWriteLine(ConsoleColor.Green, "Connection to the Topic `" + t.Topic_name + "` ! ");

                            break;


                        case CommunicationException error:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message);

                            break;


                        default:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while joining Topic : " + response);

                            break;
                        }

                        HomeMenu();
                    }).OnResponse;


                    break;


                case 2:

                    Console.Clear();
                    ConsoleManager.PrintTrack();

                    topic_name = ConsoleManager.Read("Please enter the name of the new Topic : ");


                    Console.Clear();
                    ConsoleManager.PrintTrack();

                    password = ConsoleManager.Read("Topic name = " + topic_name + "\nPlease enter the password of the new Topic : ");


                    //We tried to create the Topic
                    request = new Creation(topic_name, _client.User, password);
                    Net.SendClientCommunication(_comm.GetStream(), request);
                    ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) =>
                    {
                        //On écoute la réponse

                        switch (response)
                        {
                        case Topic topic:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Green, "New Topic `" + topic.Topic_name + "` created !");

                            break;


                        case CommunicationException error:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message);

                            break;


                        default:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while creating Topic : " + response);

                            break;
                        }

                        HomeMenu();
                    }).OnResponse;

                    break;


                case 3:

                    SelectTopicMenu();

                    break;


                case 4:

                    request = new AskConnectUser(this._client.User);
                    Net.SendClientCommunication(this._comm.GetStream(), request);

                    ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) =>
                    {
                        switch (response)
                        {
                        case List <string> users_names:

                            SelectClientMenu(users_names);

                            break;


                        case NoUserConnectedException e:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, e.Message);

                            HomeMenu();

                            break;


                        default:

                            ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while acquiring all connected Users " + response);

                            break;
                        }
                    }).OnResponse;

                    break;


                case 5:

                    this._client.KillClient();

                    break;
                }
            }
        }