// --- Request handling --- HelpResult DoRequest(HelpRequest request) { var result = HelpResult.Failure; Trigger tr; if (triggers.TryGet(request.First, out tr)) { // We'll wrap Trigger.Help so that even when there's no help // a footer is still made (with related triggers). result = GetHelp(request, tr.HelpNullWrap(NoHelpError)); } // If it's not exclusively a trigger/command query try to find the query // as a general help topic. if (!(result.Success || request.RestrictToTriggers)) { TopicHelp help; if (helpOnTopics.TryGetValue(request.NormalizedQuery, out help)) { result = request.ToResult(help, footer); } } return(result); }
void DoTrigger(TriggerMsg msg) { // Enqueue specific trigger call. if (triggers.TryGet(msg.Trigger, out Trigger trigger)) { ThreadingDispatch( trigger.Threading, triggers.Delegate(trigger, msg), (cb) => triggers.Fire(trigger, msg), trigger, triggerQueues ); } // Enqueue general trigger event. DoHandlers <ITriggerMsg>(msg); }