/// <summary> /// Serializes the specified message. /// </summary> /// <param name="system">The system.</param> /// <param name="address">TBD</param> /// <param name="message">The message.</param> /// <returns>SerializedMessage.</returns> public static SerializedMessage Serialize(ActorSystem system, Address address, object message) { var objectType = message.GetType(); Serializer serializer = system.Serialization.FindSerializerForType(objectType); var serializedMsg = new SerializedMessage { Message = ByteString.CopyFrom(serializer.ToBinaryWithAddress(address, message)), SerializerId = serializer.Identifier }; if (serializer is SerializerWithStringManifest serializer2) { var manifest = serializer2.Manifest(message); if (!string.IsNullOrEmpty(manifest)) { serializedMsg.MessageManifest = ByteString.CopyFromUtf8(manifest); } } else { if (serializer.IncludeManifest) { serializedMsg.MessageManifest = ByteString.CopyFromUtf8(objectType.TypeQualifiedName()); } } return(serializedMsg); }
/// <summary> /// Deserializes the specified message. /// </summary> /// <param name="system">The system.</param> /// <param name="messageProtocol">The message protocol.</param> /// <returns>System.Object.</returns> public static object Deserialize(ActorSystem system, SerializedMessage messageProtocol) { return(system.Serialization.Deserialize( messageProtocol.Message.ToByteArray(), messageProtocol.SerializerId, !messageProtocol.MessageManifest.IsEmpty ? messageProtocol.MessageManifest.ToStringUtf8() : null)); }
public void Setup(BenchmarkContext context) { _actorSystem = ActorSystem.Create("MessageDispatcher" + Counter.GetAndIncrement(), RemoteHocon); _systemAddress = RARP.For(_actorSystem).Provider.DefaultAddress; _inboundMessageDispatcherCounter = context.GetCounter(MessageDispatcherThroughputCounterName); _message = new SerializedMessage { SerializerId = 0, Message = ByteString.CopyFromUtf8("foo") }; _dispatcher = new DefaultMessageDispatcher(_actorSystem.AsInstanceOf <ExtendedActorSystem>(), RARP.For(_actorSystem).Provider, _actorSystem.Log); _targetActorRef = new BenchmarkActorRef(_inboundMessageDispatcherCounter, RARP.For(_actorSystem).Provider); }
/// <summary> /// Serializes the specified message. /// </summary> /// <param name="system">The system.</param> /// <param name="address">TBD</param> /// <param name="message">The message.</param> /// <returns>SerializedMessage.</returns> public static SerializedMessage Serialize(ExtendedActorSystem system, Address address, object message) { var serializer = system.Serialization.FindSerializerFor(message); var oldInfo = Akka.Serialization.Serialization.CurrentTransportInformation; try { if (oldInfo == null) { Akka.Serialization.Serialization.CurrentTransportInformation = system.Provider.SerializationInformation; } var serializedMsg = new SerializedMessage { Message = ByteString.CopyFrom(serializer.ToBinary(message)), SerializerId = serializer.Identifier }; if (serializer is SerializerWithStringManifest serializer2) { var manifest = serializer2.Manifest(message); if (!string.IsNullOrEmpty(manifest)) { serializedMsg.MessageManifest = ByteString.CopyFromUtf8(manifest); } } else { if (serializer.IncludeManifest) { serializedMsg.MessageManifest = ByteString.CopyFromUtf8(message.GetType().TypeQualifiedName()); } } return(serializedMsg); } finally { Akka.Serialization.Serialization.CurrentTransportInformation = oldInfo; } }