Exemple #1
0
        public static void QueueDisconnect(this Socket socket, SocketDisconnectTask task)
        {
            if (socket == null)
            {
                throw new ArgumentNullException("socket", "socket cannot be null");
            }

            task.Socket    = socket;
            task.Exception = null;
            IO.QueueDisconnect(task);
        }
Exemple #2
0
        public void Disconnect(Object state)
        {
            if (!disconnected)
            {
                disconnected = true;

                monitor.Stop();

                SocketDisconnectTask task = new SocketDisconnectTask();

                task.UserToken  = state;
                task.Completed += OnDisconnected;

                socket.QueueDisconnect(task);
            }
        }
Exemple #3
0
        private void ExecuteDisconnect()
        {
            IOBuffer             args = null;
            SocketDisconnectTask task = null;

            lock (discPool)
                lock (discQueue) {
                    if (discPool.Count == 0 || discQueue.Count == 0)
                    {
                        return;
                    }

                    args = discPool.Pop();
                    task = discQueue.Dequeue();

                    task.Execute(args);
                }
        }
Exemple #4
0
 public void QueueDisconnect(SocketDisconnectTask task)
 {
     lock (discQueue) discQueue.Enqueue(task);
 }