public void Send(INetworkChannel channel, bool logmsg, string messageName, params IMessage[] messageBodys) { var apc = Apc.Allocate(); apc.FunctionName = messageName; foreach (var msg in messageBodys) { if (null == msg) { continue; } MemoryStream stream = new MemoryStream(); _serializer.Serialize(stream, msg); ByteString byteString = ByteString.CopyFrom(stream.ToArray()); apc.Parameters.Add(byteString); } channel.SendReliable(messageName.GetHashCode(), apc); if (logmsg) { _logger.InfoFormat("Send Rpc Message {0} hascode {1} ref count {2}", messageName, messageName.GetHashCode(), apc.RefCount); } apc.ReleaseReference(); }
public void StatusUpdateTest() { // sample message (this caused deserialization issues) var message = new StatusUpdateMessage() { InstanceHash = new Hash(new byte[] { 1, 2, 3 }), KnownPackages = new PackageStatus[0], KnownPeers = new DiscoveryPeerData[] { new DiscoveryPeerData() { ServiceEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.110"), 1234), PeerId = new Hash(new byte[] { 4, 5, 6 }) } }, ServicePort = 5432, PeerEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.109"), 5678) }; // serialize/deserialize IMessageSerializer serializer = new ProtoBufMessageSerializer(); byte[] bytes = serializer.Serialize((object)message, typeof(StatusUpdateMessage)); var des = serializer.Deserialize <StatusUpdateMessage>(bytes); // compare Assert.NotNull(des); Assert.Equal(message.ServicePort, des.ServicePort); Assert.Equal(message.InstanceHash, des.InstanceHash); Assert.Equal(message.PeerEndpoint, des.PeerEndpoint); Assert.NotNull(des.KnownPeers); Assert.Equal(message.KnownPeers, des.KnownPeers, DiscoveryPeerData.Comparer); }
public void IPv4AddressTest() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); IPAddress adr = IPAddress.Parse("8.8.8.8"); byte[] bytes = serializer.Serialize(adr); var result = serializer.Deserialize <IPAddress>(bytes); Assert.Equal(adr, result); }
public void IPv6AddressTest() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); IPAddress adr = IPAddress.Parse("2001:db8::ff00:42:8329"); byte[] bytes = serializer.Serialize(adr); var result = serializer.Deserialize <IPAddress>(bytes); Assert.Equal(adr, result); }
public void IPEndpointTest() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); var endPoint = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 567); byte[] bytes = serializer.Serialize(endPoint); var result = serializer.Deserialize <IPEndPoint>(bytes); Assert.Equal(endPoint.Port, result.Port); Assert.Equal(endPoint.Address, result.Address); }
public void ShouldSerializeToProtoBuf() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); var message = new TestMessageProto { Id = 123, Name = "SomeName" }; var serialize = serializer.Serialize(message); Assert.NotNull(serialize); Assert.Equal(serialize.Length, 25); }
public void Send(INetworkChannel channel, string messageName, params IMessage[] messageBodys) { var apc = Apc.Allocate(); apc.FunctionName = messageName; foreach (var msg in messageBodys) { if (null == msg) { continue; } MemoryStream stream = new MemoryStream(); _serializer.Serialize(stream, msg); ByteString byteString = ByteString.CopyFrom(stream.ToArray()); apc.Parameters.Add(byteString); } channel.SendReliable(messageName.GetHashCode(), apc); apc.ReleaseReference(); }
public void ShouldSerializeToProtoBuf() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); var message = new TestMessage { Id = 123, Name = "SomeName" }; var serialize = serializer.Serialize(message); Assert.That(serialize, Is.Not.Null); Assert.That(serialize, Has.Length.EqualTo(25)); }
public void ShouldDeserializeFromProtoBuf() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); IMessageDeserializer <TestMessageProto> deserializer = new ProtoBufMessageDeserializer <TestMessageProto>(); var message = new TestMessageProto { Id = 123, Name = "SomeName" }; var serialize = serializer.Serialize(message); var deserialize = deserializer.Deserialize(serialize); Assert.Equal(message, deserialize); }
public void ThreadSafeTest() { IMessageSerializer serializer = new ProtoBufMessageSerializer(); var r = Enumerable.Range(0, 50).AsParallel() .WithDegreeOfParallelism(10) .Select(i => serializer.Serialize(new IPEndPoint(IPAddress.Parse("1.2.3.4"), 567))) .ToArray(); Assert.All(r, ri => { var result = serializer.Deserialize <IPEndPoint>(ri); Assert.Equal(567, result.Port); Assert.Equal(IPAddress.Parse("1.2.3.4"), result.Address); }); }