Ejemplo n.º 1
0
        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string requestUrl = null;
                requestUrl = _hostUrl + $"/api/jsstudygame/login?emailOrLogin={txtLogin.Text}&password={txtPassword.Text}";
                PlayerVM playerVM = ServerWorker.GetInfoFromServer <PlayerVM>(requestUrl);

                if (playerVM == null)
                {
                    MessageBox.Show("Enter correct data!", "Error");
                }
                else if (playerVM.Login == "none" && playerVM.Password == "none")
                {
                    MessageBox.Show("Incorrect data! Try again!");
                    return;
                }
                else
                {
                    Hide();
                    MainWindow.playerLogin    = playerVM.Login;
                    MainWindow.playerPassword = playerVM.Password;
                    main       = new MainWindow(_hostUrl);
                    main.Owner = this;
                    main.ShowDialog();
                    txtLogin.Text    = $"{MainWindow.playerLogin}";
                    txtPassword.Text = $"{MainWindow.playerPassword}";
                    Show();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Cannot connect to server!");
            }
        }
Ejemplo n.º 2
0
        private void CbIsAdmin_Checked(object sender, RoutedEventArgs e)
        {
            if (!(dgShow.SelectedItem is PlayerFullInfo))
            {
                dgShow.SelectedItem = null;
                return;
            }

            PlayerFullInfo playerFull = dgShow.SelectedItem as PlayerFullInfo;
            PlayerVM       player     = new PlayerVM()
            {
                Id       = playerFull.Id,
                Login    = playerFull.Login,
                Email    = playerFull.Email,
                Password = playerFull.Password,
                IsAdmin  = ((CheckBox)sender).IsChecked == true ? true : false
            };

            string url     = _hostUrl + "/api/jsstudygame/player";
            int    mistake = ServerWorker.ChangePlayerToServer(player, url);

            if (mistake <= 0)
            {
                MessageBox.Show("Adding error! Try again!");
                return;
            }
        }
Ejemplo n.º 3
0
        private void GetDataFromWebServer()
        {
            try
            {
                string requestUrl = _hostUrl + $"/api/jsstudygame/fullinfo?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}&page={_activePage}&sword={_sword}";
                _playersFullInfo = ServerWorker.GetInfoFromServer <ObservableCollection <PlayerFullInfo> >(requestUrl);

                if (_playersFullInfo == null)
                {
                    dgShow.ItemsSource = null;
                    return;
                }

                foreach (var item in _playersFullInfo)
                {
                    item.Photo = _hostUrl + $"/photos/{item.Photo}";
                }

                dgShow.ItemsSource = _playersFullInfo;
                MyPadding();
            }
            catch (Exception)
            {
                MessageBox.Show("Cannot connect to server!");
            }
        }
Ejemplo n.º 4
0
 public virtual void Dispose()
 {
     WorkerCancelToken.Cancel();
     WorkerCancelToken = null;
     ServerWorker?.Dispose();
     Socket?.Dispose();
 }
Ejemplo n.º 5
0
        public RegistrationPage(ServerWorker serverWorker, LoginPageViewModel loginPageViewModel)
        {
            InitializeComponent();
            BindingContext = new RegistrationPageViewModel(Navigation, serverWorker, loginPageViewModel);

            NavigationPage.SetHasNavigationBar(this, false);
        }
		/// <summary>
		/// Stop the sniffing server.
		/// </summary>
		public void Stop() {
			if (thread != null) {
				threadWorker.ShouldStop = true;

				// Try to gracefully stop the server thread worker and thread.
				Console.Write("[{0}] Stopping MITM-Sniffer gracefully...",
				              SourceEndPoint);
				for (int i = 0; i < 10; i++) { // Wait one second for the server to shut down.
					if (!thread.IsAlive)
						break;
					Thread.Sleep(100);
				}

				// If graceful-stop failed, do a forceful-stop.
				if (thread.IsAlive) {
					Console.WriteLine("Failed!");
					Console.Write("[{0}] Stopping MITM-Sniffer forcefully...",
					              SourceEndPoint);
					thread.Abort();
					threadWorker.CleanUp();
				}
				Console.WriteLine("Done!");

				// Clear references
				threadWorker = null;
				thread = null;
			}
		}
        public void BeforeTest()
        {
            ServerWorker server = new ServerWorker();
            ClientWorker client = new ClientWorker();

            server.Start();
        }
Ejemplo n.º 8
0
            // Delegates
            /// <summary>
            /// Delegate which is called when a new connection is received
            /// </summary>
            /// <param name="asyncAccept"></param>
            private void AcceptConnectionDelegate(IAsyncResult asyncAccept)
            {
                // Accept the connection on a new socket
                Socket socket = mMainSocket.EndAccept(asyncAccept);

                // Assign the socket to a ServerWorker object:
                ServerWorker sw = new ServerWorker(socket);

                if (mWorkerSockets.Count >= MAX_CLIENTS)
                {
                    // We cannot accept the connection as we have reached our limit:
                    sw.SendData(ServerResponseCode.SERVICE_NOT_AVAILABLE);
                }
                else if (HaveLoggedInUser)
                {
                    // We can accept the connection but client will have to FORCE LOGIN to proceed:
                    sw.SendData(ServerResponseCode.BUSY);
                }
                else
                {
                    // We wish to accept the connection; let's get the user logged in (if need be) etc
                    sw.SendData(ServerResponseCode.HELLO);
                }

                // Release the main socket:
                AcceptConnections();
            }
Ejemplo n.º 9
0
        private void BtnAdmin_Click(object sender, RoutedEventArgs e)
        {
            if (_isGame)
            {
                MessageBox.Show("At first you must end the game!");
                return;
            }
            this.Hide();
            AdminWindow admin = new AdminWindow(_hostUrl);

            admin.Owner = this;
            admin.ShowDialog();

            if (MainWindow.playerLogin == "none" && MainWindow.playerPassword == "none")
            {
                this.Close();
                return;
            }

            requestUrl     = _hostUrl + $"/api/jsstudygame/login?emailOrLogin={MainWindow.playerLogin}&password={MainWindow.playerPassword}";
            _player        = ServerWorker.GetInfoFromServer <PlayerVM>(requestUrl);
            requestUrl     = _hostUrl + $"/api/jsstudygame/addinfo?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}";
            _playerAddInfo = ServerWorker.GetInfoFromServer <PlayerAdditionalInfoVM>(requestUrl);

            requestUrl   = _hostUrl + $"/api/jsstudygame/score?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}";
            _playerScore = ServerWorker.GetInfoFromServer <PlayerScoreVM>(requestUrl);
            _playerScore.IdPlayerScore = _player.Id;

            this.ShowDialog();
        }
        /// <summary>
        /// Stop the sniffing server.
        /// </summary>
        public void Stop()
        {
            if (thread != null)
            {
                threadWorker.ShouldStop = true;

                // Try to gracefully stop the server thread worker and thread.
                Console.Write("[{0}] Stopping MITM-Sniffer gracefully...",
                              SourceEndPoint);
                for (int i = 0; i < 10; i++)                   // Wait one second for the server to shut down.
                {
                    if (!thread.IsAlive)
                    {
                        break;
                    }
                    Thread.Sleep(100);
                }

                // If graceful-stop failed, do a forceful-stop.
                if (thread.IsAlive)
                {
                    Console.WriteLine("Failed!");
                    Console.Write("[{0}] Stopping MITM-Sniffer forcefully...",
                                  SourceEndPoint);
                    thread.Abort();
                    threadWorker.CleanUp();
                }
                Console.WriteLine("Done!");

                // Clear references
                threadWorker = null;
                thread       = null;
            }
        }
Ejemplo n.º 11
0
        private void SaveScore()
        {
            _playerScore.AnswersSkipped = "";
            _playerScore.AnswersWrong   = "";

            _playerScore.ProgressInGame = _playerScore.CorrectAnswers * 100 / _amountoftests;

            foreach (var item in _skippedAnswer)
            {
                if (string.IsNullOrWhiteSpace(_playerScore.AnswersSkipped))
                {
                    _playerScore.AnswersSkipped += item;
                }
                else
                {
                    _playerScore.AnswersSkipped += $",{item}";
                }
            }
            foreach (var item in _wrongAnswer)
            {
                if (string.IsNullOrWhiteSpace(_playerScore.AnswersWrong))
                {
                    _playerScore.AnswersWrong += item;
                }
                else
                {
                    _playerScore.AnswersWrong += $",{item}";
                }
            }

            requestUrl = _hostUrl + $"/api/jsstudygame/score";
            int result = ServerWorker.ChangePlayerToServer(_playerScore, requestUrl);
        }
Ejemplo n.º 12
0
        private void BtnRemove_Click(object sender, RoutedEventArgs e)
        {
            if (!(dgShow.SelectedItem is PlayerFullInfo))
            {
                dgShow.SelectedItem = null;
                return;
            }
            PlayerFullInfo playerFull = dgShow.SelectedItem as PlayerFullInfo;

            dgShow.SelectedItem = null;

            string url = _hostUrl + $"/api/jsstudygame/player?login={playerFull.Login}&password={playerFull.Password}";

            if (ServerWorker.DeletePlayer(url) == true)
            {
                if (playerFull.Login == MainWindow.playerLogin && playerFull.Password == MainWindow.playerPassword)
                {
                    MainWindow.playerLogin    = "******";
                    MainWindow.playerPassword = "******";
                    this.Close();
                    return;
                }
                else
                {
                    Window_Loaded(sender, e);
                }
            }
        }
Ejemplo n.º 13
0
        private void BtmStartGame_Click(object sender, RoutedEventArgs e)
        {
            cbWrong.SelectedItem   = cbWrong.Items[0];
            cbSkipped.SelectedItem = cbSkipped.Items[0];

            int index = cbWrong.Items.Count;

            for (int i = index - 1; i > 0; i--)
            {
                if (i != 0)
                {
                    cbWrong.Items.RemoveAt(i);
                }
            }
            index = cbSkipped.Items.Count;
            for (int i = index - 1; i > 0; i--)
            {
                if (i != 0)
                {
                    cbSkipped.Items.RemoveAt(i);
                }
            }

            _playerScore.IdPlayerScore           = _player.Id;
            _playerScore.TotalScore              = 0;
            _playerScore.TimeGameInSeconds       = 0;
            _playerScore.SkippedAnswers          = 0;
            _playerScore.ProgressInGame          = 0;
            _playerScore.IncorrectAnswers        = 0;
            _playerScore.CurrentQuestionNoAnswer = 1;
            _playerScore.CorrectAnswers          = 0;
            _playerScore.AnswersWrong            = "";
            _playerScore.AnswersSkipped          = "";

            requestUrl = _hostUrl + $"/api/jsstudygame/score";
            if (ServerWorker.ChangePlayerToServer(_playerScore, requestUrl) <= 0)
            {
                BtmEndGame_Click(sender, e);
            }

            if (_stopwatch.IsRunning)
            {
                _stopwatch.Restart();
            }
            else
            {
                _stopwatch.Start();
            }

            spStartGame.Visibility     = Visibility.Visible;
            btnReference.Visibility    = Visibility.Visible;
            btnNextQuestion.Visibility = Visibility.Visible;

            _isGame = true;
            if (!UpdateQuestion(_playerScore.CurrentQuestionNoAnswer))
            {
                BtmEndGame_Click(sender, e);
            }
        }
Ejemplo n.º 14
0
        public GameFieldModel(Game game, GameStateInfo gameStateInfo)
        {
            serverWorker       = ServerWorker.GetServerWorker();
            this.Game          = game;
            this.GameStateInfo = gameStateInfo;

            FillGameTrajectory();
        }
Ejemplo n.º 15
0
        static public async Task <bool> StartGame(ServerWorker serverWorker, Game game)
        {
            string alertMessage;

            if (game.Player1 is null || game.Player2 is null)
            {
                alertMessage = "Try to find player...";
            }
Ejemplo n.º 16
0
        private async void ToServerAsync()
        {
            (string, string, string, bool)dataTuple;
            string resultCode        = "";
            string name              = "";
            string gender            = "";
            bool   isHavePastMessage = false;
            string login             = Login ?? "";
            string password          = new System.Net.NetworkCredential(string.Empty, Password).Password;
            await Task.Run(async() =>
            {
                try
                {
                    _serverWorker     = ServerWorker.NewInstance();
                    dataTuple         = await _serverWorker.AuthorizationAsync(login, GetHash(password));
                    resultCode        = dataTuple.Item1;
                    name              = dataTuple.Item2;
                    gender            = dataTuple.Item3;
                    isHavePastMessage = dataTuple.Item4;
                    if (resultCode == "28")
                    {
                        if (IsRemember)
                        {
                            await Task.Run(() => _logicDb.AddNewUser(login, password));
                        }
                        UserContainer.Login    = Login;
                        UserContainer.Password = Password;
                        UserContainer.Gender   = gender;
                    }
                    else
                    {
                        IsNotAuthorization = true;
                        await Task.Run(() => _logicDb.DeleteUser(login, password));
                    }
                }
                catch
                {
                    // ignore
                }
            });

            if (resultCode == "28")
            {
                MainChatPageViewModel mainChatPageViewModel = new MainChatPageViewModel(name);
                NewPage             = new MainChatPageView();
                NewPage.DataContext = mainChatPageViewModel;
                mainChatPageViewModel.StartLoad(isHavePastMessage);
                Login = "";
                _viewWindow.PasswordWrite("");
                IsRemember = false;
            }
            else if (resultCode == "")
            {
                ErrorDialogView errorDialogView = new ErrorDialogView(new ErrorDialogViewModel("Ошибка подключения к серверу!"));
                errorDialogView.ShowDialog();
            }
            IsCanClick = true;
        }
Ejemplo n.º 17
0
            /// <summary>
            ///  We've received a connection and have no user logged in, or we've received a FORCE LOGIN.
            ///  We get encryption set up and the user logged in (if specified by user settings).
            /// </summary>
            /// <param name="sw"></param>
            private void ProcessLogin(ServerWorker sw)
            {
                // send HELLO:
                //sw.SendData(ServerResponseCode.HELLO, "",
                // Once logged in:
                mLoggedInClient = sw;

                // TODO: Reset to null when discon or log out
            }
Ejemplo n.º 18
0
        public MainWindow()
        {
            InitializeComponent();


            ServerWorker sw = new ServerWorker();

            sw.startServer();
        }
Ejemplo n.º 19
0
        static public async Task <Game> MakeGame(ServerWorker serverWorker, int idPlayer = -1, int idGame = -1)
        {
            idGame = (await serverWorker.TaskPlayGame(idPlayer: idPlayer, idGame: idGame)).IdGame;
            Game game = await serverWorker.TaskGetGame(idGame : idGame);

            game.Turns = await serverWorker.TaskGetGameTurns(idGame);

            return(game);
        }
Ejemplo n.º 20
0
 public GameRatingViewModel(string name)
 {
     _serverWorker    = ServerWorker.NewInstance();
     Condition        = "Visible";
     Name             = name;
     IsEnableOverall  = false;
     IsEnableUsers    = true;
     IsEnableComputer = true;
 }
Ejemplo n.º 21
0
        public UsersPageViewModel(string name)
        {
            _serverWorker = ServerWorker.NewInstance();

            Condition   = "Visible";
            Name        = name;
            Users       = new ObservableCollection <UserViewModel>();
            _pastAction = "";
        }
Ejemplo n.º 22
0
        public GamePlayViewModel(string name, string typoOfGame)
        {
            _serverWorker = ServerWorker.NewInstance();
            TypeOfGame    = typoOfGame;
            Condition     = "Visible";
            Name          = name;

            if (TypeOfGame == "With user")
            {
                IsVisibleGame    = false;
                IsVisibleSpinner = true;
                _delegateMove    = MoveForGameWithUserAsync;
            }
            else
            {
                IsVisibleGame     = true;
                IsVisibleSpinner  = false;
                OpponentName      = "Компьютер";
                _gameLogic        = new GameLogic(this);
                FirstGamerSymbol  = _gameLogic.GamerSymbol;
                SecondGamerSymbol = _gameLogic.ComputerSymbol;
                TextNotification  = $"Вы играете за {FirstGamerSymbol}";
                ShowNotificationAsync();
                if (FirstGamerSymbol == "X")
                {
                    GameInformation = FIRST_PLAYER_TURN;
                    IsEnable        = true;
                }
                else
                {
                    GameInformation = "Ожидание хода от компьютера";
                }
                _delegateMove = MoveForGameWithComputer;
            }
            IsVisibleCancel = false;

            OneOneSquare     = "";
            OneTwoSquare     = "";
            OneThreeSquare   = "";
            TwoOneSquare     = "";
            TwoTwoSquare     = "";
            TwoThreeSquare   = "";
            ThreeOneSquare   = "";
            ThreeTwoSquare   = "";
            ThreeThreeSquare = "";

            OneOneBack     = (Brush) new BrushConverter().ConvertFromString("Transparent");
            OneTwoBack     = (Brush) new BrushConverter().ConvertFromString("Transparent");
            OneThreeBack   = (Brush) new BrushConverter().ConvertFromString("Transparent");
            TwoOneBack     = (Brush) new BrushConverter().ConvertFromString("Transparent");
            TwoTwoBack     = (Brush) new BrushConverter().ConvertFromString("Transparent");
            TwoThreeBack   = (Brush) new BrushConverter().ConvertFromString("Transparent");
            ThreeOneBack   = (Brush) new BrushConverter().ConvertFromString("Transparent");
            ThreeTwoBack   = (Brush) new BrushConverter().ConvertFromString("Transparent");
            ThreeThreeBack = (Brush) new BrushConverter().ConvertFromString("Transparent");
        }
Ejemplo n.º 23
0
        private void BtnDelete_Click(object sender, RoutedEventArgs e)
        {
            string url = _hostUrl + $"/api/jsstudygame/player?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}";

            if (ServerWorker.DeletePlayer(url) == true)
            {
                MainWindow.playerLogin    = "******";
                MainWindow.playerPassword = "******";
                this.Close();
            }
        }
Ejemplo n.º 24
0
 public GameControlsModel(GameFieldModel gameFieldModel)
 {
     this.gameFieldModel = gameFieldModel;
     serverWorker        = ServerWorker.GetServerWorker();
     _ = Prepare();
     gameFieldModel.PropertyChanged += (obj, args) => {
         if (args.PropertyName == "TurnState")
         {
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("TurnState"));
         }
     };
 }
Ejemplo n.º 25
0
        public TabbedUserPage(ServerWorker _serverWorker, SystemSettings _systemSettings)
        {
            InitializeComponent();
            this.systemSettings = _systemSettings;
            this.serverWorker   = _serverWorker;
            NavigationPage.SetHasNavigationBar(this, false);
            NavigationPage.SetHasBackButton(this, true);
            //UploadGamesList();

            Children.Add(new Views.UserPage(_serverWorker, _systemSettings, Navigation));
            Children.Add(new Views.GameHistoryPage(_serverWorker, _systemSettings, Navigation));
        }
        public MainChatPageViewModel(string name)
        {
            NotificationTranslator.CreateNotifier();
            NotificationTranslator.GetEnteringUserNotification($"Добро пожаловать, {name}!", "Success");

            Name          = name;
            _serverWorker = ServerWorker.NewInstance();

            Condition = "Visible";

            LoadEnable(true, true, false, true, true);
        }
Ejemplo n.º 27
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            _activePage = 1;
            string requestUrl = _hostUrl + $"/api/jsstudygame/amountofplayers?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}";

            TotalPlayers = ServerWorker.GetInfoFromServer <int>(requestUrl);
            if (TotalPlayers == 0)
            {
                TotalPlayers = 1;
            }

            _sword = null;
            GetDataFromWebServer();
        }
Ejemplo n.º 28
0
        private void BtnSearch_Click(object sender, RoutedEventArgs e)
        {
            _activePage = 1;
            wpWithDGV.Children.Clear();
            _sword = txtboxSearch.Text;
            string requestUrl = _hostUrl + $"/api/jsstudygame/amountsearch?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}&sword={_sword}";

            TotalPlayers = ServerWorker.GetInfoFromServer <int>(requestUrl);
            if (TotalPlayers == 0)
            {
                TotalPlayers = 1;
            }
            GetDataFromWebServer();
        }
		/// <summary>
		/// Start the sniffing server.
		/// </summary>
		public void Start() {
			if (thread == null) {
				Console.Write("[{0}] Starting MITM-Sniffer...",
				              SourceEndPoint);

				threadWorker = new ServerWorker(this);
				thread = new Thread(threadWorker.DoWork);
				thread.Start();

				// Wait until Thread is alive.
				while (!thread.IsAlive)
					Thread.Sleep(1);

				Console.WriteLine("Done!");
			}
		}
Ejemplo n.º 30
0
        static private async Task <bool> StartGame(ServerWorker serverWorker, Game game, Func <bool> isCancel)
        {
            GameStateEnum GameState = game.GameState;

            while (GameState != GameStateEnum.ACTIVE && GameState != GameStateEnum.WAIT)
            {
                if (isCancel())
                {
                    return(false);
                }
                await Task.Delay(1000);

                GameState = (await serverWorker.TaskPlayGame(idGame: game.IdGame)).GameState;
            }
            return(true);
        }
Ejemplo n.º 31
0
        private void DpScore_Loaded(object sender, RoutedEventArgs e)
        {
            string requestUrl = _hostUrl + $"/api/jsstudygame/score?login={MainWindow.playerLogin}&password={MainWindow.playerPassword}";

            scoreVM = ServerWorker.GetInfoFromServer <PlayerScoreVM>(requestUrl);
            if (scoreVM == null)
            {
                return;
            }
            lblTotal.Content             = scoreVM.TotalScore;
            lblCorrectAnswers.Content    = scoreVM.CorrectAnswers;
            lblIncorrectAnswers.Content  = scoreVM.IncorrectAnswers;
            lblSkippedAnswers.Content    = scoreVM.SkippedAnswers;
            lblTimeGameInSeconds.Content = scoreVM.TimeGameInSeconds;
            lblProgressInGame.Content    = scoreVM.ProgressInGame + " %";
        }
Ejemplo n.º 32
0
        public RegistrationPageViewModel(INavigation navigation, ServerWorker serverWorker, LoginPageViewModel loginPageViewModel = null)
        {
            this.Navigation         = navigation;
            this.loginPageViewModel = loginPageViewModel;
            this.serverWorker       = serverWorker;
            RegistrationStep        = 1;
            ContinueCommand         = new Command(NextPage);
            SignUpCommand           = new Command(SignUp);
            SignInCommand           = new Command(SignIn);

            GoBackCommand = new Command(OnSwipedRight);

            User = new NewUserProfile(serverWorker);
            User.PropertyChanged += (obj, args) => {
                OnPropertyChanged("IsEnabledNextButton");
                OnPropertyChanged("IsEnabledSignUpButton");
            };
            if (loginPageViewModel != null && loginPageViewModel.IsGoogleSignIn)
            {
                User.Name  = loginPageViewModel.User.Name;
                User.Email = loginPageViewModel.User.Email;
                User.CheckNameCorrectness();
                User.CheckEmailCorrectness();
            }


            NameUnfocusedCommand     = new Command(User.CheckNameCorrectness);
            EmailUnfocusedCommand    = new Command(User.CheckEmailCorrectness);
            LoginUnfocusedCommand    = new Command(User.CheckLoginCorrectness);
            PasswordUnfocusedCommand = new Command(() => {
                User.CheckPasswordCorrectness();
                User.CheckConfirmPasswordCorrectness(false);
            }
                                                   );
            ConfirmPasswordUnfocusedCommand = new Command(() => User.CheckConfirmPasswordCorrectness());
            TermsHyperlinkCommand           = new Command(async() =>
            {
                Uri uri = new Uri("https://scigames.ru/terms");
                await Launcher.OpenAsync(uri);
            });
            PolicyHyperlinkCommand = new Command(async() =>
            {
                Uri uri = new Uri("https://scigames.ru/privacy_policy");
                await Launcher.OpenAsync(uri);
            });
        }
Ejemplo n.º 33
0
            /// <summary>
            ///  We've received a connection and have no user logged in, or we've received a FORCE LOGIN.
            ///  We get encryption set up and the user logged in (if specified by user settings).
            /// </summary>
            /// <param name="sw"></param>
            private void ProcessLogin(ServerWorker sw)
            {
                // send HELLO:
                //sw.SendData(ServerResponseCode.HELLO, "", 
                // Once logged in:
                mLoggedInClient = sw;

                // TODO: Reset to null when discon or log out
            }
Ejemplo n.º 34
0
            // Delegates
            /// <summary>
            /// Delegate which is called when a new connection is received
            /// </summary>
            /// <param name="asyncAccept"></param>
            private void AcceptConnectionDelegate(IAsyncResult asyncAccept)
            {
                // Accept the connection on a new socket
                Socket socket = mMainSocket.EndAccept(asyncAccept);

                // Assign the socket to a ServerWorker object:
                ServerWorker sw = new ServerWorker(socket);

                if (mWorkerSockets.Count >= MAX_CLIENTS)
                    // We cannot accept the connection as we have reached our limit:
                    sw.SendData(ServerResponseCode.SERVICE_NOT_AVAILABLE);
                else if (HaveLoggedInUser)
                    // We can accept the connection but client will have to FORCE LOGIN to proceed:
                    sw.SendData(ServerResponseCode.BUSY);
                else
                {
                    // We wish to accept the connection; let's get the user logged in (if need be) etc
                    sw.SendData(ServerResponseCode.HELLO);
                }

                // Release the main socket:
                AcceptConnections();
            }