Exemplo n.º 1
0
 private void _raiseUserChanged(WSClientInfo info)
 {
     if (this.OnWSUserStateChanged != null)
     {
         this.OnWSUserStateChanged(info);
     }
 }
Exemplo n.º 2
0
 private void _processUser(string command, string userName, string win)
 {
     lock (_lockObject)
     {
         foreach (var user in _users)
         {
             if (user.UserName == userName && user.WIN == win)
             {
                 user.Pulse++;
                 user.Command = command;
                 _raiseUserChanged(user);
                 return;
             }
         }
         if (command == "tapi")
         {
             command = "tapi-reg";
         }
         WSClientInfo info = new WSClientInfo()
         {
             UserName = userName, WIN = win, Command = command, Pulse = 1
         };
         _users.Add(info);
         _raiseUserChanged(info);
     }
 }
Exemplo n.º 3
0
 public void SetCanReceiveMessage(string userName, string win, bool can)
 {
     lock (_lockObject)
     {
         WSClientInfo user = _findUser(userName, win);
         if (user != null)
         {
             user.CanReceiveMessage = can;
         }
     }
 }
Exemplo n.º 4
0
 private WSClientInfo _registerUser(string userName, string win)
 {
     lock (_lockObject)
     {
         WSClientInfo info = new WSClientInfo()
         {
             UserName = userName, WIN = win, Command = "reg", Pulse = 1
         };
         _users.Add(info);
         _raiseUserChanged(info);
         return(info);
     }
 }
Exemplo n.º 5
0
        public override void ResponseToClient(TcpClient client)
        {
            string user = "******";
            string win  = "0";

            using (var stream = client.GetStream())
            {
                int waitTime = 1000 * 60;
                if (_waitSocketData(stream, waitTime))
                {
                    List <byte> requestList = _readSocketData(stream);
                    _sendHandshake(stream, requestList);

                    while (true)
                    {
                        if (!_waitSocketData(stream, waitTime))
                        {
                            break;
                        }
                        requestList = _readSocketData(stream);

                        byte[] msg = requestList.ToArray();

                        string text = _decodeMessage(msg);
                        stream.Flush();
                        //if(text == "tapi")
                        //{
                        //  string message = Manager.Instance.HP_TAPI_Message;
                        //  _sendMessage(stream,message);
                        //  Manager.Instance.HP_TAPI_Message = null;
                        //}
                        //else
                        //{
                        string[] data = text.Split(';');
                        if (data.Length == 2)
                        {
                            string[] n1      = data[0].Split(':');
                            string   command = n1[0];
                            user = n1[1];
                            string[] n2 = data[1].Split(':');
                            win = n2[1];
                            WSClientInfo info = _findUser(user, win);
                            if (info == null)
                            {
                                info = _registerUser(user, win);
                            }
                            if (command == "tapi")
                            {
                                _processUser(command, user, win);
                                string message = info.CanReceiveMessage ? info.Message : Manager.Instance.HP_TAPI_Default_Message;
                                _sendMessage(stream, message);
                                info.Message = Manager.Instance.HP_TAPI_Default_Message;
                                // Manager.Instance.HP_TAPI_Message = null;
                            }
                            else if (command == "reg")
                            {
                                this.RaiseEvent(text);
                                _processUser(command, user, win);
                                string message = "{\"result\":\"reg\",\"data\":\"empty\"}";
                                _sendMessage(stream, message);
                            }
                            else if (command == "unreg")
                            {
                                this.RaiseEvent(text);
                                _processUser(command, user, win);
                                string message = "{\"result\":\"unreg\",\"data\":\"empty\"}";
                                _sendMessage(stream, message);
                                break;
                            }
                            else
                            {
                                this.RaiseEvent(text);
                                _processUser(command, user, win);
                            }
                        }
                        else
                        {
                            string message = Manager.Instance.HP_TAPI_Message;
                            _sendMessage(stream, message);
                        }
                    }

                    //}
                }

                _processUser("closed", user, win);
                if (!_isWorking)
                {
                    _sendClose(stream);
                }
                client.Close();
                // this.RaiseEvent("WS CLIENT stopped.");
            }
        }