Ejemplo n.º 1
0
        // --- 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);
        }
Ejemplo n.º 2
0
 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);
 }