private void Send(object msg) { if (msg is Watch w) { var rw = new RemoteWatch(w.Watcher, _pid); Remote.EndpointManagerPid.Tell(rw); } else if (msg is Unwatch uw) { var ruw = new RemoteUnwatch(uw.Watcher, _pid); Remote.EndpointManagerPid.Tell(ruw); } else { Remote.SendMessage(_pid, msg, -1); } }
private void Send(object msg) { object message; _endpoint ??= _endpointManager.GetEndpoint(_pid.Address); switch (msg) { case Watch w: if (_endpoint is null) { System.Root.Send(w.Watcher, new Terminated { Why = TerminatedReason.AddressTerminated, Who = _pid }); return; } message = new RemoteWatch(w.Watcher, _pid); break; case Unwatch uw: if (_endpoint is null) { return; } message = new RemoteUnwatch(uw.Watcher, _pid); break; default: var(m, sender, header) = Proto.MessageEnvelope.Unwrap(msg); if (_endpoint is null) { System.EventStream.Publish(new DeadLetterEvent(_pid, m, sender)); return; } message = new RemoteDeliver(header !, m, _pid, sender !); break; } System.Root.Send(_endpoint, message); }
private void Send(object msg) { switch (msg) { case Watch w: { var rw = new RemoteWatch(w.Watcher, _pid); EndpointManager.RemoteWatch(rw); break; } case Unwatch uw: { var ruw = new RemoteUnwatch(uw.Watcher, _pid); EndpointManager.RemoteUnwatch(ruw); break; } default: Remote.SendMessage(_pid, msg, -1); break; } }