コード例 #1
0
        private static void OnMessageDispatched(MessageDispatcher dispatcher, Message message)
        {
            var bot = (Bot)dispatcher.CurrentProcessor;
            var file = string.Format("{0}/log {1} {2}.log", Plugin.CurrentPlugin.GetPluginDirectory(), bot, Process.GetCurrentProcess().StartTime.ToString("dd MMM HH-mm-ss"));

            // this is thread safe
            File.AppendAllText(file, m_dumper.Dump(message) + "\r\n");
        }
コード例 #2
0
 protected override void Dispatch(Message message, object token)
 {
     if (message == null) throw new ArgumentNullException("message");
     if (message is NetworkMessage)
         Dispatch(message as NetworkMessage, token);
     else
         base.Dispatch(message, token);
 }
コード例 #3
0
        private static void OnMessageDispatched(MessageDispatcher dispatcher, Message message)
        {
            var bot = (Bot)dispatcher.CurrentProcessor;
            var file = string.Format("{0}/log {1} {2}.log", Plugin.CurrentPlugin.GetPluginDirectory(), bot, Process.GetCurrentProcess().StartTime.ToString("dd MMM HH-mm-ss"));

            // this is thread safe
            try
            {
            File.AppendAllText(file, m_dumper.Dump(message) + "\r\n");
        }
            catch(Exception ex)
            {
                bot.Character.SendError("The log file for {0} can't be written in {1} : {2}", bot.Character, file, ex.Message);
                AllowLogging = false;
            }
        }
コード例 #4
0
ファイル: Bot.cs プロジェクト: Geraff/BehaviorIsManaged
 public void Send(Message message)
 {
     if (message == null) throw new ArgumentNullException("message");
     Dispatcher.Enqueue(message, this);
 }
コード例 #5
0
 protected void OnMessageDispatched(Message message)
 {
     var evnt = MessageDispatched;
     if (evnt != null)
         MessageDispatched(this, message);
 }
コード例 #6
0
        protected virtual void Dispatch(Message message, object token)
        {
            try
            {
                var handlers = GetHandlers(message.GetType(), token).ToArray(); // have to transform it into a collection if we want to add/remove handler

                foreach (var handler in handlers)
                {
                    handler.Action(handler.Container, token, message);

                    if (message.Canceled)
                        break;
                }

                message.OnDispatched();
                OnMessageDispatched(message);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Cannot dispatch {0}", message), ex);
            }
        }
コード例 #7
0
        public virtual void Enqueue(Message message, object token, bool executeIfCan = true)
        {
            if (executeIfCan && IsInDispatchingContext())
            {
                Dispatch(message, token);
            }
            else
            {
                lock (m_messageEnqueuedEvent)
                {
                    m_messagesToDispatch[message.Priority].Enqueue(Tuple.Create(message, token));

                    if (!m_dispatching)
                        m_messageEnqueuedEvent.Set();
                }
            }
        }
コード例 #8
0
 public void Enqueue(Message message, bool executeIfCan = true)
 {
     Enqueue(message, null, executeIfCan);
 }
コード例 #9
0
        protected virtual void Dispatch(Message message, object token)
        {
            try
            {
                var handlers = GetHandlers(message.GetType(), token);

                foreach (var handler in handlers)
                {
                    handler.Action(handler.Container, token, message);

                    if (message.Canceled)
                        break;
                }

                message.OnDispatched();
                OnMessageDispatched(message);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Cannot dispatch {0}", message), ex);
            }
        }
コード例 #10
0
ファイル: Bot.cs プロジェクト: Seth-/BehaviorIsManaged
        public void SendLocal(Message message)
        {
            if (message == null) throw new ArgumentNullException("message");

            Dispatcher.Enqueue(message, this);

            if (Disposed)
                logger.Error("Error the message {0} wont be dispatched because the bot {1} is disposed !", message, this);
            else if (!Running)
                logger.Warn("Warning, enqueue {0} but the bot is stopped, the message will be processed once the bot {1} restart", message, this);
        }