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)); }
/**** ** 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); }
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())); }