예제 #1
0
파일: Admin.cs 프로젝트: SinaC/TetriNET2
        public void OnConnected(ConnectResults result, Versioning serverVersion, Guid adminId)
        {
            if (result == ConnectResults.Successfull)
            {
                _clients.Clear();
                _admins.Clear();
                _games.Clear();
                _banned.Clear();

                _admins.Add(new AdminData
                    {
                        Id = adminId,
                        Name = Name,
                        Address = "localhost",
                        ConnectTime = DateTime.Now,
                    });
            }

            Connected.Do(x => x(result, serverVersion, adminId));
        }
예제 #2
0
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid clientId, List<GameData> games)
 {
     UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, result, serverVersion, clientId, games);
 }
예제 #3
0
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid adminId)
 {
     UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, result, serverVersion, adminId);
 }
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid clientId, List<GameData> games)
 {
     throw new NotImplementedException();
 }
예제 #5
0
    public static bool Connect(string IP, int Port, string Password, SharpClient self, out ConnectResults result)
    {
        if (IsConnected)
        {
            result = ConnectResults.AlreadyConnected;
            return(false);
        }
        bool succes = isconnected = client.Connect(IP, Port, Password, self, out result);

        _ishost = !succes;
        return(succes);
    }
예제 #6
0
파일: Client.cs 프로젝트: SinaC/TetriNET2
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid clientId, List<GameData> games)
 {
     ExceptionFreeAction(() => Callback.OnConnected(result, serverVersion, clientId, games));
 }
예제 #7
0
 private void OnConnected(ConnectResults result, Versioning serverVersion, ClientData client, List<GameData> games)
 {
     Console.WriteLine("OnConnected: {0} {1}.{2} {3}", result, serverVersion == null ? -1 : serverVersion.Major, serverVersion == null ? -1 : serverVersion.Minor, client.Id);
     Console.WriteLine("Game list: {0}", games == null ? 0 : games.Count);
     if (games != null)
         foreach (GameData game in games)
         {
             Console.WriteLine("Game: {0} {1} {2}", game.Id, game.Name, game.Rule);
             Console.WriteLine("\tClients: {0}", game.Clients == null ? 0 : game.Clients.Count);
             if (game.Clients != null)
                 foreach (ClientData gameClient in game.Clients)
                     Console.WriteLine("\tClient: {0} {1} {2} {3} {4} {5}", gameClient.Id, gameClient.Name, gameClient.GameId, gameClient.IsGameMaster, gameClient.IsPlayer, gameClient.IsSpectator);
         }
 }
예제 #8
0
        public bool Connect(string IP, int Port, string Password, SharpClient Self, out ConnectResults result)
        {
            if (Password == null)
            {
                Password = "";
            }
            if (this.connected)
            {
                result = ConnectResults.AlreadyConnected;
                return(false);
            }
            try
            {
                server_client = new TcpClient();
                IPAddress address = null;
                #region IP Parse
                try
                {
                    address = IPAddress.Parse(IP);
                }
                catch
                {
                    result = ConnectResults.InvalidIpAddress;
                    return(false);
                }
                #endregion
                IPEndPoint remoteAddress = new IPEndPoint(address, Port);

                #region Physical Connetion
                try
                {
                    server_client.Connect(remoteAddress);
                }
                catch
                {
                    result = ConnectResults.UnhandledException;
                    return(false);
                }
                #endregion

                #region ID Self
                SharpSerializer hailMessage = SharpSerializer.Create();

                hailMessage.Write((byte)IncomingConnectionRequests.ConnectionApprove);
                Self.Write(ref hailMessage);
                hailMessage.Write(Password);

                TCPMessageHandler.Write(server_client, hailMessage.DataAndPost());
                #endregion

                #region Wait For Response
                byte[]          responseRaw = TCPMessageHandler.Read(server_client);
                SharpSerializer response    = SharpSerializer.Create(responseRaw);
                #endregion

                IncomingConnectionResponse message = (IncomingConnectionResponse)response.ReadByte();
                if (message == IncomingConnectionResponse.WrongPassword)
                {
                    TCPMessageHandler.CloseConnection(server_client);
                    result = ConnectResults.InvalidPassword;
                    return(false);
                }
                if (message == IncomingConnectionResponse.ServerIsFull)
                {
                    TCPMessageHandler.CloseConnection(server_client);
                    result = ConnectResults.ServerIsFull;
                    return(false);
                }
                if (message == IncomingConnectionResponse.NameIsExist)
                {
                    TCPMessageHandler.CloseConnection(server_client);
                    result = ConnectResults.NameIsExist;
                    return(false);
                }


                short myID = response.ReadInt16();
                Self.AssingNetID(myID);

                this.room = new SharpRoom(ref response);

                this.listenerThread = new Thread(ListenServer);
                this.listenerThread.Start();

                connected = true;

                me = Self;
                room.AssignClient(me);

                room.Server.Connection      = server_client;
                room.Server.ListeningThread = listenerThread;

                C_OnConnected(room);

                result = ConnectResults.Succes;
                return(true);
            }
            catch (Exception e)
            {
                try
                {
                    TCPMessageHandler.CloseConnection(server_client);
                }
                catch { }
                server_client = null;

                connected = false;

                try
                {
                    listenerThread.Abort();
                }
                catch { }
                listenerThread = null;

                me = null;

                room = null;

                result = ConnectResults.UnhandledException;
                return(false);
            }
        }
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid adminId)
 {
     throw new NotImplementedException();
 }
예제 #10
0
파일: Client.cs 프로젝트: SinaC/TetriNET2
        public void OnConnected(ConnectResults result, Versioning serverVersion, Guid clientId, List<GameData> games)
        {
            ClientData client = null;
            if (result == ConnectResults.Successfull)
            {
                Log.Default.WriteLine(LogLevels.Info, "Connected as player {0}", clientId);

                _clients.Clear();
                _gameClients.Clear();
                _games.Clear();

                _games.AddRange(games);

                _clientId = clientId;

                client = new ClientData
                    {
                        Id = clientId,
                        Name = Name,
                        Team = Team,
                    };
                _clients.Add(client);

                _state = States.Connected;
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "Wrong id {0}", clientId);

                _state = States.Created;
            }

            Connected.Do(x => x(result, serverVersion, client, games));
        }
예제 #11
0
파일: Program.cs 프로젝트: SinaC/TetriNET2
 private static void OnConnected(ConnectResults result, Versioning serverVersion, Guid adminId)
 {
     Console.WriteLine("OnConnected: {0} {1}.{2} {3}", result, serverVersion == null ? -1 : serverVersion.Major, serverVersion == null ? -1 : serverVersion.Minor, adminId);
 }
예제 #12
0
파일: Admin.cs 프로젝트: SinaC/TetriNET2
 public void OnConnected(ConnectResults result, Versioning serverVersion, Guid adminId)
 {
     ExceptionFreeAction(() => Callback.OnConnected(result, serverVersion, adminId));
 }