static void AddAkkaRemoteHost(ActorSystem system, string[] morehost = null) { var ext = system as ExtendedActorSystem; IRemoteActorRefProvider provider = ext.Provider as IRemoteActorRefProvider; var addrs = provider.Transport.Addresses; var addrslist = addrs.GetEnumerator(); addrslist.MoveNext(); Address first = addrslist.Current; if (first.Host != "localhost") { addrs.Add(new Address(first.Protocol, first.System, "localhost", first.Port)); } if (first.Host != "127.0.0.1") { addrs.Add(new Address(first.Protocol, first.System, "127.0.0.1", first.Port)); } if (morehost != null) { foreach (var host in morehost) { if (first.Host != host) { addrs.Add(new Address(first.Protocol, first.System, host, first.Port)); } } } foreach (var add in addrs) { Console.WriteLine("host at:" + add.ToString()); } }
/// <summary> /// TBD /// </summary> /// <param name="raw">TBD</param> /// <param name="provider">TBD</param> /// <param name="localAddress">TBD</param> /// <returns>TBD</returns> public override AckAndMessage DecodeMessage(ByteString raw, IRemoteActorRefProvider provider, Address localAddress) { var ackAndEnvelope = AckAndEnvelopeContainer.Parser.ParseFrom(raw); Ack ackOption = null; if (ackAndEnvelope.Ack != null) { ackOption = new Ack(new SeqNo((long)ackAndEnvelope.Ack.CumulativeAck), ackAndEnvelope.Ack.Nacks.Select(x => new SeqNo((long)x))); } Message messageOption = null; if (ackAndEnvelope.Envelope != null) { var envelopeContainer = ackAndEnvelope.Envelope; if (envelopeContainer != null) { var recipient = provider.ResolveActorRefWithLocalAddress(envelopeContainer.Recipient.Path, localAddress); Address recipientAddress; if (AddressCache != null) { recipientAddress = AddressCache.Cache.GetOrCompute(envelopeContainer.Recipient.Path); } else { ActorPath.TryParseAddress(envelopeContainer.Recipient.Path, out recipientAddress); } var serializedMessage = envelopeContainer.Message; IActorRef senderOption = null; if (envelopeContainer.Sender != null) { senderOption = provider.ResolveActorRefWithLocalAddress(envelopeContainer.Sender.Path, localAddress); } SeqNo seqOption = null; if (envelopeContainer.Seq != SeqUndefined) { unchecked { seqOption = new SeqNo((long)envelopeContainer.Seq); //proto takes a ulong } } messageOption = new Message(recipient, recipientAddress, serializedMessage, senderOption, seqOption); } } return(new AckAndMessage(ackOption, messageOption)); }
private RARP(IRemoteActorRefProvider provider) { _provider = provider; }
/// <summary> /// TBD /// </summary> /// <param name="raw">TBD</param> /// <param name="provider">TBD</param> /// <param name="localAddress">TBD</param> /// <returns>TBD</returns> public abstract AckAndMessage DecodeMessage(ByteString raw, IRemoteActorRefProvider provider, Address localAddress);
public BenchmarkActorRef(Counter counter, IRemoteActorRefProvider provider) { _counter = counter; Provider = provider; Path = new RootActorPath(provider.DefaultAddress) / "user" / "tempRef"; }
public ActorRefResolveCache(IRemoteActorRefProvider provider, int capacity = 1024, int evictAgeThreshold = 600) : base(capacity, evictAgeThreshold, FastHashComparer.Default) { _provider = provider; }
public ActorRefResolveThreadLocalCache(IRemoteActorRefProvider provider) { _provider = provider; _current = new ThreadLocal <ActorRefResolveCache>(() => new ActorRefResolveCache(_provider)); }
public ActorRefResolveCache(IRemoteActorRefProvider provider, int capacity = 1024, int evictAgeThreshold = 600) : base(capacity, evictAgeThreshold) { _provider = provider; }