public void DeliverTo(string id, object message, object payload, IActorRef sender) { var name = Uri.EscapeDataString(id); var child = Context.Child(name); if (Equals(child, ActorRefs.Nobody)) { if (State.Entries.Contains(id)) { if (MessageBuffers.ContainsKey(id)) { throw new InvalidOperationException($"Message buffers contains id [{id}]."); } this.GetEntity(id).Tell(payload, sender); } else { // Note; we only do this if remembering, otherwise the buffer is an overhead MessageBuffers = MessageBuffers.SetItem(id, ImmutableList <Tuple <object, IActorRef> > .Empty.Add(Tuple.Create(message, sender))); ProcessChange(new Shard.EntityStarted(id), this.SendMessageBuffer); } } else { child.Tell(payload, sender); } }
/// <summary> /// TBD /// </summary> /// <param name="id">TBD</param> /// <param name="message">TBD</param> /// <param name="payload">TBD</param> /// <param name="sender">TBD</param> /// <returns>TBD</returns> protected override void DeliverTo(string id, object message, object payload, IActorRef sender) { var name = Uri.EscapeDataString(id); var child = _context.Child(name); if (Equals(child, ActorRefs.Nobody)) { // Note; we only do this if remembering, otherwise the buffer is an overhead MessageBuffers = MessageBuffers.SetItem(id, ImmutableList <Tuple <object, IActorRef> > .Empty.Add(Tuple.Create(message, sender))); ProcessChange(new EntityStarted(id), SendMessageBuffer); } else { child.Tell(payload, sender); } }