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"); }
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); }
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; } }
public void Send(Message message) { if (message == null) throw new ArgumentNullException("message"); Dispatcher.Enqueue(message, this); }
protected void OnMessageDispatched(Message message) { var evnt = MessageDispatched; if (evnt != null) MessageDispatched(this, message); }
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); } }
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(); } } }
public void Enqueue(Message message, bool executeIfCan = true) { Enqueue(message, null, executeIfCan); }
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); } }
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); }