Ejemplo n.º 1
0
        public void Set(TcpInternalServer.ServerSocketSender socket, TcpServer.ServerTaskType taskType)
        {
            this.Sender  = socket;
            CommandIndex = socket.ServerSocket.CommandIndex;
            //CommandFlags = CommandIdentity.GetCommandFlags();
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(ThreadPoolCall))
                {
                    AutoCSer.Threading.LinkTask.Task.Add(this);
                }
                return;

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.LinkTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueueLink: TcpServer.ServerCallQueue.DefaultLink.Add(this); return;

            case TcpServer.ServerTaskType.Queue: socket.Server.CallQueue.Add(this); return;

            case TcpServer.ServerTaskType.QueueLink: socket.Server.CallQueueLink.Add(this); return;
            }
        }
Ejemplo n.º 2
0
        public void Set(ServerSocketSender socket, serverType serverValue, TcpServer.ServerTaskType taskType)
        {
            this.Sender      = socket;
            this.serverValue = serverValue;
            CommandIndex     = socket.ServerSocket.CommandIndex;
            //CommandFlags = CommandIdentity.GetCommandFlags();
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(ThreadPoolCall))
                {
                    AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(this);
                }
                return;

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(this); return;

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallThreadArray.Default.CurrentThread.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueueLink: TcpServer.ServerCallQueue.DefaultLink.Add(this); return;

            case TcpServer.ServerTaskType.Queue: socket.Server.CallQueue.Add(this); return;

            case TcpServer.ServerTaskType.QueueLink: socket.Server.CallQueueLink.Add(this); return;
            }
        }
Ejemplo n.º 3
0
 public async Task AddTaskAsync(Action task, TcpServer.ServerTaskType taskType, byte callQueueIndex = 0)
 {
     if (task != null)
     {
         CustomTaskAsyncServerCall serverCall = new CustomTaskAsyncServerCall(this, task);
         if (addTask(serverCall, taskType, callQueueIndex))
         {
             await serverCall;
         }
     }
 }
Ejemplo n.º 4
0
        public void Set(TcpInternalServer.ServerSocketSender socket, TcpServer.ServerTaskType taskType, byte callQueueIndex)
        {
            this.Sender  = socket;
            CommandIndex = socket.ServerSocket.CommandIndex;
            //CommandFlags = CommandIdentity.GetCommandFlags();
            switch (taskType)
            {
            case TcpServer.ServerTaskType.Queue: socket.Server.CallQueueArray[callQueueIndex].Key.Add(this); return;

            case TcpServer.ServerTaskType.QueueLink: socket.Server.CallQueueArray[callQueueIndex].Value.Add(this); return;
            }
        }
Ejemplo n.º 5
0
 public bool AddWaitTask(Action task, TcpServer.ServerTaskType taskType, byte callQueueIndex = 0)
 {
     if (task != null)
     {
         CustomWaitServerCall serverCall = new CustomWaitServerCall {
             Sender = this, Task = task
         };
         serverCall.Wait.Set(0);
         if (addTask(serverCall, taskType, callQueueIndex))
         {
             serverCall.Wait.Wait();
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 添加自定义 TCP 服务器端同步调用任务
        /// </summary>
        /// <param name="serverCall">TCP 服务器端同步调用任务</param>
        /// <param name="taskType">任务类型</param>
        /// <param name="callQueueIndex">独占 TCP 服务器端同步调用队列编号</param>
        /// <returns>是否添加成功</returns>
        private bool addTask(ServerCall serverCall, TcpServer.ServerTaskType taskType, byte callQueueIndex)
        {
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(serverCall.ThreadPoolCall))
                {
                    AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(serverCall);
                }
                return(true);

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallThreadArray.Default.CurrentThread.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.TcpQueueLink: TcpServer.ServerCallQueue.DefaultLink.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.Queue:
                if (callQueueIndex == 0)
                {
                    ServerSocket.CallQueue.Add(serverCall);
                }
                else
                {
                    ServerSocket.CallQueueArray[callQueueIndex].Key.Add(serverCall);
                }
                return(true);

            case TcpServer.ServerTaskType.QueueLink:
                if (callQueueIndex == 0)
                {
                    ServerSocket.CallQueueLink.Add(serverCall);
                }
                else
                {
                    ServerSocket.CallQueueArray[callQueueIndex].Value.Add(serverCall);
                }
                return(true);
            }
            return(false);
        }
Ejemplo n.º 7
0
        public void Set(TcpInternalSimpleServer.ServerSocket socket, TcpServer.ServerTaskType taskType)
        {
            Socket = socket;
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(threadPoolCall))
                {
                    AutoCSer.Threading.LinkTask.Task.Add(this);
                }
                return;

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.LinkTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return;

            case TcpServer.ServerTaskType.Queue: socket.Server.CallQueue.Add(this); return;
            }
        }
        /// <summary>
        /// 添加自定义 TCP 服务器端同步调用任务
        /// </summary>
        /// <param name="serverCall">TCP 服务器端同步调用任务</param>
        /// <param name="taskType">任务类型</param>
        /// <returns>是否添加成功</returns>
        private bool addTask(ServerCall serverCall, TcpServer.ServerTaskType taskType)
        {
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(serverCall.ThreadPoolCall))
                {
                    AutoCSer.Threading.LinkTask.Task.Add(serverCall);
                }
                return(true);

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.LinkTask.Task.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallTask.Task.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(serverCall); return(true);

            case TcpServer.ServerTaskType.Queue: ServerSocket.CallQueue.Add(serverCall); return(true);
            }
            return(false);
        }
Ejemplo n.º 9
0
        private void set(ServerSocket socket, object serverValue, TcpServer.ServerTaskType taskType)
        {
            this.Socket      = socket;
            this.serverValue = serverValue;
            //CommandFlags = CommandIdentity.GetCommandFlags();
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(ThreadPoolCall))
                {
                    AutoCSer.Threading.LinkTask.Task.Add(this);
                }
                return;

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.LinkTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return;

            case TcpServer.ServerTaskType.Queue: socket.Server.CallQueue.Add(this); return;
            }
        }
        internal void Set(ServerSocketSender sender, TcpServer.ServerTaskType taskType, ref RemoteExpression.ClientNode inputParameter)
        {
            this.Sender         = sender;
            CommandIndex        = sender.ServerSocket.CommandIndex;
            this.inputParameter = inputParameter;
            switch (taskType)
            {
            case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(threadPoolCall))
                {
                    AutoCSer.Threading.LinkTask.Task.Add(this);
                }
                return;

            case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.LinkTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallTask.Task.Add(this); return;

            case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return;

            case TcpServer.ServerTaskType.Queue: sender.Server.CallQueue.Add(this); return;
            }
        }
Ejemplo n.º 11
0
 public static void Call <callType>(ServerSocket socket, object serverValue, TcpServer.ServerTaskType taskType)
     where callType : ServerCall
 {
     (AutoCSer.Threading.RingPool <callType> .Default.Pop() ?? AutoCSer.Emit.Constructor <callType> .New()).set(socket, serverValue, taskType);
 }
Ejemplo n.º 12
0
 public bool AddTask(Action task, TcpServer.ServerTaskType taskType, byte callQueueIndex = 0)
 {
     return(task != null && addTask(new CustomServerCall {
         Sender = this, Task = task
     }, taskType, callQueueIndex));
 }
 public bool AddTask(Action task, TcpServer.ServerTaskType taskType)
 {
     return(task != null && addTask(new CustomServerCall {
         Sender = this, Task = task
     }, taskType));
 }