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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }