Beispiel #1
0
 private static void Unpin(UvWriteReq req)
 {
     foreach (var pin in req._pins)
     {
         pin.Free();
     }
     req._pins.Clear();
 }
Beispiel #2
0
        private static void Unpin(UvWriteReq req)
        {
            foreach (var pin in req._pins)
            {
                pin.Free();
            }
            req._pins.Clear();

            foreach (var handle in req._handles)
            {
                handle.Dispose();
            }
            req._handles.Clear();
        }
Beispiel #3
0
        public void Return(UvWriteReq req)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().Name);
            }

            if (_pool.Count < _maxPooledWriteReqs)
            {
                _pool.Enqueue(req);
            }
            else
            {
                req.Dispose();
            }
        }
Beispiel #4
0
        public UvWriteReq Allocate()
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().Name);
            }

            UvWriteReq req;
            if (_pool.Count > 0)
            {
                req = _pool.Dequeue();
            }
            else
            {
                req = new UvWriteReq();
                req.Init(_thread.Loop);
            }

            return req;
        }
        private void EndWrite(UvWriteReq writeReq)
        {
            _pendingWrites--;

            _thread.WriteReqPool.Return(writeReq);

            if (_drainWrites != null)
            {
                if (_pendingWrites == 0)
                {
                    _drainWrites.TrySetResult(null);
                }
            }
        }
 private static void WriteCallback(UvWriteReq writeReq, int status, object state)
 {
     ((UvTcpConnection)state).EndWrite(writeReq);
 }
Beispiel #7
0
 private static void Unpin(UvWriteReq req)
 {
     foreach (var pin in req._pins)
     {
         pin.Free();
     }
     req._pins.Clear();
 }