Exemplo n.º 1
0
        internal virtual void Login(string _userName, string _password, ServerUnit _serverUnit)
        {
            if (serverUnit != null)
            {
                Kick();

                serverUnit.Kick();

                serverUnit = null;
            }

            if (isWaittingForResponse)
            {
                replaceServerUnitCallBack = delegate()
                {
                    serverUnit = _serverUnit;

                    _serverUnit.GetLoginResult(this);
                };
            }
            else
            {
                serverUnit = _serverUnit;

                _serverUnit.GetLoginResult(this);
            }
        }
Exemplo n.º 2
0
    private void SocketAccept(IAsyncResult _result)
    {
        Socket clientSocket = socket.EndAccept(_result);

        Console.WriteLine("One user connect");

        lock (locker)
        {
            ServerUnit <T> serverUnit;

            if (unitPool.Count == 0)
            {
                serverUnit = new ServerUnit <T>();
            }
            else
            {
                serverUnit = unitPool.Last.Value;

                unitPool.RemoveLast();
            }

            noLoginList.AddLast(serverUnit);

            serverUnit.Init(clientSocket, tick);
        }

        BeginAccept();
    }
        public FormRobotControl()
        {
            InitializeComponent();

            // Definition
            globalDataSet   = new GlobalDataSet();
            helperFunctions = new HelperFunctions(globalDataSet);
            dataPackager    = new DataPackager(globalDataSet);
            tcpServer       = new ServerUnit(globalDataSet);

            // Initialize
            sampleStep  = DEFAULT_SAMPLE_TIME_FACTOR;
            aliveBit    = false;
            notExecuted = true;

            // User defines
            globalDataSet.DebugMode           = false;
            globalDataSet.ShowProgramDuration = false;

            // Set event that is fired by datapackager named newPackageEvent with method dataPackageReceived (listener: server)
            // Set event that is fired by server named newServerEvent with method dataPackageServerReceived (listener: dataPackager)
            dataPackager.newPackageEvent += new DataPackager.DataPackagedEventHandler(tcpServer.dataPackageReceived);

            // Start server
            tcpServer.startServer();

            // Start thread to package data (the data were packaged before the client is connected
            dataPackager.startPackaging();

            // Check sensor alive in background
            indicatorLedThread = new Thread(new ThreadStart(indicatorLed));
            indicatorLedThread.Start();

            ActionSelector actionSelector = new ActionSelector(globalDataSet);
        }
Exemplo n.º 4
0
 public FormWelcome(ServerUnit unit)
 {
     _unit = unit;
     InitializeComponent();
     if (unit != null)
     {
         txtWelcome.Text = _unit.Welcome.ToSingleString();
         txtLogIn.Text   = _unit.LogInWelcome.ToSingleString();
         txtLogOut.Text  = _unit.LogOutWelcome.ToSingleString();
     }
     this.DialogResult = DialogResult.Cancel;
 }
Exemplo n.º 5
0
        internal override void Login(string _userName, string _password, ServerUnit _serverUnit)
        {
            bool result = userData.passward.Equals(_password);

            if (!result)
            {
                _serverUnit.GetLoginResult(null);
            }
            else
            {
                base.Login(_userName, _password, _serverUnit);
            }
        }
Exemplo n.º 6
0
    private void SocketAccept(IAsyncResult _result)
    {
        Socket clientSocket = socket.EndAccept(_result);

        Console.WriteLine("One user connect");

        ServerUnit <T> serverUnit = new ServerUnit <T>();

        lock (noLoginList)
        {
            noLoginList.Add(serverUnit);

            serverUnit.Init(clientSocket, tick);
        }

        BeginAccept();
    }
Exemplo n.º 7
0
        internal void GetLoginResult(UserData _userData, ServerUnit _serverUnit)
        {
            if (_userData != null)
            {
                SuperUserServiceBase userService = Server.getUserService();

                userService.SetUserData(_userData);

                userService.SetServerUnit(_serverUnit);

                dic.Add(_userData.userName, userService);

                _serverUnit.GetLoginResult(userService);
            }
            else
            {
                _serverUnit.GetLoginResult(null);
            }
        }
Exemplo n.º 8
0
    private void SocketAccept(IAsyncResult _result)
    {
        Socket clientSocket = socket.EndAccept(_result);

        Console.WriteLine("One user connected");

        T unit = new T();

        ServerUnit serverUnit = new ServerUnit();

        lock (list)
        {
            list.Add(serverUnit);
        }

        serverUnit.Init(clientSocket, unit);

        unit.Init(serverUnit.SendData);

        BeginAccept();
    }
Exemplo n.º 9
0
    private void addUnit(string side, string x, string y, string z, string type, int cnnId)
    {
        Debug.Log("addUnit()");
        ServerUnit su = new ServerUnit();
        int        c  = units.Count + 1;

        su.id = c.ToString();
        print("ID SERVER UNIT : " + su.id);
        su.side = side;
        su.x    = x;
        su.y    = y;
        su.z    = z;
        su.type = type;

        switch (type)
        {
        case TANK:
            su.health = TANK_HEALTH;
            break;

        case JET:
            su.health = JET_HEALTH;
            break;

        case RL:
            su.health = RL_HEALTH;
            break;
        }

        units.Add(su);
        //Now tell ALL the clients that a new unit has been added
        //newUnit|id|side|type|x|y|z
        string msg = "newUnit|" + su.id + S + su.side + S + su.type + S + su.x + S + su.y + S + su.z;

        send(msg, reliableChannel, clients);

        debugText.text = units.Count.ToString() + " units in the game";
    }
Exemplo n.º 10
0
        internal void Login(string _userName, string _password, ServerUnit _serverUnit)
        {
            if (dic.ContainsKey(_userName))
            {
                SuperUserServiceBase userService = dic[_userName];

                Action <SuperUserServiceBase> callBack = delegate(SuperUserServiceBase _service)
                {
                    _service.Login(_userName, _password, _serverUnit);
                };

                userService.Process(callBack);
            }
            else
            {
                Action <Redis> callBack = delegate(Redis _service)
                {
                    _service.Login(_userName, _password, _serverUnit);
                };

                Redis.Instance.Process(callBack);
            }
        }
Exemplo n.º 11
0
 internal void SetServerUnit(ServerUnit _serverUnit)
 {
     serverUnit = _serverUnit;
 }
Exemplo n.º 12
0
        internal void Login(string _userName, string _password, ServerUnit _serverUnit)
        {
            string key = string.Format("userName_{0}", _userName);

            if (redisClient.ContainsKey(key))
            {
                string password = redisClient.Get <string>(string.Format("password_{0}", _userName));

                if (password.Equals(_password))
                {
                    byte[] bytes = redisClient.Get <byte[]>(key);

                    stream.Position = 0;

                    stream.Write(bytes, 0, bytes.Length);

                    stream.Position = 0;

                    UserData userData = (UserData)formatter.Deserialize(stream);

                    Action <UserManager> callBack = delegate(UserManager _service)
                    {
                        _service.GetLoginResult(userData, _serverUnit);
                    };

                    UserManager.Instance.Process(callBack);
                }
                else
                {
                    Action <UserManager> callBack = delegate(UserManager _service)
                    {
                        _service.GetLoginResult(null, _serverUnit);
                    };

                    UserManager.Instance.Process(callBack);
                }
            }
            else
            {
                UserData userData = Server.getUserData();

                userData.Init(_userName, _password);

                formatter.Serialize(stream, userData);

                stream.Position = 0;

                byte[] bytes = stream.GetBuffer();

                redisClient.Set(key, bytes);

                key = string.Format("password_{0}", _userName);

                redisClient.Set(key, _password);

                Action <UserManager> callBack = delegate(UserManager _service)
                {
                    _service.GetLoginResult(userData, _serverUnit);
                };

                UserManager.Instance.Process(callBack);
            }
        }
Exemplo n.º 13
0
    internal void Update()
    {
        lock (noLoginList)
        {
            tick++;

            for (int i = noLoginList.Count - 1; i > -1; i--)
            {
                ServerUnit <T> serverUnit = noLoginList[i];

                int uid = serverUnit.CheckLogin(tick);

                if (uid == -1)
                {
                    noLoginList.RemoveAt(i);
                }
                else if (uid > 0)
                {
                    Console.WriteLine("One user login   uid:" + uid);

                    noLoginList.RemoveAt(i);

                    if (loginDic.ContainsKey(uid))
                    {
                        ServerUnit <T> oldServerUnit = loginDic[uid];

                        oldServerUnit.Kick();

                        serverUnit.SetUnit(oldServerUnit.unit);

                        loginDic[uid] = serverUnit;
                    }
                    else if (logoutDic.ContainsKey(uid))
                    {
                        T unit = logoutDic[uid];

                        logoutDic.Remove(uid);

                        serverUnit.SetUnit(unit);

                        loginDic.Add(uid, serverUnit);
                    }
                    else
                    {
                        T unit = new T();

                        serverUnit.SetUnit(unit);

                        loginDic.Add(uid, serverUnit);
                    }
                }
            }
        }

        List <KeyValuePair <int, ServerUnit <T> > > kickList = null;

        Dictionary <int, ServerUnit <T> > .Enumerator enumerator = loginDic.GetEnumerator();

        while (enumerator.MoveNext())
        {
            bool kick = enumerator.Current.Value.Update(tick);

            if (kick)
            {
                if (kickList == null)
                {
                    kickList = new List <KeyValuePair <int, ServerUnit <T> > >();
                }

                kickList.Add(enumerator.Current);
            }
        }

        if (kickList != null)
        {
            for (int i = 0; i < kickList.Count; i++)
            {
                KeyValuePair <int, ServerUnit <T> > pair = kickList[i];

                loginDic.Remove(pair.Key);

                logoutDic.Add(pair.Key, pair.Value.unit);
            }
        }
    }
Exemplo n.º 14
0
    internal void Update()
    {
        lock (locker)
        {
            tick++;

            LinkedListNode <ServerUnit <T> > node = noLoginList.First;

            while (node != null)
            {
                LinkedListNode <ServerUnit <T> > nextNode = node.Next;

                ServerUnit <T> serverUnit = node.Value;

                int uid = serverUnit.CheckLogin(tick);

                if (uid == -1)
                {
                    noLoginList.Remove(node);
                }
                else if (uid > 0)
                {
                    Console.WriteLine("One user login   uid:" + uid);

                    noLoginList.Remove(node);

                    if (loginDic.ContainsKey(uid))
                    {
                        ServerUnit <T> oldServerUnit = loginDic[uid];

                        oldServerUnit.Kick();

                        serverUnit.SetUnit(oldServerUnit.unit);

                        loginDic[uid] = serverUnit;
                    }
                    else if (logoutDic.ContainsKey(uid))
                    {
                        T unit = logoutDic[uid];

                        logoutDic.Remove(uid);

                        serverUnit.SetUnit(unit);

                        loginDic.Add(uid, serverUnit);
                    }
                    else
                    {
                        T unit = new T();

                        serverUnit.SetUnit(unit);

                        loginDic.Add(uid, serverUnit);
                    }
                }

                node = nextNode;
            }

            LinkedList <KeyValuePair <int, ServerUnit <T> > > kickList = null;

            Dictionary <int, ServerUnit <T> > .Enumerator enumerator = loginDic.GetEnumerator();

            while (enumerator.MoveNext())
            {
                bool kick = enumerator.Current.Value.Update(tick);

                if (kick)
                {
                    if (kickList == null)
                    {
                        kickList = new LinkedList <KeyValuePair <int, ServerUnit <T> > >();
                    }

                    kickList.AddLast(enumerator.Current);
                }
            }

            if (kickList != null)
            {
                LinkedList <KeyValuePair <int, ServerUnit <T> > > .Enumerator enumerator2 = kickList.GetEnumerator();

                while (enumerator2.MoveNext())
                {
                    KeyValuePair <int, ServerUnit <T> > pair = enumerator2.Current;

                    loginDic.Remove(pair.Key);

                    logoutDic.Add(pair.Key, pair.Value.unit);

                    unitPool.AddLast(pair.Value);
                }
            }
        }
    }