コード例 #1
0
        public void TestJsonLinkRequestWriteRead3()
        {
            // Arrange
            var address = new ProxySocketAddress();

            address.Port = 1;
            address.Host = "";

            var props = new SocketInfo();

            props.Address  = address;
            props.Family   = AddressFamily.Proxy;
            props.Protocol = ProtocolType.Unspecified;
            props.Type     = SocketType.Dgram;
            props.Flags    = (uint)SocketFlags.Internal;

            for (Int32 i = 0; i < 3; i++)
            {
                props.Options.Add(Property <ulong> .Create((uint)(13 - i), (ulong)i));
            }

            props.Options.Add(Property <IMulticastOption> .Create((uint)SocketOption.IpMulticastJoin,
                                                                  new Inet4MulticastOption {
                InterfaceIndex = 5, Address = BitConverter.GetBytes((int)234)
            }));
            var ab = new byte[16];

            new Random().NextBytes(ab);
            props.Options.Add(Property <IMulticastOption> .Create((uint)SocketOption.IpMulticastLeave,
                                                                  new Inet6MulticastOption {
                InterfaceIndex = 5, Address = ab
            }));

            var request = Message.Create(null, null, null, LinkRequest.Create(props));
            var stream  = new MemoryStream();

            // Act
            request.Encode(stream, CodecId.Json);
            byte[] buf      = Interop.MessageDecodeEncode(CodecId.Json, 1, stream.GetBuffer(), stream.Length, buffer, buffer.Length);
            var    returned = Serializable.Decode <Message>(new MemoryStream(buf), CodecId.Json);

            // Assert
            Assert.IsTrue(request.Equals(returned));
        }