diff --git a/src/core/Akka/Actor/ActorRefProvider.cs b/src/core/Akka/Actor/ActorRefProvider.cs index f6039c33d00..3522756da1d 100644 --- a/src/core/Akka/Actor/ActorRefProvider.cs +++ b/src/core/Akka/Actor/ActorRefProvider.cs @@ -10,18 +10,22 @@ using System.Linq; using System.Threading.Tasks; using Akka.Actor.Internal; +using Akka.Annotations; using Akka.Configuration; using Akka.Dispatch; using Akka.Dispatch.SysMsg; using Akka.Event; using Akka.Routing; +using Akka.Serialization; using Akka.Util; using Akka.Util.Internal; namespace Akka.Actor { /// - /// TBD + /// The Actor Reference Provider API. + /// + /// The factory used to produce and create instances used inside an . /// public interface IActorRefProvider { @@ -133,6 +137,12 @@ public interface IActorRefProvider /// Gets the external address of the default transport. Address DefaultAddress { get; } + + /// + /// INTERNAL API. + /// + [InternalApi] + Information SerializationInformation { get; } } /// diff --git a/src/core/Akka/Serialization/Serialization.cs b/src/core/Akka/Serialization/Serialization.cs index 03aaf7384af..fadeebe7493 100644 --- a/src/core/Akka/Serialization/Serialization.cs +++ b/src/core/Akka/Serialization/Serialization.cs @@ -13,23 +13,61 @@ using System.Reflection; using System.Runtime.Serialization; using Akka.Actor; +using Akka.Annotations; using Akka.Util.Internal; using Akka.Util.Reflection; namespace Akka.Serialization { /// + /// INTERNAL API. + /// /// Serialization information needed for serializing local actor refs. /// - internal class Information + [InternalApi] + public sealed class Information : IEquatable { public Address Address { get; set; } public ActorSystem System { get; set; } + + public bool Equals(Information other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Address.Equals(other.Address) && System.Equals(other.System); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Information)obj); + } + + public override int GetHashCode() + { + unchecked + { + return (Address.GetHashCode() * 397) ^ System.GetHashCode(); + } + } + + public static bool operator ==(Information left, Information right) + { + return Equals(left, right); + } + + public static bool operator !=(Information left, Information right) + { + return !Equals(left, right); + } } /// - /// TBD + /// The serialization system used by Akka.NET to serialize and deserialize objects + /// per the 's serialization configuration. /// public class Serialization {