コード例 #1
0
 public void NullBufferCtorWithOffset_Throws()
 {
     Assert.Throws<ArgumentNullException>(() =>
     {
         SendPacketsElement element = new SendPacketsElement((byte[])null, 0, 0);
     });
 }
コード例 #2
0
 public void BufferCtorNegCount_ArgumentOutOfRangeException()
 {
     Assert.Throws<ArgumentOutOfRangeException>(() =>
     {
         SendPacketsElement element = new SendPacketsElement(new byte[10], 0, -1);
     });
 }
コード例 #3
0
 public void NullBufferCtorWithEndOfPacket_Throws()
 {
     Assert.Throws <ArgumentNullException>(() =>
     {
         // Elements with null Buffers are ignored on Send
         SendPacketsElement element = new SendPacketsElement((byte[])null, 0, 0, true);
     });
 }
コード例 #4
0
 public void NullBufferCtorWithEndOfPacket_Throws()
 {
     Assert.Throws<ArgumentNullException>(() =>
     {
         // Elements with null Buffers are ignored on Send
         SendPacketsElement element = new SendPacketsElement((byte[])null, 0, 0, true);
     });
 }
コード例 #5
0
ファイル: SendPacketsAsync.cs プロジェクト: wilfriedb/runtime
        public void BufferMixedBuffers_ZeroCountBufferIgnored(BufferType bufferType)
        {
            using var e1 = CreateElementForBuffer(bufferType, 10, 4, 0);
            using var e2 = CreateElementForBuffer(bufferType, 10, 4, 4);
            using var e3 = CreateElementForBuffer(bufferType, 10, 0, 4);

            SendPacketsElement[] elements = new SendPacketsElement[] { e1.Element, e2.Element, e3.Element };
            SendPackets(elements, SocketError.Success, 8);
        }
コード例 #6
0
 public void Enqueue(SendPacketsElement buffer)
 {
     if (_bytesLeft <= 0)
     {
         throw new InvalidOperationException(
                   "Too much data, check the BytesLeftToEnqueue property before enqueing too much.");
     }
     _bytesLeft -= buffer.Count;
     _buffers.Add(buffer);
 }
コード例 #7
0
 public void SendPacketsElement_FileMultiPart_Success(SocketImplementationType type)
 {
     SendPacketsElement[] elements = new SendPacketsElement[]
     {
         new SendPacketsElement(TestFileName, 10, 20),
         new SendPacketsElement(TestFileName, 30, 10),
         new SendPacketsElement(TestFileName, 0, 10),
     };
     SendPackets(type, elements, SocketError.Success, 40);
 }
コード例 #8
0
        public void FileCtorEndOfBufferFalse_Success()
        {
            SendPacketsElement element = new SendPacketsElement("SomeFileName", 6, 4, false);

            Assert.Null(element.Buffer);
            Assert.Equal(6, element.Offset);
            Assert.Equal(4, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);
        }
コード例 #9
0
 public void BufferCtorNormal_Success()
 {
     SendPacketsElement element = new SendPacketsElement(new byte[10]);
     Assert.NotNull(element.Buffer);
     Assert.Equal(10, element.Buffer.Length);
     Assert.Equal(0, element.Offset);
     Assert.Equal(10, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Null(element.FilePath);
 }
コード例 #10
0
 public void BufferMixedBuffers_ZeroCountBufferIgnored()
 {
     SendPacketsElement[] elements = new SendPacketsElement[]
     {
         new SendPacketsElement(new byte[10], 4, 0), // Ignored
         new SendPacketsElement(new byte[10], 4, 4),
         new SendPacketsElement(new byte[10], 0, 4)
     };
     SendPackets(elements, SocketError.Success, 8);
 }
コード例 #11
0
        public void FileCtorEndOfBufferTrue_Success()
        {
            SendPacketsElement element = new SendPacketsElement("SomeFileName", 2, 8, true);

            Assert.Null(element.Buffer);
            Assert.Equal(2, element.Offset);
            Assert.Equal(8, element.Count);
            Assert.True(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);
        }
コード例 #12
0
        /// <summary>
        /// Initializes new instance of <see cref="SendPacketsElementAdapter"/>.
        /// </summary>
        /// <param name="element">Element to be used by the adapter.</param>
        public SendPacketsElementAdapter(SendPacketsElement element)
            : base(element)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            _element = element;
        }
コード例 #13
0
 public void SendPacketsElement_FileMultiPart_Success()
 {
     SendPacketsElement[] elements = new SendPacketsElement[]
     {
         new SendPacketsElement(TestFileName, 10, 20),
         new SendPacketsElement(TestFileName, 30, 10),
         new SendPacketsElement(TestFileName, 0, 10),
     };
     SendPackets(elements, SocketError.Success, 40);
 }
コード例 #14
0
        public void BufferCtorEndOfBufferTrue_Success()
        {
            SendPacketsElement element = new SendPacketsElement(new byte[10], 2, 8, true);

            Assert.NotNull(element.Buffer);
            Assert.Equal(10, element.Buffer.Length);
            Assert.Equal(2, element.Offset);
            Assert.Equal(8, element.Count);
            Assert.True(element.EndOfPacket);
            Assert.Null(element.FilePath);
        }
コード例 #15
0
 public void EmptyBufferCtor_Success()
 {
     // Elements with empty Buffers are ignored on Send
     SendPacketsElement element = new SendPacketsElement(new byte[0]);
     Assert.NotNull(element.Buffer);
     Assert.Equal(0, element.Buffer.Length);
     Assert.Equal(0, element.Offset);
     Assert.Equal(0, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Null(element.FilePath);
 }
コード例 #16
0
        public void BufferCtorNormal_Success()
        {
            SendPacketsElement element = new SendPacketsElement(new byte[10]);

            Assert.NotNull(element.Buffer);
            Assert.Equal(10, element.Buffer.Length);
            Assert.Equal(0, element.Offset);
            Assert.Equal(10, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
        }
コード例 #17
0
        public void FileCtorWhiteSpace_Success()
        {
            // An exception will happen on send if this file doesn't exist
            SendPacketsElement element = new SendPacketsElement("   \t ");

            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Equal("   \t ", element.FilePath);
        }
コード例 #18
0
        public void BufferCtorEndOfBufferFalse_Success()
        {
            SendPacketsElement element = new SendPacketsElement(new byte[10], 6, 4, false);

            Assert.NotNull(element.Buffer);
            Assert.Equal(10, element.Buffer.Length);
            Assert.Equal(6, element.Offset);
            Assert.Equal(4, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
        }
コード例 #19
0
        public void FileCtorZeroCountLength_Success()
        {
            // An exception will happen on send if this file doesn't exist
            SendPacketsElement element = new SendPacketsElement("SomeFileName", 0, 0); // Send whole file

            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);
        }
コード例 #20
0
        public void EmptyBufferCtor_Success()
        {
            // Elements with empty Buffers are ignored on Send
            SendPacketsElement element = new SendPacketsElement(new byte[0]);

            Assert.NotNull(element.Buffer);
            Assert.Equal(0, element.Buffer.Length);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
        }
コード例 #21
0
        public void FileCtorEmpty_OffsetLong_Success()
        {
            // An exception will happen on send if this file doesn't exist
            SendPacketsElement element = new SendPacketsElement(string.Empty);

            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.Equal(0, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Equal(string.Empty, element.FilePath);
        }
コード例 #22
0
        public void EmptyMemoryCtor_Success()
        {
            SendPacketsElement element = new SendPacketsElement(default(ReadOnlyMemory <byte>));

            Assert.NotNull(element.MemoryBuffer);
            Assert.Equal(0, element.MemoryBuffer.Value.Length);
            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(element.MemoryBuffer.Value.Length, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
            Assert.Null(element.FileStream);
        }
コード例 #23
0
        public void memoryCtorEndOfPacketFalse_Success()
        {
            SendPacketsElement element = new SendPacketsElement(new ReadOnlyMemory <byte>(new byte[10], 6, 4), false);

            Assert.NotNull(element.MemoryBuffer);
            Assert.Equal(4, element.MemoryBuffer.Value.Length);
            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(element.MemoryBuffer.Value.Length, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
            Assert.Null(element.FileStream);
        }
コード例 #24
0
        public void MemoryCtorNormal_Success()
        {
            SendPacketsElement element = new SendPacketsElement(new byte[10].AsMemory());

            Assert.NotNull(element.MemoryBuffer);
            Assert.Equal(10, element.MemoryBuffer.Value.Length);
            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(element.MemoryBuffer.Value.Length, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
            Assert.Null(element.FileStream);
        }
コード例 #25
0
        public void FileCtorNormal_OffsetLong_FileStream_Success()
        {
            // An exception will happen on send if this file doesn't exist
            SendPacketsElement element = new SendPacketsElement("SomeFileName"); // Send whole file

            Assert.Null(element.FileStream);
            Assert.Null(element.Buffer);
            Assert.Null(element.MemoryBuffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.Equal(0, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);
        }
コード例 #26
0
        public void MemoryCtorZeroCount_Success()
        {
            // Elements with empty Buffers are ignored on Send
            SendPacketsElement element = new SendPacketsElement(new ReadOnlyMemory <byte>(new byte[0], 0, 0));

            Assert.NotNull(element.MemoryBuffer);
            Assert.Equal(0, element.MemoryBuffer.Value.Length);
            Assert.Null(element.Buffer);
            Assert.Equal(0, element.Offset);
            Assert.Equal(element.MemoryBuffer.Value.Length, element.Count);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
            Assert.Null(element.FileStream);
        }
コード例 #27
0
        public void BufferCtorZeroCount_OffsetLong_FileStream_Success()
        {
            // Elements with empty Buffers are ignored on Send
            SendPacketsElement element = new SendPacketsElement(new byte[0], 0, 0);

            Assert.NotNull(element.Buffer);
            Assert.Equal(0, element.Buffer.Length);
            Assert.Equal(0, element.Offset);
            Assert.Equal(0, element.Count);
            Assert.Equal(0, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Null(element.FilePath);
            Assert.Null(element.FileStream);
        }
コード例 #28
0
 public void FileStreamCtorNormal_Success()
 {
     using (var stream = File.Create(Path.GetTempFileName(), 4096, FileOptions.DeleteOnClose | FileOptions.Asynchronous))
     {
         SendPacketsElement element = new SendPacketsElement(stream);
         Assert.Null(element.FilePath);
         Assert.Equal(element.FileStream, stream);
         Assert.Null(element.Buffer);
         Assert.Equal(0, element.Offset);
         Assert.Equal(0, element.Count);
         Assert.Equal(0, element.OffsetLong);
         Assert.False(element.EndOfPacket);
     }
 }
コード例 #29
0
        private void SendPackets(SocketImplementationType type, SendPacketsElement element, TransmitFileOptions flags, int bytesExpected)
        {
            Assert.True(Capability.IPv6Support());

            EventWaitHandle completed = new ManualResetEvent(false);

            int port;

            using (SocketTestServer.SocketTestServerFactory(type, _serverAddress, out port))
            {
                using (Socket sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp))
                {
                    sock.Connect(new IPEndPoint(_serverAddress, port));
                    using (SocketAsyncEventArgs args = new SocketAsyncEventArgs())
                    {
                        args.Completed          += OnCompleted;
                        args.UserToken           = completed;
                        args.SendPacketsElements = new[] { element };
                        args.SendPacketsFlags    = flags;

                        if (sock.SendPacketsAsync(args))
                        {
                            Assert.True(completed.WaitOne(TestSettings.PassingTestTimeout), "Timed out");
                        }
                        Assert.Equal(SocketError.Success, args.SocketError);
                        Assert.Equal(bytesExpected, args.BytesTransferred);
                    }

                    switch (flags)
                    {
                    case TransmitFileOptions.Disconnect:
                        // Sending data again throws with socket shut down error.
                        Assert.Throws <SocketException>(() => { sock.Send(new byte[1] {
                                01
                            }); });
                        break;

                    case TransmitFileOptions.ReuseSocket & TransmitFileOptions.Disconnect:
                        // Able to send data again with reuse socket flag set.
                        Assert.Equal(1, sock.Send(new byte[1] {
                            01
                        }));
                        break;
                    }
                }
            }
        }
コード例 #30
0
        public void TransparentDispose()
        {
            var buffer   = new byte[5];
            var elements = new SendPacketsElement[2];
            var utoken   = new object();

            var saea = new SocketAsyncEventArgs();

            saea.SetBuffer(buffer, 0, 3);
            saea.SendPacketsElements = elements;
            saea.UserToken           = utoken;

            saea.Dispose();

            Assert.AreEqual(buffer, saea.Buffer);
            Assert.AreEqual(elements, saea.SendPacketsElements);
            Assert.AreEqual(utoken, saea.UserToken);
        }
コード例 #31
0
        public static Task <SocketResult> SendAsync(this Socket socket, byte[] data, IOCPBase iocpBase, UserToken userToken)
        {
            if (data.Length > iocpBase.BufferSize)
            {
                SendPacketsElement[] elements = new SendPacketsElement[1];
                elements[0] = new SendPacketsElement(data, 0, data.Length, true);
                return(SendDataAsync(socket, elements, iocpBase, userToken));
            }
            var task = userToken.CompletionSource;

            Array.Copy(data, 0, userToken.ReceiveArgs.Buffer, userToken.ReceiveArgs.Offset, data.Length);
            userToken.ReceiveArgs.SetBuffer(userToken.ReceiveArgs.Offset, data.Length);
            if (!socket.SendAsync(userToken.ReceiveArgs))
            {
                SocketResult result = new SocketResult {
                    SocketError = userToken.ReceiveArgs.SocketError, Args = userToken.ReceiveArgs
                };
                iocpBase.ProcessSend(userToken.ReceiveArgs, result);
            }
            return(task);
        }
コード例 #32
0
        public void FileStreamCtorEndOfBufferFalse_Success()
        {
            using (var stream = File.Create(Path.GetTempFileName(), 4096, FileOptions.DeleteOnClose | FileOptions.Asynchronous))
            {
                SendPacketsElement element = new SendPacketsElement(stream, 6, 4, false);
                Assert.Null(element.FilePath);
                Assert.Equal(element.FileStream, stream);
                Assert.Null(element.Buffer);
                Assert.Null(element.MemoryBuffer);
                Assert.Equal(6, element.Offset);
                Assert.Equal(4, element.Count);
                Assert.Equal(6, element.OffsetLong);
                Assert.False(element.EndOfPacket);

                element = new SendPacketsElement(stream, 6L, 4, false);
                Assert.Null(element.FilePath);
                Assert.Equal(element.FileStream, stream);
                Assert.Null(element.Buffer);
                Assert.Null(element.MemoryBuffer);
                Assert.Equal(6, element.Offset);
                Assert.Equal(4, element.Count);
                Assert.Equal(6, element.OffsetLong);
                Assert.False(element.EndOfPacket);

                element = new SendPacketsElement(stream, (long)int.MaxValue + 6, 4, false);
                Assert.Null(element.FilePath);
                Assert.Equal(element.FileStream, stream);
                Assert.Null(element.Buffer);
                Assert.Null(element.MemoryBuffer);
                Assert.Throws <OverflowException>(() =>
                {
                    var ofset = element.Offset;
                });
                Assert.Equal(4, element.Count);
                Assert.Equal((long)int.MaxValue + 6, element.OffsetLong);
                Assert.False(element.EndOfPacket);
            }
        }
コード例 #33
0
        public static SendPacketsElement[] BufferSplit(byte[] buffer, int blockSize)
        {
            MemoryStream ms = new MemoryStream(buffer);
            List <SendPacketsElement> list = new List <SendPacketsElement>();
            var size        = buffer.Length;
            var chunkCount  = blockSize;
            var bufferArray = new byte[chunkCount][];

            for (var i = 0; i < chunkCount; i++)
            {
                bufferArray[i] = new byte[chunkCount];
                for (var j = 0; j < chunkCount && i * chunkCount + j < size; j++)
                {
                    bufferArray[i][j] = buffer[i * chunkCount + j];
                }
            }
            foreach (byte[] array in bufferArray)
            {
                SendPacketsElement spe = new SendPacketsElement(array);
                list.Add(spe);
            }
            return(list.ToArray());
        }
コード例 #34
0
        public void FileCtorEndOfBufferFalse_OffsetLong_FileStream_Success()
        {
            SendPacketsElement element = new SendPacketsElement("SomeFileName", 6, 4, false);

            Assert.Null(element.FileStream);
            Assert.Null(element.Buffer);
            Assert.Null(element.MemoryBuffer);
            Assert.Equal(6, element.Offset);
            Assert.Equal(4, element.Count);
            Assert.Equal(6, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);

            element = new SendPacketsElement("SomeFileName", 6L, 4, false);
            Assert.Null(element.FileStream);
            Assert.Null(element.Buffer);
            Assert.Null(element.MemoryBuffer);
            Assert.Equal(6, element.Offset);
            Assert.Equal(4, element.Count);
            Assert.Equal(6, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);

            element = new SendPacketsElement("SomeFileName", (long)int.MaxValue + 6, 4, false);
            Assert.Null(element.FileStream);
            Assert.Null(element.Buffer);
            Assert.Null(element.MemoryBuffer);
            Assert.Throws <OverflowException>(() =>
            {
                var ofset = element.Offset;
            });
            Assert.Equal(4, element.Count);
            Assert.Equal((long)int.MaxValue + 6, element.OffsetLong);
            Assert.False(element.EndOfPacket);
            Assert.Equal("SomeFileName", element.FilePath);
        }
コード例 #35
0
 public void FileCtorNegCount_ArgumentOutOfRangeException()
 {
     Assert.Throws<ArgumentOutOfRangeException>(() =>
     {
         SendPacketsElement element = new SendPacketsElement("SomeFileName", 0, -1);
     });
 }
コード例 #36
0
 public void FileCtorZeroCountLength_Success()
 {
     // An exception will happen on send if this file doesn't exist
     SendPacketsElement element = new SendPacketsElement("SomeFileName", 0, 0); // Send whole file
     Assert.Null(element.Buffer);
     Assert.Equal(0, element.Offset);
     Assert.Equal(0, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Equal("SomeFileName", element.FilePath);
 }
コード例 #37
0
ファイル: SendPacketsAsync.cs プロジェクト: Corillian/corefx
        private void SendPackets(SocketImplementationType type, SendPacketsElement[] elements, SocketError expectedResut, int bytesExpected)
        {
            Assert.True(Capability.IPv6Support());

            EventWaitHandle completed = new ManualResetEvent(false);

            int port;
            using (SocketTestServer.SocketTestServerFactory(type, _serverAddress, out port))
            {
                using (Socket sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp))
                {
                    sock.Connect(new IPEndPoint(_serverAddress, port));
                    using (SocketAsyncEventArgs args = new SocketAsyncEventArgs())
                    {
                        args.Completed += OnCompleted;
                        args.UserToken = completed;
                        args.SendPacketsElements = elements;

                        if (sock.SendPacketsAsync(args))
                        {
                            Assert.True(completed.WaitOne(TestSettings.PassingTestTimeout), "Timed out");
                        }
                        Assert.Equal(expectedResut, args.SocketError);
                        Assert.Equal(bytesExpected, args.BytesTransferred);
                    }
                }
            }
        }
コード例 #38
0
ファイル: SendPacketsAsync.cs プロジェクト: Corillian/corefx
 private void SendPackets(SocketImplementationType type, SendPacketsElement element, SocketError expectedResut, int bytesExpected)
 {
     SendPackets(type, new SendPacketsElement[] { element }, expectedResut, bytesExpected);
 }
コード例 #39
0
ファイル: SendPacketsAsync.cs プロジェクト: Corillian/corefx
 public void SendPacketsElement_FileMultiPart_Success(SocketImplementationType type)
 {
     SendPacketsElement[] elements = new SendPacketsElement[]
     {
         new SendPacketsElement(TestFileName, 10, 20),
         new SendPacketsElement(TestFileName, 30, 10),
         new SendPacketsElement(TestFileName, 0, 10),
     };
     SendPackets(type, elements, SocketError.Success, 40);
 }
コード例 #40
0
ファイル: SendPacketsAsync.cs プロジェクト: hitomi333/corefx
 public void SendPacketsElement_FileMultiPart_Success()
 {
     SendPacketsElement[] elements = new SendPacketsElement[] 
     {
         new SendPacketsElement(TestFileName, 10, 20),
         new SendPacketsElement(TestFileName, 30, 10),
         new SendPacketsElement(TestFileName, 0, 10),
     };
     SendPackets(elements, SocketError.Success, 40);
 }
コード例 #41
0
 public void FileCtorNull_Throws()
 {
     Assert.Throws<ArgumentNullException>(() =>
     {
         SendPacketsElement element = new SendPacketsElement((string)null);
     });
 }
コード例 #42
0
 public void FileCtorEndOfBufferTrue_Success()
 {
     SendPacketsElement element = new SendPacketsElement("SomeFileName", 2, 8, true);
     Assert.Null(element.Buffer);
     Assert.Equal(2, element.Offset);
     Assert.Equal(8, element.Count);
     Assert.True(element.EndOfPacket);
     Assert.Equal("SomeFileName", element.FilePath);
 }
コード例 #43
0
 public void FileCtorEndOfBufferFalse_Success()
 {
     SendPacketsElement element = new SendPacketsElement("SomeFileName", 6, 4, false);
     Assert.Null(element.Buffer);
     Assert.Equal(6, element.Offset);
     Assert.Equal(4, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Equal("SomeFileName", element.FilePath);
 }
コード例 #44
0
 public void BufferCtorLargeOffset_ArgumentOutOfRangeException()
 {
     Assert.Throws<ArgumentOutOfRangeException>(() =>
     {
         SendPacketsElement element = new SendPacketsElement(new byte[10], 11, 1);
     });
 }
コード例 #45
0
 public void FileCtorWhiteSpace_Success()
 {
     // An exception will happen on send if this file doesn't exist
     SendPacketsElement element = new SendPacketsElement("   \t ");
     Assert.Null(element.Buffer);
     Assert.Equal(0, element.Offset);
     Assert.Equal(0, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Equal("   \t ", element.FilePath);
 }
コード例 #46
0
ファイル: SendPacketsAsync.cs プロジェクト: chcosta/corefx
        private void SendPackets(SocketImplementationType type, SendPacketsElement element, TransmitFileOptions flags, int bytesExpected)
        {
            Assert.True(Capability.IPv6Support());

            EventWaitHandle completed = new ManualResetEvent(false);

            int port;
            using (SocketTestServer.SocketTestServerFactory(type, _serverAddress, out port))
            {
                using (Socket sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp))
                {
                    sock.Connect(new IPEndPoint(_serverAddress, port));
                    using (SocketAsyncEventArgs args = new SocketAsyncEventArgs())
                    {
                        args.Completed += OnCompleted;
                        args.UserToken = completed;
                        args.SendPacketsElements = new[] { element };
                        args.SendPacketsFlags = flags;

                        if (sock.SendPacketsAsync(args))
                        {
                            Assert.True(completed.WaitOne(TestSettings.PassingTestTimeout), "Timed out");
                        }
                        Assert.Equal(SocketError.Success, args.SocketError);
                        Assert.Equal(bytesExpected, args.BytesTransferred);
                    }

                    switch (flags)
                    {
                        case TransmitFileOptions.Disconnect:
                            // Sending data again throws with socket shut down error.
                            Assert.Throws<SocketException>(() => { sock.Send(new byte[1] { 01 }); });
                            break;
                        case TransmitFileOptions.ReuseSocket & TransmitFileOptions.Disconnect:
                            // Able to send data again with reuse socket flag set.
                            Assert.Equal(1, sock.Send(new byte[1] { 01 }));
                            break;
                    }
                }
            }
        }
コード例 #47
0
 public void BufferCtorEndOfBufferFalse_Success()
 {
     SendPacketsElement element = new SendPacketsElement(new byte[10], 6, 4, false);
     Assert.NotNull(element.Buffer);
     Assert.Equal(10, element.Buffer.Length);
     Assert.Equal(6, element.Offset);
     Assert.Equal(4, element.Count);
     Assert.False(element.EndOfPacket);
     Assert.Null(element.FilePath);
 }
コード例 #48
0
ファイル: SendPacketsAsync.cs プロジェクト: Corillian/corefx
 public void BufferMixedBuffers_ZeroCountBufferIgnored(SocketImplementationType type)
 {
     SendPacketsElement[] elements = new SendPacketsElement[]
     {
         new SendPacketsElement(new byte[10], 4, 0), // Ignored
         new SendPacketsElement(new byte[10], 4, 4),
         new SendPacketsElement(new byte[10], 0, 4)
     };
     SendPackets(type, elements, SocketError.Success, 8);
 }
コード例 #49
0
ファイル: SendPacketsAsync.cs プロジェクト: hitomi333/corefx
 private void SendPackets(SendPacketsElement element, int bytesExpected)
 {
     SendPackets(new SendPacketsElement[] { element }, SocketError.Success, bytesExpected);
 }
コード例 #50
0
 public void BufferCtorEndOfBufferTrue_Success()
 {
     SendPacketsElement element = new SendPacketsElement(new byte[10], 2, 8, true);
     Assert.NotNull(element.Buffer);
     Assert.Equal(10, element.Buffer.Length);
     Assert.Equal(2, element.Offset);
     Assert.Equal(8, element.Count);
     Assert.True(element.EndOfPacket);
     Assert.Null(element.FilePath);
 }
コード例 #51
0
ファイル: SendPacketsAsync.cs プロジェクト: wilfriedb/runtime
 public ElementWithMemoryManager(SendPacketsElement element, MemoryManager <byte> memoryManager)
 {
     Element       = element;
     MemoryManager = memoryManager;
 }
コード例 #52
0
ファイル: SendPacketsAsync.cs プロジェクト: hitomi333/corefx
 private void SendPackets(SendPacketsElement element, SocketError expectedResut, int bytesExpected)
 {
     SendPackets(new SendPacketsElement[] { element }, expectedResut, bytesExpected);
 }