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)); }
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); } }