Exemplo n.º 1
0
        internal static bool AreEqual(HealthEvent a, HealthEvent b)
        {
            if (a == b)
            {
                // References are equal/ both are null
                return(true);
            }

            if (a == null || b == null)
            {
                // One is null and one is non-null
                return(false);
            }

            bool result =
                a.IsExpired == b.IsExpired &&
                a.SourceUtcTimestamp == b.SourceUtcTimestamp &&
                a.LastModifiedUtcTimestamp == b.LastModifiedUtcTimestamp &&
                a.LastOkTransitionAt == b.LastOkTransitionAt &&
                a.LastWarningTransitionAt == b.LastWarningTransitionAt &&
                a.LastErrorTransitionAt == b.LastErrorTransitionAt;

            result &= HealthInformation.AreEqual(a.HealthInformation, b.HealthInformation);

            return(result);
        }
Exemplo n.º 2
0
        private static unsafe ClusterHealth FromNative(NativeTypes.FABRIC_CLUSTER_HEALTH *nativeClusterHealth)
        {
            var clusterHealth = new ClusterHealth();

            clusterHealth.AggregatedHealthState = (HealthState)nativeClusterHealth->AggregatedHealthState;

            if (nativeClusterHealth->Reserved != IntPtr.Zero)
            {
                NativeTypes.FABRIC_CLUSTER_HEALTH_EX1 *nativeClusterHealthEx1 = (NativeTypes.FABRIC_CLUSTER_HEALTH_EX1 *)nativeClusterHealth->Reserved;

                clusterHealth.NodeHealthStates        = NodeHealthState.FromNativeList(nativeClusterHealthEx1->NodeHealthStates);
                clusterHealth.ApplicationHealthStates = ApplicationHealthState.FromNativeList(nativeClusterHealthEx1->ApplicationHealthStates);
                clusterHealth.HealthEvents            = HealthEvent.FromNativeList(nativeClusterHealthEx1->HealthEvents);

                if (nativeClusterHealthEx1->Reserved != IntPtr.Zero)
                {
                    var nativeHealthEx2 = (NativeTypes.FABRIC_CLUSTER_HEALTH_EX2 *)nativeClusterHealthEx1->Reserved;
                    clusterHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx2->UnhealthyEvaluations);

                    if (nativeHealthEx2->Reserved != IntPtr.Zero)
                    {
                        var nativeHealthEx3 = (NativeTypes.FABRIC_CLUSTER_HEALTH_EX3 *)nativeHealthEx2->Reserved;
                        clusterHealth.HealthStatistics = HealthStatistics.CreateFromNative(nativeHealthEx3->HealthStatistics);
                    }
                }
            }

            return(clusterHealth);
        }
Exemplo n.º 3
0
        private static unsafe DeployedServicePackageHealth FromNative(NativeTypes.FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH *nativeHealth)
        {
            var managedHealth = new DeployedServicePackageHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.ApplicationName       = NativeTypes.FromNativeUri(nativeHealth->ApplicationName);
            managedHealth.ServiceManifestName   = NativeTypes.FromNativeString(nativeHealth->ServiceManifestName);
            managedHealth.NodeName = NativeTypes.FromNativeString(nativeHealth->NodeName);

            if (nativeHealth->Reserved == IntPtr.Zero)
            {
                return(managedHealth);
            }

            var nativeHealthEx1 = (NativeTypes.FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_EX1 *)nativeHealth->Reserved;

            managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);

            if (nativeHealthEx1->Reserved == IntPtr.Zero)
            {
                return(managedHealth);
            }

            var nativeHealthEx2 = (NativeTypes.FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_EX2 *)nativeHealthEx1->Reserved;

            managedHealth.ServicePackageActivationId = NativeTypes.FromNativeString(nativeHealthEx2->ServicePackageActivationId);

            return(managedHealth);
        }
Exemplo n.º 4
0
        private static unsafe NodeHealth FromNative(NativeTypes.FABRIC_NODE_HEALTH *nativeHealth)
        {
            var managedHealth = new NodeHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.NodeName = NativeTypes.FromNativeString(nativeHealth->NodeName);

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_NODE_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);
            }

            return(managedHealth);
        }
Exemplo n.º 5
0
        internal static unsafe List <HealthEvent> FromNativeList(IntPtr nativeHealthEventsPtr)
        {
            List <HealthEvent> events = new List <HealthEvent>();

            if (nativeHealthEventsPtr != IntPtr.Zero)
            {
                NativeTypes.FABRIC_HEALTH_EVENT_LIST *nativeEvents = (NativeTypes.FABRIC_HEALTH_EVENT_LIST *)nativeHealthEventsPtr;
                for (int i = 0; i < nativeEvents->Count; i++)
                {
                    var nativeEvent = (NativeTypes.FABRIC_HEALTH_EVENT *)((ulong)nativeEvents->Items + (ulong)(i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_HEALTH_EVENT))));
                    events.Add(HealthEvent.FromNative(*nativeEvent));
                }
            }

            return(events);
        }
Exemplo n.º 6
0
        internal static unsafe StatelessServiceInstanceHealth FromNative(NativeTypes.FABRIC_STATELESS_SERVICE_INSTANCE_HEALTH *nativeHealth)
        {
            var managedHealth = new StatelessServiceInstanceHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.PartitionId           = nativeHealth->PartitionId;
            managedHealth.Id = nativeHealth->InstanceId;

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_STATELESS_SERVICE_INSTANCE_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);
            }

            return(managedHealth);
        }
Exemplo n.º 7
0
        internal static unsafe EventHealthEvaluation FromNative(IntPtr nativeHealthEvaluationValuePtr)
        {
            ReleaseAssert.AssertIf(nativeHealthEvaluationValuePtr == IntPtr.Zero, string.Format(CultureInfo.CurrentCulture, StringResources.Error_NativeDataNull_Formatted, "nativeHealthEvaluationValue"));
            var nativeHealthEvaluation = *(NativeTypes.FABRIC_EVENT_HEALTH_EVALUATION *)nativeHealthEvaluationValuePtr;

            var managedHealthEvaluation = new EventHealthEvaluation();

            managedHealthEvaluation.Description           = NativeTypes.FromNativeString(nativeHealthEvaluation.Description);
            managedHealthEvaluation.AggregatedHealthState = (HealthState)nativeHealthEvaluation.AggregatedHealthState;

            ReleaseAssert.AssertIf(nativeHealthEvaluation.UnhealthyEvent == IntPtr.Zero, string.Format(CultureInfo.CurrentCulture, StringResources.Error_NativeDataNull_Formatted, "UnhealthyEvent"));
            var nativeHealthEvent = (NativeTypes.FABRIC_HEALTH_EVENT *)nativeHealthEvaluation.UnhealthyEvent;

            managedHealthEvaluation.UnhealthyEvent = HealthEvent.FromNative(*nativeHealthEvent);

            managedHealthEvaluation.ConsiderWarningAsError = NativeTypes.FromBOOLEAN(nativeHealthEvaluation.ConsiderWarningAsError);

            return(managedHealthEvaluation);
        }
Exemplo n.º 8
0
        internal static unsafe HealthEvent FromNative(NativeTypes.FABRIC_HEALTH_EVENT nativeHealthEvent)
        {
            var healthEvent = new HealthEvent();

            healthEvent.HealthInformation        = HealthInformation.FromNative(nativeHealthEvent.HealthInformation);
            healthEvent.SourceUtcTimestamp       = NativeTypes.FromNativeFILETIME(nativeHealthEvent.SourceUtcTimestamp);
            healthEvent.LastModifiedUtcTimestamp = NativeTypes.FromNativeFILETIME(nativeHealthEvent.LastModifiedUtcTimestamp);
            healthEvent.IsExpired = NativeTypes.FromBOOLEAN(nativeHealthEvent.IsExpired);

            if (nativeHealthEvent.Reserved != IntPtr.Zero)
            {
                var nativeHealthEventEx1 = (NativeTypes.FABRIC_HEALTH_EVENT_EX1 *)(nativeHealthEvent.Reserved);
                healthEvent.LastOkTransitionAt      = NativeTypes.FromNativeFILETIME(nativeHealthEventEx1->LastOkTransitionAt);
                healthEvent.LastWarningTransitionAt = NativeTypes.FromNativeFILETIME(nativeHealthEventEx1->LastWarningTransitionAt);
                healthEvent.LastErrorTransitionAt   = NativeTypes.FromNativeFILETIME(nativeHealthEventEx1->LastErrorTransitionAt);
            }

            return(healthEvent);
        }
Exemplo n.º 9
0
        private static unsafe PartitionHealth FromNative(NativeTypes.FABRIC_PARTITION_HEALTH *nativeHealth)
        {
            var managedHealth = new PartitionHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.PartitionId           = nativeHealth->PartitionId;
            managedHealth.ReplicaHealthStates   = ReplicaHealthState.FromNativeList(nativeHealth->ReplicaHealthStates);

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_PARTITION_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);

                if (nativeHealthEx1->Reserved != IntPtr.Zero)
                {
                    var nativeHealthEx2 = (NativeTypes.FABRIC_PARTITION_HEALTH_EX2 *)nativeHealthEx1->Reserved;
                    managedHealth.HealthStatistics = HealthStatistics.CreateFromNative(nativeHealthEx2->HealthStatistics);
                }
            }

            return(managedHealth);
        }
Exemplo n.º 10
0
        private static unsafe ServiceHealth FromNative(NativeTypes.FABRIC_SERVICE_HEALTH *nativeHealth)
        {
            var managedHealth = new ServiceHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.ServiceName           = NativeTypes.FromNativeUri(nativeHealth->ServiceName);
            managedHealth.PartitionHealthStates = PartitionHealthState.FromNativeList(nativeHealth->PartitionHealthStates);

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_SERVICE_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);

                if (nativeHealthEx1->Reserved != IntPtr.Zero)
                {
                    var nativeHealthEx2 = (NativeTypes.FABRIC_SERVICE_HEALTH_EX2 *)nativeHealthEx1->Reserved;
                    managedHealth.HealthStatistics = HealthStatistics.CreateFromNative(nativeHealthEx2->HealthStatistics);
                }
            }

            return(managedHealth);
        }
        private static unsafe DeployedApplicationHealth FromNative(NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH *nativeHealth)
        {
            var managedHealth = new DeployedApplicationHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.ApplicationName       = NativeTypes.FromNativeUri(nativeHealth->ApplicationName);
            managedHealth.NodeName = NativeTypes.FromNativeString(nativeHealth->NodeName);
            managedHealth.DeployedServicePackageHealthStates = DeployedServicePackageHealthState.FromNativeList(nativeHealth->DeployedServicePackageHealthStates);

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);

                if (nativeHealthEx1->Reserved != IntPtr.Zero)
                {
                    var nativeHealthEx2 = (NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH_EX2 *)nativeHealthEx1->Reserved;
                    managedHealth.HealthStatistics = HealthStatistics.CreateFromNative(nativeHealthEx2->HealthStatistics);
                }
            }

            return(managedHealth);
        }