Exemple #1
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="systemMessage">TBD</param>
        public override void SendSystemMessage(ISystemMessage systemMessage)
        {
            var failed = systemMessage as Failed;

            if (failed != null)
            {
                var cause = failed.Cause;
                var child = failed.Child;
                _log.Error(cause, "guardian {0} failed, shutting down!", child);
                CauseOfTermination = cause;
                ((IInternalActorRef)child).Stop();
                return;
            }
            var supervise = systemMessage as Supervise;

            if (supervise != null)
            {
                // This comment comes from AKKA: TO DO register child in some map to keep track of it and enable shutdown after all dead
                return;
            }
            var deathWatchNotification = systemMessage as DeathWatchNotification;

            if (deathWatchNotification != null)
            {
                Stop();
                return;
            }
            _log.Error("{0} received unexpected system message [{1}]", _path, systemMessage);
        }
Exemple #2
0
 /// <summary>
 /// Sends the system message.
 /// </summary>
 /// <param name="message">The message.</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     try
     {
         //send to remote, unless watch message is intercepted by the remoteWatcher
         var watch = message as Watch;
         if (watch != null && IsWatchIntercepted(watch.Watchee, watch.Watcher))
         {
             RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.WatchRemote(watch.Watchee, watch.Watcher));
         }
         else
         {
             var unwatch = message as Unwatch;
             if (unwatch != null && IsWatchIntercepted(unwatch.Watchee, unwatch.Watcher))
             {
                 RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.UnwatchRemote(unwatch.Watchee,
                                                                                   unwatch.Watcher));
             }
             else
             {
                 Remote.Send(message, null, this);
             }
         }
     }
     catch (Exception ex)
     {
         HandleException(ex);
     }
 }
 private void SendSystemMessage(ISystemMessage systemMessage)
 {
     _stopped.IfOff(() =>
     {
         var failed = systemMessage as Failed;
         if(failed != null)
         {
             var cause = failed.Cause;
             var child = failed.Child;
             _log.Error(cause, "guardian {0} failed, shutting down!", child);
             CauseOfTermination = cause;
             ((IInternalActorRef) child).Stop();
             return;
         }
         var supervise = systemMessage as Supervise;
         if(supervise != null)
         {
             // This comment comes from AKKA: TO DO register child in some map to keep track of it and enable shutdown after all dead
             return;
         }
         var deathWatchNotification = systemMessage as DeathWatchNotification;
         if(deathWatchNotification != null)
         {
             Stop();
             return;
         }
         _log.Error("{0} received unexpected system message [{1}]",_path,systemMessage);
     });
 }
 /// <summary>
 ///     Afters the send system message.
 /// </summary>
 /// <param name="message">The message.</param>
 public void AfterSendSystemMessage(ISystemMessage message)
 {
     message.Match()
     .With <RemoteWatcher.Rewatch>(rew => _remoteWatcher.Tell(new RemoteWatcher.RewatchRemote(rew.Watchee, rew.Watcher)))
     .With <Watch>(m => _remoteWatcher.Tell(new RemoteWatcher.WatchRemote(m.Watchee, m.Watcher)))
     .With <Unwatch>(m => _remoteWatcher.Tell(new RemoteWatcher.UnwatchRemote(m.Watchee, m.Watcher)));
 }
 private void SendSystemMessage(ISystemMessage systemMessage)
 {
     try
     {
         Self.Tell(systemMessage);
     }
     catch (Exception e)
     {
         _systemImpl.EventStream.Publish(new Error(e, _self.Parent.ToString(), ActorType, "Swallowing exception during message send"));
     }
 }
 /// <summary>
 /// TBD
 /// </summary>
 /// <remarks>➡➡➡ NEVER SEND THE SAME SYSTEM MESSAGE OBJECT TO TWO ACTORS ⬅⬅⬅</remarks>
 /// <param name="systemMessage">TBD</param>
 public void SendSystemMessage(ISystemMessage systemMessage)
 {
     try
     {
         Dispatcher.SystemDispatch(this, (SystemMessage)systemMessage);
     }
     catch (Exception e)
     {
         _systemImpl.EventStream.Publish(new Error(e, _self.Parent.ToString(), ActorType, "Swallowing exception during message send"));
     }
 }
Exemple #7
0
 public LoginServerClient(ISessionRecivedHandler sessionRecivedHandler,
                          ISystemMessage systemMessage,
                          ILogger logger, IUdpClient udpClient,
                          ISoeActionFactory soeActionFactory)
 {
     _soeActionFactory      = soeActionFactory;
     _sessionRecivedHandler = sessionRecivedHandler;
     _systemMessage         = systemMessage;
     _logger    = logger;
     _udpClient = udpClient;
     _eventHandler.UdpPacketsRecived += TryHandleInncommingPacket;
 }
Exemple #8
0
        public void SendSystemMessage(ISystemMessage message, IActorRef sender)
        {
            var d = message as DeathWatchNotification;

            if (message is Terminate)
            {
                Stop();
            }
            else if (d != null)
            {
                this.Tell(new Terminated(d.Actor, d.ExistenceConfirmed, d.AddressTerminated));
            }
        }
Exemple #9
0
 public override void SendSystemMessage(ISystemMessage message)
 {
     if (message is DeathWatchNotification)
     {
         var deathWatchNotification = message as DeathWatchNotification;
         var child = deathWatchNotification.Actor as ActorRefWithCell;
         if (child != null)
         {
             if (child.IsLocal)
             {
                 _terminating.Locked(() =>
                 {
                     var name = child.Path.Elements.Drop(1).Join("/");
                     RemoveChild(name, child);
                     var parent = child.Parent;
                     if (RemoveChildParentNeedsUnwatch(parent, child))
                     {
                         parent.SendSystemMessage(new Unwatch(parent, this));
                     }
                     TerminationHookDoneWhenNoChildren();
                 });
             }
         }
         else
         {
             var parent          = deathWatchNotification.Actor;
             var parentWithScope = parent as IActorRefScope;
             if (parentWithScope != null && !parentWithScope.IsLocal)
             {
                 _terminating.Locked(() =>
                 {
                     IImmutableSet <IActorRef> children;
                     if (_parent2Children.TryRemove(parent, out children))
                     {
                         foreach (var c in children)
                         {
                             _system.Stop(c);
                             var name = c.Path.Elements.Drop(1).Join("/");
                             RemoveChild(name, c);
                         }
                         TerminationHookDoneWhenNoChildren();
                     }
                 });
             }
         }
     }
     else
     {
         base.SendSystemMessage(message);
     }
 }
Exemple #10
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 public void SendSystemMessage(ISystemMessage message)
 {
     lock (_lock)
     {
         var cell = _self.Underlying;
         if (CellIsReady(cell))
         {
             cell.SendSystemMessage(message);
         }
         else
         {
             _sysMsgQueue = _sysMsgQueue + (SystemMessage)message;
             Mailbox.DebugPrint("{0} temp queueing system message {1}", Self, message);
         }
     }
 }
 /// <summary>
 /// Sends the system message.
 /// </summary>
 /// <param name="message">The message.</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     try
     {
         //send to remote, unless watch message is intercepted by the remoteWatcher
         if (message is Watch watch && IsWatchIntercepted(watch.Watchee, watch.Watcher))
         {
             RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.WatchRemote(watch.Watchee, watch.Watcher));
         }
         else
         {
             if (message is Unwatch unwatch && IsWatchIntercepted(unwatch.Watchee, unwatch.Watcher))
             {
                 RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.UnwatchRemote(unwatch.Watchee,
                                                                                   unwatch.Watcher));
             }
Exemple #12
0
        public override void SendSystemMessage(ISystemMessage message)
        {
            switch (message)
            {
            case Watch watch:
                AddWatcher(watch.Watchee, watch.Watcher);
                break;

            case Unwatch unwatch:
                RemoveWatcher(unwatch.Watchee, unwatch.Watcher);
                break;

            case DeathWatchNotification deathWatch:
                this.Tell(new Terminated(deathWatch.Actor, existenceConfirmed: true, addressTerminated: false), deathWatch.Actor);
                break;
            }
        }
Exemple #13
0
 //TODO: isn't SendSystemMessage supposed to be a part of ActorRef? Why isn't it overridable?
 private void SendSystemMessage(ISystemMessage message)
 {
     if (message is Terminate)
     {
         Stop();
     }
     else if (message is DeathWatchNotification)
     {
         var dw = message as DeathWatchNotification;
         Tell(new Terminated(dw.Actor, dw.ExistenceConfirmed, dw.AddressTerminated), this);
     }
     else if (message is Watch)
     {
         var watch = message as Watch;
         if (watch.Watchee == this)
         {
             if (!AddWatcher(watch.Watcher))
             {
                 // ➡➡➡ NEVER SEND THE SAME SYSTEM MESSAGE OBJECT TO TWO ACTORS ⬅⬅⬅
                 watch.Watcher.Tell(new DeathWatchNotification(watch.Watchee, existenceConfirmed: true,
                                                               addressTerminated: false));
             }
             else
             {
                 //TODO: find a way to get access to logger?
                 Console.WriteLine("BUG: illegal Watch({0},{1}) for {2}", watch.Watchee, watch.Watcher, this);
             }
         }
     }
     else if (message is Unwatch)
     {
         var unwatch = message as Unwatch;
         if (unwatch.Watchee == this && unwatch.Watcher != this)
         {
             RemoveWatcher(unwatch.Watcher);
         }
         else
         {
             Console.WriteLine("BUG: illegal Unwatch({0},{1}) for {2}", unwatch.Watchee, unwatch.Watcher, this);
         }
     }
     else
     {
     }
 }
Exemple #14
0
        public object ProcessRequest(ISystemMessage request)
        {
            var module = this._moduleManager.GetAppModule(request.SourceModule);

            if (module == null)
            {
                return(null);
            }
            switch (request.Type)
            {
            case SystemMessageType.RenderContent:
                this._content.ActivateItem(new ModuleContentViewModel
                {
                    Title         = request.Title,
                    ModuleName    = module.Name,
                    ModuleIcon    = module.IconContent,
                    ModuleContent = request.Body
                });
                return(null);

            default:
                return(null);
            }
        }
 private void SendSystemMessage(ISystemMessage message)
 {
     Mailbox.DebugPrint("EmptyLocalActorRef {0} having enqueued {1}", Path, message);
     SpecialHandle(message, _provider.DeadLetters);
 }
 /// <remarks>➡➡➡ NEVER SEND THE SAME SYSTEM MESSAGE OBJECT TO TWO ACTORS ⬅⬅⬅</remarks>
 public void SendSystemMessage(ISystemMessage systemMessage)
 {
     try
     {
         Dispatcher.SystemDispatch(this, (SystemMessage)systemMessage);
     }
     catch (Exception e)
     {
         _systemImpl.EventStream.Publish(new Error(e, _self.Parent.ToString(), ActorType, "Swallowing exception during message send"));
     }
 }
Exemple #17
0
 /// <summary>
 /// Sends the system message.
 /// </summary>
 /// <param name="message">The message.</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     try
     {
         //send to remote, unless watch message is intercepted by the remoteWatcher
         var watch = message as Watch;
         if (watch != null && IsWatchIntercepted(watch.Watchee, watch.Watcher))
         {
             RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.WatchRemote(watch.Watchee, watch.Watcher));
         }
         else
         {
             var unwatch = message as Unwatch;
             if (unwatch != null && IsWatchIntercepted(unwatch.Watchee, unwatch.Watcher))
             {
                 RemoteProvider.RemoteWatcher.Tell(new RemoteWatcher.UnwatchRemote(unwatch.Watchee,
                     unwatch.Watcher));
             }
             else
             {
                 Remote.Send(message, null, this);
             }
         }
     }
     catch (Exception ex)
     {
         HandleException(ex);
     }
 }
Exemple #18
0
 public override void SendSystemMessage(ISystemMessage message)
 {
     _cell.SendSystemMessage(message);
 }
 public void SendSystemMessage(ISystemMessage message)
 {
     ActorRef.SendSystemMessage(message);
 }
Exemple #20
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     Underlying.SendSystemMessage(message);
 }
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 /// <param name="sender">TBD</param>
 public void SendSystemMessage(ISystemMessage message, IActorRef sender)
 {
     _internalRef.SendSystemMessage(message);
 }
 public SessionRecivedHandler(ISystemMessage systemMessage)
 {
     _systemMessage = systemMessage;
 }
Exemple #23
0
 internal static string GetSystemMessageContent(ISystemMessage message, IGuild guild)
 => message.Type switch
 {
 /// <summary>
 /// Sends the system message.
 /// </summary>
 /// <param name="message">The message.</param>
 private void SendSystemMessage(ISystemMessage message)
 {
     Remote.Send(message, null, this);
     Remote.Provider.AfterSendSystemMessage(message);
 }
        public override void SendSystemMessage(ISystemMessage message)
        {
            if (message is DeathWatchNotification)
            {
                var deathWatchNotification = message as DeathWatchNotification;
                var child = deathWatchNotification.Actor as ActorRefWithCell;
                if (child != null)
                {
                    if (child.IsLocal)
                    {

                        _terminating.Locked(() =>
                        {
                            var name = child.Path.Elements.Drop(1).Join("/");
                            RemoveChild(name, child);
                            var parent = child.Parent;
                            if (RemoveChildParentNeedsUnwatch(parent, child))
                            {
                                parent.SendSystemMessage(new Unwatch(parent, this));
                            }
                            TerminationHookDoneWhenNoChildren();

                        });
                    }
                }
                else
                {
                    var parent = deathWatchNotification.Actor;
                    var parentWithScope = parent as IActorRefScope;
                    if (parentWithScope != null && !parentWithScope.IsLocal)
                    {
                        _terminating.Locked(() =>
                        {
                            IImmutableSet<IActorRef> children;
                            if (_parent2Children.TryRemove(parent, out children))
                            {
                                foreach (var c in children)
                                {
                                    _system.Stop(c);
                                    var name = c.Path.Elements.Drop(1).Join("/");
                                    RemoveChild(name, c);
                                }
                                TerminationHookDoneWhenNoChildren();
                            }
                        });
                    }
                }
            }
            else
            {
                base.SendSystemMessage(message);
            }
        }
 /// <summary>
 ///   Used to invoke system messages.
 /// </summary>
 /// <param name="envelope">The envelope.</param>
 /// <exception cref="ActorInitializationException">
 /// This exception is thrown if a <see cref="Akka.Dispatch.SysMsg.Create"/> system message is included in the given <paramref name="envelope"/>.
 /// </exception>
 /// <exception cref="NotSupportedException">
 /// This exception is thrown if an unknown message type is included in the given <paramref name="envelope"/>.
 /// </exception>
 internal void SystemInvoke(ISystemMessage envelope)
 {
     SysMsgInvokeAll(new EarliestFirstSystemMessageList((SystemMessage)envelope), CalculateState());
 }
 public void SendSystemMessage(ISystemMessage systemMessage)
 {
     try
     {
         // TODO: use a dispatcher or the mailbox to post a message directly
         _mailbox.Post(Self, new Envelope() { Message = systemMessage, Sender = ActorRefs.NoSender});
     }
     catch (Exception e)
     {
         _systemImpl.EventStream.Publish(new Error(e, _self.Parent.ToString(), ActorType, "Swallowing exception during message send"));
     }
 }
Exemple #28
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     Mailbox.DebugPrint("EmptyLocalActorRef {0} having enqueued {1}", Path, message);
     SpecialHandle(message, _provider.DeadLetters);
 }
Exemple #29
0
            //全て手動. 汚い.
            public static string Translate(ISystemMessage systemMessage)
            {
                var type       = systemMessage.GetType();
                var translator = LanguageManager.Instance.Translator;

                if (type == typeof(NotYourTurnMessage))
                {
                    return(translator.Translate(TranslatableKeys.NotYourTurnMessage).Text);
                }
                else if (type == typeof(NotYourPieceMessage))
                {
                    return(translator.Translate(TranslatableKeys.NotYourPieceMessage).Text);
                }
                else if (type == typeof(PieceMovementMessage))
                {
                    //Player = player;
                    //Piece = piece;
                    //StartPosition = startPosition;
                    //EndPosition = endPosition;

                    var message = (PieceMovementMessage)systemMessage;
                    return(translator.Translate(TranslatableKeys.PieceMovementMessage).Text
                           .Replace("#PIECE_NAME#", PieceNameTranslator.Translate(message.Piece.Name, translator))
                           .Replace("#START_POSITION#", message.StartPosition.ToString())
                           .Replace("#END_POSITION#", message.EndPosition.ToString()));
                }
                else if (type == typeof(PieceViaMovementMessage))
                {
                    //Player = player;
                    //Piece = piece;
                    //StartPosition = startPosition;
                    //ViaPosition = viaPosition;
                    //EndPosition = endPosition;

                    var message = (PieceViaMovementMessage)systemMessage;
                    return(translator.Translate(TranslatableKeys.PieceViaMovementMessage).Text
                           .Replace("#PIECE_NAME#", PieceNameTranslator.Translate(message.Piece.Name, translator))
                           .Replace("#START_POSITION#", message.StartPosition.ToString())
                           .Replace("#VIA_POSITION#", message.ViaPosition.ToString())
                           .Replace("#END_POSITION#", message.EndPosition.ToString()));
                }
                else if (type == typeof(PieceMovementFailureMessage))
                {
                    return(translator.Translate(TranslatableKeys.PieceMovementFailureMessage).Text);
                }
                else if (type == typeof(NoPieceViaPointMessage))
                {
                    return(translator.Translate(TranslatableKeys.NoPieceViaPointMessage).Text);
                }
                else if (type == typeof(NoPieceSelectedMessage))
                {
                    return(translator.Translate(TranslatableKeys.NoPieceSelectedMessage).Text);
                }
                else if (type == typeof(SetPieceMessage))
                {
                    //Player = player;
                    //Piece = piece;
                    //SetPosition = setPosition;

                    var message = (SetPieceMessage)systemMessage;
                    return(translator.Translate(TranslatableKeys.SetPieceMessage).Text
                           .Replace("#PIECE_NAME#", PieceNameTranslator.Translate(message.Piece.Name, translator))
                           .Replace("#POSITION#", message.SetPosition.ToString()));
                }
                else if (type == typeof(SetPieceFailureMessage))
                {
                    return(translator.Translate(TranslatableKeys.SetPieceFailureMessage).Text);
                }

                return(string.Empty);
            }
Exemple #30
0
 public void SendSystemMessage(ISystemMessage message, IActorRef sender)
 {
     SendSystemMessage(message);
 }
Exemple #31
0
 /// <inheritdoc cref="InternalActorRefBase"/>
 public override void SendSystemMessage(ISystemMessage message)
 {
 }
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 public void SendSystemMessage(ISystemMessage message)
 {
     _internalRef.SendSystemMessage(message);
 }
Exemple #33
0
 public void SendSystemMessage(ISystemMessage message, IActorRef sender)
 {
     ((IInternalActorRef)TestActor).SendSystemMessage(message, sender);
 }
Exemple #34
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 public override void SendSystemMessage(ISystemMessage message)
 {
     base.SendSystemMessage(message);
 }
 public void SendSystemMessage(ISystemMessage message)
 {
     SendSystemMessage(message, ActorRefs.Nobody);
 }
Exemple #36
0
 /// <inheritdoc cref="IInternalActorRef"/>
 public abstract void SendSystemMessage(ISystemMessage message);
 /// <summary>
 /// Sends the system message.
 /// </summary>
 /// <param name="message">The message.</param>
 private void SendSystemMessage(ISystemMessage message)
 {
     Remote.Send(message, null, this);
     Remote.Provider.AfterSendSystemMessage(message);
 }
 private void SendSystemMessage(ISystemMessage systemMessage)
 {
     try
     {
         Self.Tell(systemMessage);
     }
     catch (Exception e)
     {
         _systemImpl.EventStream.Publish(new Error(e, _self.Parent.ToString(), ActorType, "Swallowing exception during message send"));
     }
 }
 public void SendSystemMessage(ISystemMessage message)
 {
     lock (_lock)
     {
         var cell = _self.Underlying;
         if (CellIsReady(cell))
         {
             cell.SendSystemMessage(message);
         }
         else
         {
             _sysMsgQueue = _sysMsgQueue + (SystemMessage)message;
             Mailbox.DebugPrint("{0} temp queueing system message {1}", Self, message);
         }
     }
 }
Exemple #40
0
 /// <summary>
 /// Sends a system message to the test probe
 /// </summary>
 /// <param name="message">The message to send</param>
 public void SendSystemMessage(ISystemMessage message)
 {
     ((IInternalActorRef)TestActor).SendSystemMessage(message);
 }
 public override void SendSystemMessage(ISystemMessage message)
 {
     Underlying.SendSystemMessage(message);
 }
 /// <inheritdoc/>
 public override void SendSystemMessage(ISystemMessage message)
 {
     _cell.SendSystemMessage(message);
 }
 /// <summary>
 ///   Used to invoke system messages.
 /// </summary>
 /// <param name="envelope">The envelope.</param>
 /// <exception cref="ActorInitializationException">
 /// This exception is thrown if a <see cref="Akka.Dispatch.SysMsg.Create"/> system message is included in the given <paramref name="envelope"/>.
 /// </exception>
 /// <exception cref="NotSupportedException">
 /// This exception is thrown if an unknown message type is included in the given <paramref name="envelope"/>.
 /// </exception>
 internal void SystemInvoke(ISystemMessage envelope)
 {
    SysMsgInvokeAll(new EarliestFirstSystemMessageList((SystemMessage)envelope), CalculateState());
 }