Пример #1
0
        internal static unsafe ServiceGroupMemberType CreateFromNative(
            NativeTypes.FABRIC_SERVICE_GROUP_MEMBER_TYPE_QUERY_RESULT_ITEM nativeResultItem)
        {
            NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION_LIST *nativeMemberList =
                (NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION_LIST *)nativeResultItem.ServiceGroupMemberTypeDescription;

            ICollection <ServiceGroupTypeMemberDescription> serviceGroupMemberTypeDescription = new Collection <ServiceGroupTypeMemberDescription>();

            for (int i = 0; i < nativeMemberList->Count; i++)
            {
                serviceGroupMemberTypeDescription.Add(
                    ServiceGroupTypeMemberDescription.CreateFromNative(nativeMemberList->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION))), true));
            }

            return(new ServiceGroupMemberType(
                       serviceGroupMemberTypeDescription,
                       NativeTypes.FromNativeString(nativeResultItem.ServiceManifestVersion),
                       NativeTypes.FromNativeString(nativeResultItem.ServiceManifestName)));
        }
        internal static unsafe ServiceGroupTypeDescription CreateFromNative(IntPtr descriptionPtr)
        {
            NativeTypes.FABRIC_SERVICE_GROUP_TYPE_DESCRIPTION *nativeDescription = (NativeTypes.FABRIC_SERVICE_GROUP_TYPE_DESCRIPTION *)descriptionPtr;

            ServiceGroupTypeDescription description = new ServiceGroupTypeDescription();

            description.ServiceTypeDescription = ServiceTypeDescription.CreateFromNative(nativeDescription->Description);

            bool isStateful = (description.ServiceTypeDescription.ServiceTypeKind == ServiceDescriptionKind.Stateful);

            NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION_LIST *nativeMemberList = (NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION_LIST *)nativeDescription->Members;
            for (int i = 0; i < nativeMemberList->Count; ++i)
            {
                description.Members.Add(ServiceGroupTypeMemberDescription.CreateFromNative(nativeMemberList->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_SERVICE_GROUP_TYPE_MEMBER_DESCRIPTION))), isStateful));
            }

            description.UseImplicitFactory = NativeTypes.FromBOOLEAN(nativeDescription->UseImplicitFactory);

            return(description);
        }