public static ChaosEvent FromNativeEvent(NativeTypes.FABRIC_CHAOS_EVENT nativeEvent) { switch (nativeEvent.Kind) { case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_STARTED: return(StartedEvent.FromNative(nativeEvent.Value)); case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_EXECUTING_FAULTS: return(ExecutingFaultsEvent.FromNative(nativeEvent.Value)); case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_STOPPED: return(StoppedEvent.FromNative(nativeEvent.Value)); case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_TEST_ERROR: return(TestErrorEvent.FromNative(nativeEvent.Value)); case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_VALIDATION_FAILED: return(ValidationFailedEvent.FromNative(nativeEvent.Value)); case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_WAITING: return(WaitingEvent.FromNative(nativeEvent.Value)); default: return(null); } }
private static IntPtr ToNativeEvents(PinCollection pin, List <ChaosEvent> history) { if (history == default(List <ChaosEvent>)) { return(IntPtr.Zero); } var eventArray = new NativeTypes.FABRIC_CHAOS_EVENT[history.Count]; for (int i = 0; i < history.Count; ++i) { eventArray[i].Value = history[i].ToNative(pin); eventArray[i].Kind = ChaosUtility.GetNativeEventType(history[i]); } var nativeEvents = new NativeTypes.FABRIC_CHAOS_EVENT_LIST { Count = (uint)eventArray.Length, Items = pin.AddBlittable(eventArray) }; return(pin.AddBlittable(nativeEvents)); }