internal static unsafe ChaosSchedule FromNative(IntPtr pointer) { var nativeSchedule = *(NativeTypes.FABRIC_CHAOS_SCHEDULE *)pointer; DateTime startDate = NativeTypes.FromNativeFILETIME(nativeSchedule.StartDate); DateTime expiryDate = NativeTypes.FromNativeFILETIME(nativeSchedule.ExpiryDate); Dictionary <string, ChaosParameters> chaosParametersDictionary = new Dictionary <string, ChaosParameters>(); var chaosParametersMap = *(NativeTypes.FABRIC_CHAOS_SCHEDULE_CHAOS_PARAMETERS_MAP *)nativeSchedule.ChaosParametersMap; var nativechaosParametersMapArrayPtr = (NativeTypes.FABRIC_CHAOS_SCHEDULE_CHAOS_PARAMETERS_MAP_ITEM *)chaosParametersMap.Items; for (int i = 0; i < chaosParametersMap.Count; i++) { var nativeItem = *(nativechaosParametersMapArrayPtr + i); var name = NativeTypes.FromNativeString(nativeItem.Name); var parameters = ChaosParameters.CreateFromNative(nativeItem.Parameters); chaosParametersDictionary.Add(name, parameters); } List <ChaosScheduleJob> jobs = new List <ChaosScheduleJob>(); var nativeJobsList = *(NativeTypes.FABRIC_CHAOS_SCHEDULE_JOB_LIST *)nativeSchedule.Jobs; var nativeJobsArrayPtr = (NativeTypes.FABRIC_CHAOS_SCHEDULE_JOB *)nativeJobsList.Items; for (int i = 0; i < nativeJobsList.Count; ++i) { var nativeItem = (nativeJobsArrayPtr + i); ChaosScheduleJob job = ChaosScheduleJob.FromNative(nativeItem); jobs.Add(job); } return(new ChaosSchedule(startDate, expiryDate, chaosParametersDictionary, jobs)); }
internal static unsafe ChaosReport FromNative(IntPtr pointer) { var nativeReport = *(NativeTypes.FABRIC_CHAOS_REPORT *)pointer; var chaosParameters = ChaosParameters.CreateFromNative(nativeReport.ChaosParameters); var status = (ChaosStatus)nativeReport.Status; var continuationToken = NativeTypes.FromNativeString(nativeReport.ContinuationToken); var history = FromNativeHistory(nativeReport.History); return(new ChaosReport(chaosParameters, status, history, continuationToken)); }
internal static unsafe ChaosDescription FromNative(IntPtr pointer) { var nativeDescription = *(NativeTypes.FABRIC_CHAOS_DESCRIPTION *)pointer; var chaosParameters = ChaosParameters.CreateFromNative(nativeDescription.ChaosParameters); var chaosStatus = (ChaosStatus)nativeDescription.Status; var chaosScheduleStatus = (ChaosScheduleStatus)nativeDescription.ScheduleStatus; return(new ChaosDescription(chaosStatus, chaosParameters, chaosScheduleStatus)); }