Example #1
0
        private void getUser(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket, AutoCSer.Net.TcpServer.ServerCallback <ChatData.UserLogin> getUser)
        {
            User currentUser = getCurrentUser(socket);

            if (currentUser != null)
            {
                currentUser.GetUser = getUser;

                bool isLoaded = true;
                removeUsers.ClearOnlyLength();
                foreach (var user in users)
                {
                    if (user.Value != currentUser && !getUser.Callback(new ChatData.UserLogin {
                        Name = user.Value.Name, Type = ChatData.UserLoginType.Load
                    }))
                    {
                        isLoaded = false;
                        removeUsers.Add(currentUser.Name);
                        break;
                    }
                }
                if (isLoaded)
                {
                    getUser.Callback(new ChatData.UserLogin {
                        Type = ChatData.UserLoginType.Loaded
                    });
                }
                removeUser();
            }
        }
Example #2
0
        private void getMessage(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket, AutoCSer.Net.TcpServer.ServerCallback <ChatData.Message> getMessage)
        {
            User currentUser = getCurrentUser(socket);

            if (currentUser != null)
            {
                currentUser.GetMessage = getMessage;
            }
        }
Example #3
0
 private void getMessage(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket, Func <AutoCSer.Net.TcpServer.ReturnValue <ChatData.Message>, bool> getMessage)
 {
     socket.AddTask(() =>
     {
         User currentUser = getCurrentUser(socket);
         if (currentUser != null)
         {
             currentUser.GetMessage = getMessage;
         }
     });
 }
Example #4
0
        private void logout(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket)
        {
            string userName = (string)socket.ClientObject;

            if (userName != null)
            {
                HashString nameHash = userName;
                if (users.Remove(nameHash))
                {
                    socket.ClientObject = null;
                    login(userName, ChatData.UserLoginType.Logout);
                }
            }
        }
Example #5
0
        /// <summary>
        /// 获取当前用户信息
        /// </summary>
        /// <param name="socket">TCP 内部服务套接字数据发送</param>
        /// <returns>当前用户信息</returns>
        private User getCurrentUser(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket)
        {
            string userName = (string)socket.ClientObject;

            if (userName != null)
            {
                HashString nameHash = userName;
                User       currentUser;
                if (users.TryGetValue(nameHash, out currentUser))
                {
                    return(currentUser);
                }
            }
            return(null);
        }
Example #6
0
        private bool login(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket, string userName)
        {
            HashString nameHash = userName;

            if (!users.ContainsKey(nameHash))
            {
                users.Add(nameHash, new User {
                    Name = userName
                });
                socket.ClientObject = userName;
                socket.OnCloseTask += () => logout(socket);
                login(userName, ChatData.UserLoginType.Login);
                return(true);
            }
            return(false);
        }
Example #7
0
        private void send(AutoCSer.Net.TcpOpenServer.ServerSocketSender socket, string content)
        {
            User currentUser = getCurrentUser(socket);

            if (currentUser != null)
            {
                ChatData.Message message = new ChatData.Message {
                    User = currentUser.Name, Content = content, Time = AutoCSer.Threading.SecondTimer.Now
                };
                removeUsers.ClearOnlyLength();
                foreach (var user in users)
                {
                    if (user.Value != currentUser && !user.Value.OnMessage(ref message))
                    {
                        removeUsers.Add(user.Key);
                    }
                }
                removeUser();
            }
        }
Example #8
0
 private string myName(AutoCSer.Net.TcpOpenServer.ServerSocketSender client)
 {
     return(TcpStaticServer.GetSession.MyName(client));
 }
Example #9
0
 private bool login(AutoCSer.Net.TcpOpenServer.ServerSocketSender client, string user, string password)
 {
     return(TcpStaticServer.Session.Login(client, user, password));
 }
            /// <summary>
            /// 命令处理
            /// </summary>
            /// <param name="index">命令序号</param>
            /// <param name="sender">TCP 内部服务套接字数据发送</param>
            /// <param name="data">命令数据</param>
            public override void DoCommand(int index, AutoCSer.Net.TcpOpenServer.ServerSocketSender sender, ref SubArray <byte> data)
            {
                AutoCSer.Net.TcpServer.ReturnType returnType;
                switch (index - 128)
                {
                case 0:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p1 inputParameter = new _p1();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            _p2 _outputParameter_ = new _p2();

                            bool Return;

                            Return = Value.login(sender, inputParameter.userName);
                            if (Return)
                            {
                                sender.SetVerifyMethod();
                            }
                            _outputParameter_.Return = Return;
                            sender.Push(_c0, ref _outputParameter_);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 1:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            (_s1 /**/.Pop() ?? new _s1()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue);
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 2:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s2 /**/.Pop() ?? new _s2()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 3:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            _p4 outputParameter = new _p4();

                            Value.getUser(sender, sender.GetCallback <_p4, AutoCSer.TestCase.ChatData.UserLogin>(_c3, ref outputParameter));
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 4:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            _p5 outputParameter = new _p5();

                            Value.getMessage(sender, sender.GetCallback <_p5, AutoCSer.TestCase.ChatData.Message>(_c4, ref outputParameter));
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                default: return;
                }
            }
            /// <summary>
            /// 命令处理
            /// </summary>
            /// <param name="index">命令序号</param>
            /// <param name="sender">TCP 内部服务套接字数据发送</param>
            /// <param name="data">命令数据</param>
            public override void DoCommand(int index, AutoCSer.Net.TcpOpenServer.ServerSocketSender sender, ref SubArray <byte> data)
            {
                AutoCSer.Net.TcpServer.ReturnType returnType;
                switch (index - 128)
                {
                case 0:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p1 inputParameter = new _p1();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            _p2 _outputParameter_ = new _p2();

                            int Return;

                            Return = Value.add(inputParameter.left, inputParameter.right);
                            _outputParameter_.Return = Return;
                            sender.Push(_c0, ref _outputParameter_);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 1:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            _p4 outputParameter = new _p4();

                            Value.addAsynchronous(inputParameter.left, inputParameter.right, sender.GetCallback <_p4, AutoCSer.TestCase.TcpServerPerformance.Add>(_c1, ref outputParameter));
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 2:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            _p4 _outputParameter_ = new _p4();

                            AutoCSer.TestCase.TcpServerPerformance.Add Return;

                            Return = Value.addSynchronous(inputParameter.left, inputParameter.right);
                            _outputParameter_.Return = Return;
                            sender.Push(_c2, ref _outputParameter_);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 3:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s3 /**/.Pop() ?? new _s3()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 4:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s4 /**/.Pop() ?? new _s4()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpTask, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 5:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s5 /**/.Pop() ?? new _s5()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.Timeout, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                case 6:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s6 /**/.Pop() ?? new _s6()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.ThreadPool, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.Log(error);
                    }
                    sender.Push(returnType);
                    return;

                default: return;
                }
            }
Example #12
0
            /// <summary>
            /// 命令处理
            /// </summary>
            /// <param name="index">命令序号</param>
            /// <param name="sender">TCP 内部服务套接字数据发送</param>
            /// <param name="data">命令数据</param>
            public override void DoCommand(int index, AutoCSer.Net.TcpOpenServer.ServerSocketSender sender, ref SubArray <byte> data)
            {
                AutoCSer.Net.TcpServer.ReturnType returnType;
                switch (index - 128)
                {
                case 0:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            _p1 outputParameter = new _p1();
                            _s0 serverCall      = _s0 /**/.Pop() ?? new _s0();
                            serverCall.AsynchronousCallback = sender.GetCallback <_p1, AutoCSer.TestCase.ChatData.Message>(_c0, ref outputParameter);
                            serverCall.Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue);
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.AddLog(error);
                    }
                    sender.Push(returnType);
                    return;

                case 1:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            _p2 outputParameter = new _p2();
                            _s1 serverCall      = _s1 /**/.Pop() ?? new _s1();
                            serverCall.AsynchronousCallback = sender.GetCallback <_p2, AutoCSer.TestCase.ChatData.UserLogin>(_c1, ref outputParameter);
                            serverCall.Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue);
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.AddLog(error);
                    }
                    sender.Push(returnType);
                    return;

                case 2:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p3 inputParameter = new _p3();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s2 /**/.Pop() ?? new _s2()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.AddLog(error);
                    }
                    sender.Push(returnType);
                    return;

                case 3:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        {
                            (_s3 /**/.Pop() ?? new _s3()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue);
                            return;
                        }
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.AddLog(error);
                    }
                    sender.Push(returnType);
                    return;

                case 4:
                    returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
                    try
                    {
                        _p5 inputParameter = new _p5();
                        if (sender.DeSerialize(ref data, ref inputParameter))
                        {
                            (_s4 /**/.Pop() ?? new _s4()).Set(sender, Value, AutoCSer.Net.TcpServer.ServerTaskType.TcpQueue, ref inputParameter);
                            return;
                        }
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
                    }
                    catch (Exception error)
                    {
                        returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                        sender.AddLog(error);
                    }
                    sender.Push(returnType);
                    return;

                default: return;
                }
            }