예제 #1
0
 /// <summary>
 /// TCP 服务客户端
 /// </summary>
 /// <param name="attribute">TCP服务调用配置</param>
 /// <param name="verify">获取客户端请求线程调用类型</param>
 /// <param name="serverCallQueue">自定义队列</param>
 /// <param name="onCustomData">自定义数据包处理</param>
 /// <param name="log">日志接口</param>
 /// <param name="getSocketThreadCallType">同步验证接口</param>
 /// <param name="callQueueCount">独占的 TCP 服务器端同步调用队列数量</param>
 /// <param name="isCallQueueLink">是否提供独占的 TCP 服务器端同步调用队列(低优先级)</param>
 /// <param name="isSynchronousVerifyMethod">验证函数是否同步调用</param>
 internal Server(ServerBaseAttribute attribute, Func <System.Net.Sockets.Socket, bool> verify, AutoCSer.Net.TcpServer.IServerCallQueueSet serverCallQueue, Action <SubArray <byte> > onCustomData, ILog log, AutoCSer.Threading.Thread.CallType getSocketThreadCallType, int callQueueCount, bool isCallQueueLink, bool isSynchronousVerifyMethod)
     : base(attribute, verify, log, callQueueCount, isCallQueueLink, isSynchronousVerifyMethod)
 {
     this.serverCallQueue         = serverCallQueue;
     this.onCustomData            = onCustomData;
     this.getSocketThreadCallType = getSocketThreadCallType;
 }
예제 #2
0
        internal void FastStart(object task, AutoCSer.Threading.Thread.CallType taskType)
        {
            Thread thread = threads.Pop();

            if (thread == null)
            {
                new Thread(this, task, taskType);
            }
            else
            {
                thread.RunTask(task, taskType);
            }
        }
예제 #3
0
        internal void CheckStart(object task, AutoCSer.Threading.Thread.CallType taskType)
        {
            Thread thread = threads.Pop();

            if (thread == null)
            {
                System.Threading.Thread.Sleep(0);
                if ((thread = threads.Pop()) == null)
                {
                    new Thread(this, task, taskType);
                    return;
                }
            }
            thread.RunTask(task, taskType);
        }
예제 #4
0
 /// <summary>
 /// TCP 服务套接字数据发送
 /// </summary>
 /// <param name="socket">TCP 服务套接字</param>
 /// <param name="isBuildOutputThread"></param>
 /// <param name="buildOutputThreadCallType">创建输出线程调用类型</param>
 internal ServerSocketSender(ServerSocket socket, bool isBuildOutputThread, AutoCSer.Threading.Thread.CallType buildOutputThreadCallType)
     : base(socket, isBuildOutputThread)
 {
     BuildOutputThreadCallType = buildOutputThreadCallType;
 }