public void ProcessEvent(EventWrittenEventArgs e) { switch (_eventPairTimerConnections.TryGetDuration(e, out var duration1)) { case DurationResult.Start: ConnectionStart?.Invoke(Events.ConnectionStartEvent.Instance); break; case DurationResult.FinalWithDuration: ConnectionStop?.InvokeManyTimes(_samplingRate.SampleEvery, Events.ConnectionStopEvent.GetFrom(duration1)); break; default: break; } switch (_eventPairTimerRequests.TryGetDuration(e, out var duration2)) { case DurationResult.Start: ConnectionStart?.Invoke(Events.ConnectionStartEvent.Instance); break; case DurationResult.FinalWithDuration: ConnectionStop?.InvokeManyTimes(_samplingRate.SampleEvery, Events.ConnectionStopEvent.GetFrom(duration2)); break; default: break; } if (e.EventId == EventIdConnectionStart) { ConnectionStart?.Invoke(Events.ConnectionStartEvent.ParseFrom(e)); return; } if (e.EventId == EventIdConnectionStop) { ConnectionStop?.Invoke(Events.ConnectionStopEvent.ParseFrom(e)); return; } if (e.EventId == EventIdRequestStart) { RequestStart?.Invoke(Events.RequestStartEvent.ParseFrom(e)); return; } if (e.EventId == EventIdRequestStop) { RequestStop?.Invoke(Events.RequestStopEvent.ParseFrom(e)); return; } if (e.EventId == EventIdConnectionRejected) { ConnectionRejected?.Invoke(Events.ConnectionRejectedEvent.ParseFrom(e)); return; } }
/// <summary> /// 引发 <see cref="RequestStop" /> 事件 /// </summary> public virtual void OnRequestStop() { RequestStop?.Invoke(this, EventArgs.Empty); }