Ejemplo n.º 1
0
        internal static unsafe StatefulService FromNative(NativeTypes.FABRIC_STATEFUL_SERVICE_QUERY_RESULT_ITEM nativeStatefulServiceQueryResult)
        {
            ServiceStatus serviceStatus  = ServiceStatus.Unknown;
            bool          isServiceGroup = false;

            if (nativeStatefulServiceQueryResult.Reserved != IntPtr.Zero)
            {
                var nativeStatefulServiceQueryResultEx1 = (NativeTypes.FABRIC_STATEFUL_SERVICE_QUERY_RESULT_ITEM_EX1 *)nativeStatefulServiceQueryResult.Reserved;
                if (nativeStatefulServiceQueryResultEx1 == null)
                {
                    throw new ArgumentException(StringResources.Error_UnknownReservedType);
                }

                serviceStatus = (ServiceStatus)nativeStatefulServiceQueryResultEx1->ServiceStatus;

                if (nativeStatefulServiceQueryResultEx1->Reserved != IntPtr.Zero)
                {
                    var nativeStatefulServiceQueryResultEx2 = (NativeTypes.FABRIC_STATEFUL_SERVICE_QUERY_RESULT_ITEM_EX2 *)nativeStatefulServiceQueryResultEx1->Reserved;

                    isServiceGroup = NativeTypes.FromBOOLEAN(nativeStatefulServiceQueryResultEx2->IsServiceGroup);
                }
            }

            return(new StatefulService(
                       new Uri(NativeTypes.FromNativeString(nativeStatefulServiceQueryResult.ServiceName)),
                       NativeTypes.FromNativeString(nativeStatefulServiceQueryResult.ServiceTypeName),
                       NativeTypes.FromNativeString(nativeStatefulServiceQueryResult.ServiceManifestVersion),
                       NativeTypes.FromBOOLEAN(nativeStatefulServiceQueryResult.HasPersistedState),
                       (HealthState)nativeStatefulServiceQueryResult.HealthState,
                       serviceStatus,
                       isServiceGroup));
        }
Ejemplo n.º 2
0
        internal static unsafe Service CreateFromNative(
            NativeTypes.FABRIC_SERVICE_QUERY_RESULT_ITEM nativeResultItem)
        {
            if ((ServiceKind)nativeResultItem.Kind == ServiceKind.Stateless)
            {
                NativeTypes.FABRIC_STATELESS_SERVICE_QUERY_RESULT_ITEM nativeStatelessServiceQueryResult =
                    *(NativeTypes.FABRIC_STATELESS_SERVICE_QUERY_RESULT_ITEM *)nativeResultItem.Value;

                return(StatelessService.FromNative(nativeStatelessServiceQueryResult));
            }
            else if ((ServiceKind)nativeResultItem.Kind == ServiceKind.Stateful)
            {
                NativeTypes.FABRIC_STATEFUL_SERVICE_QUERY_RESULT_ITEM nativeStatefulServiceQueryResult =
                    *(NativeTypes.FABRIC_STATEFUL_SERVICE_QUERY_RESULT_ITEM *)nativeResultItem.Value;

                return(StatefulService.FromNative(nativeStatefulServiceQueryResult));
            }
            else
            {
                AppTrace.TraceSource.WriteNoise(
                    "Service.CreateFromNative",
                    "Ignoring the result with unsupported ServiceKind value {0}",
                    (int)nativeResultItem.Kind);
                return(null);
            }
        }