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; } }
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; } }
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; } } }
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; } }
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); }
/// <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); }
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); }
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; } }
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); }
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)); }