コード例 #1
0
ファイル: SocketChannel.cs プロジェクト: Greeley/Samples
        public SocketChannel(BufferManager bufferManager)
        {
            if (bufferManager == null) throw new ArgumentNullException("bufferManager");
            _readBuffer = bufferManager.Pop();
            _readArgs.SetBuffer(_readBuffer.Buffer, _readBuffer.Offset, _readBuffer.Capacity);
            _readArgs.Completed += OnReadCompleted;

            _writeArgs.SendPacketsFlags = TransmitFileOptions.WriteBehind;
            _writeArgs.Completed += OnWriteCompleted;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Greeley/Samples
        static void Main(string[] args)
        {
            responseSlice = new BufferSlice(_responseBytes, 0, _responseBytes.Length);

            ThreadPool.SetMinThreads(100, 100);
            var server = new HttpListener(10000);
            server.PreAllocateChannels(1000);
            server.RequestHandler = OnRequests;
            server.Start(8844);

            System.Console.WriteLine("Running");
            System.Console.ReadLine();
        }
コード例 #3
0
ファイル: WriterContext.cs プロジェクト: Greeley/Samples
        public void Enqueue(byte[] buffer)
        {
            if (!CanEnqueueMore)
                throw new InvalidOperationException("Cannot enqueue more buffers.");

            var slice = new BufferSlice(buffer, 0, buffer.Length) { LibraryState = buffer };
            _queue[_index++] = slice;
            ++_sliceCount;
            _bytesEnqueued += buffer.Length;
        }
コード例 #4
0
ファイル: WriterContext.cs プロジェクト: Greeley/Samples
        public void Enqueue(byte[] buffer, int offset, int count)
        {
            if (offset + count > buffer.Length)
                throw new ArgumentOutOfRangeException("buffer", offset + count,
                    "Offset+Count is larger than the buffer size. Buffer size: " + buffer.Length);
            if (offset < 0)
                throw new ArgumentOutOfRangeException("offset", offset, "Must be 0 or larger");
            if (count < 1)
                throw new ArgumentOutOfRangeException("count", count,
                    "At least 1 byte must be allocated for this slize.");
            if (!CanEnqueueMore)
                throw new InvalidOperationException("Cannot enqueue more buffers.");

            var slice = new BufferSlice(buffer, offset, count) { LibraryState = buffer };
            _queue[_index++] = slice;
            ++_sliceCount;
            _bytesEnqueued += count;
        }
コード例 #5
0
ファイル: WriterContext.cs プロジェクト: Greeley/Samples
        public void Enqueue(BufferSlice slice)
        {
            if (slice == null) throw new ArgumentNullException("slice");
            if (!CanEnqueueMore)
                throw new InvalidOperationException("Cannot enqueue more bytes.");

            _queue[_index++] = slice;
            ++_sliceCount;
            _bytesEnqueued += slice.Count2;
        }
コード例 #6
0
ファイル: BufferManager.cs プロジェクト: Greeley/Samples
 public void Push(BufferSlice slice)
 {
     if (slice == null) throw new ArgumentNullException("slice");
     _slices.Enqueue(slice);
 }