예제 #1
0
        public EventManager(IMonitor monitor)
        {
            ManagedEvent <TEventArgs> ManageEvent <TEventArgs>(string eventName)
            {
                var managedEvent = new ManagedEvent <TEventArgs>(eventName);

                if (monitor.IsVerbose)
                {
                    managedEvent.Fired += (_, e) => monitor.VerboseLog(
                        $"Event `{e.EventName}` fired. Listeners count: {e.ListenersCount}");
                }

                return(managedEvent);
            }

            this.ChangeState        = ManageEvent <ChangeStateEventArgs>(nameof(IQuestFrameworkEvents.ChangeState));
            this.GettingReady       = ManageEvent <GettingReadyEventArgs>(nameof(IQuestFrameworkEvents.GettingReady));
            this.Ready              = ManageEvent <ReadyEventArgs>(nameof(IQuestFrameworkEvents.Ready));
            this.QuestCompleted     = ManageEvent <QuestEventArgs>(nameof(IQuestFrameworkEvents.QuestCompleted));
            this.QuestAccepted      = ManageEvent <QuestEventArgs>(nameof(IQuestFrameworkEvents.QuestAccepted));
            this.QuestRemoved       = ManageEvent <QuestEventArgs>(nameof(IQuestFrameworkEvents.QuestRemoved));
            this.QuestLogMenuOpen   = ManageEvent <EventArgs>(nameof(IQuestFrameworkEvents.QuestLogMenuOpen));
            this.QuestLogMenuClosed = ManageEvent <EventArgs>(nameof(IQuestFrameworkEvents.QuestLogMenuClosed));
            this.Refreshed          = ManageEvent <EventArgs>(nameof(IQuestFrameworkEvents.Refreshed));
        }
예제 #2
0
 /****
 ** ManagedEvent
 ****/
 /// <summary>Raise the event using the default event args and notify all handlers.</summary>
 /// <typeparam name="TEventArgs">The event args type to construct.</typeparam>
 /// <param name="event">The event to raise.</param>
 public static void RaiseEmpty <TEventArgs>(this ManagedEvent <TEventArgs> @event) where TEventArgs : new()
 {
     @event.Raise(Singleton <TEventArgs> .Instance);
 }
예제 #3
0
 public EventManager()
 {
     this.OnSellItem = new ManagedEvent <SellItemArgs>(nameof(ICoreModEvents.OnSellItem));
 }
        public void PostProxyTrust(TimeSpan?timeout = null)
        {
            List <ManagedEvent> results = null;
            // 4 times means 1st unauthorizaed request with saparated body and then request with token and saparated body
            int          maxTryTimes = 4;
            ManagedEvent cache       = null;
            ManagedEvent req         = null;

            do
            {
                results = expectClientRequest(timeout);
                bool wantToProcess = true;
                foreach (ManagedEvent mge in results)
                {
                    ManagedEvent result = mge;
                    if (!wantToProcess)
                    {
                        break;
                    }
                    if (result.ParsedHttpRequest == null && result.EventType == EventType.IncomingRequest && cache != null)
                    {
                        if (cache.ParsedHttpRequest.Body == null)
                        {
                            cache.ParsedHttpRequest.Body = "";
                        }
                        cache.ParsedHttpRequest.Body += result.Text;
                        if (int.Parse(cache.ParsedHttpRequest.GetHeaderFieldValue(System.Net.HttpRequestHeader.ContentLength)) <= cache.ParsedHttpRequest.Body.Length)
                        {
                            result = cache;
                            cache  = null;
                        }
                    }
                    if (result.ParsedHttpRequest != null && result.ParsedHttpRequest.RequestUrl.Path.ToLower() == Microsoft.Protocols.TestTools.StackSdk.Identity.ADFSPIP.Constraints.ProxyTrustUrl.ToLower() && result.ParsedHttpRequest.Method == HttpRequest.HttpMethod.POST)
                    {
                        if (result.ParsedHttpRequest.Body == null)
                        {
                            string expect = result.ParsedHttpRequest.GetHeaderFieldValue(System.Net.HttpRequestHeader.Expect);

                            if (expect != null && expect.ToLower() == "100-continue")
                            {
                                sts.SendMessage(result.Sender, Encoding.UTF8.GetBytes(new HttpResponse(System.Net.HttpStatusCode.Continue).ToString()));
                                cache = result;
                            }
                        }
                        else
                        {
                            wantToProcess = false;
                            maxTryTimes   = 0;
                            req           = result;
                            break;
                        }
                        //  }
                    }
                    else if (result.EventType != EventType.IncomingRequest)
                    {
                        testSite.Assert.Fail("Failed to expect Establish Trust request");
                    }
                }
                maxTryTimes--;
            } while (maxTryTimes > 0);
            HttpResponse res = ValidationModel.VerifyRequest(req.ParsedHttpRequest);

            sts.SendMessage(req.Sender, Encoding.UTF8.GetBytes(res.ToString()));
        }