コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
            }
        }