internal static unsafe StatelessService FromNative(NativeTypes.FABRIC_STATELESS_SERVICE_QUERY_RESULT_ITEM nativeStatelessServiceQueryResult) { ServiceStatus serviceStatus = ServiceStatus.Unknown; bool isServiceGroup = false; if (nativeStatelessServiceQueryResult.Reserved != IntPtr.Zero) { var nativeStatelessServiceQueryResultEx1 = (NativeTypes.FABRIC_STATELESS_SERVICE_QUERY_RESULT_ITEM_EX1 *)nativeStatelessServiceQueryResult.Reserved; if (nativeStatelessServiceQueryResultEx1 == null) { throw new ArgumentException(StringResources.Error_UnknownReservedType); } serviceStatus = (ServiceStatus)nativeStatelessServiceQueryResultEx1->ServiceStatus; if (nativeStatelessServiceQueryResultEx1->Reserved != IntPtr.Zero) { var nativeStatelessServiceQueryResultEx2 = (NativeTypes.FABRIC_STATELESS_SERVICE_QUERY_RESULT_ITEM_EX2 *)nativeStatelessServiceQueryResultEx1->Reserved; isServiceGroup = NativeTypes.FromBOOLEAN(nativeStatelessServiceQueryResultEx2->IsServiceGroup); } } return(new StatelessService( new Uri(NativeTypes.FromNativeString(nativeStatelessServiceQueryResult.ServiceName)), NativeTypes.FromNativeString(nativeStatelessServiceQueryResult.ServiceTypeName), NativeTypes.FromNativeString(nativeStatelessServiceQueryResult.ServiceManifestVersion), (HealthState)nativeStatelessServiceQueryResult.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); } }