internal static unsafe CodePackageDescription CreateFromNative(NativeTypes.FABRIC_CODE_PACKAGE_DESCRIPTION nativeDescription, string path)
        {
            string packageName = NativeTypes.FromNativeString(nativeDescription.Name);

            AppTrace.TraceSource.WriteNoise("CodePackageDescription.CreateFromNative", "PackageName {0}", packageName);

            ExeHostEntryPointDescription setupEntryPoint = null;

            if (nativeDescription.SetupEntryPoint != IntPtr.Zero)
            {
                setupEntryPoint = ExeHostEntryPointDescription.CreateFromNative(nativeDescription.SetupEntryPoint);
            }

            if (nativeDescription.EntryPoint == IntPtr.Zero)
            {
                AppTrace.TraceSource.WriteError("CodePackageDescription.CreateFromNative", "No EntryPoint");
                throw new ArgumentException(StringResources.Error_NoEntryPoint);
            }
            var entryPoint = EntryPointDescription.CreateFromNative(nativeDescription.EntryPoint);


            return(new CodePackageDescription
            {
                Name = packageName,
                Version = NativeTypes.FromNativeString(nativeDescription.Version),
                ServiceManifestName = NativeTypes.FromNativeString(nativeDescription.ServiceManifestName),
                ServiceManifestVersion = NativeTypes.FromNativeString(nativeDescription.ServiceManifestVersion),
                IsShared = NativeTypes.FromBOOLEAN(nativeDescription.IsShared),
#pragma warning disable 618
                Path = path,
#pragma warning restore 618
                SetupEntryPoint = setupEntryPoint,
                EntryPoint = entryPoint,
            });
        }
Exemplo n.º 2
0
        internal static unsafe EntryPointDescription CreateFromNative(IntPtr entryPointDescriptionPtr)
        {
            NativeTypes.FABRIC_CODE_PACKAGE_ENTRY_POINT_DESCRIPTION *nativeEntryPointDescription = (NativeTypes.FABRIC_CODE_PACKAGE_ENTRY_POINT_DESCRIPTION *)entryPointDescriptionPtr;

            switch (nativeEntryPointDescription->Kind)
            {
            case NativeTypes.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND_EXEHOST:
                return(ExeHostEntryPointDescription.CreateFromNative(nativeEntryPointDescription->Value));

            case NativeTypes.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND_DLLHOST:
                return(DllHostEntryPointDescription.CreateFromNative(nativeEntryPointDescription->Value));

            case NativeTypes.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND.FABRIC_CODE_PACKAGE_ENTRY_POINT_KIND_CONTAINERHOST:
                return(ContainerHostEntryPointDescription.CreateFromNative(nativeEntryPointDescription->Value));

            default:
                AppTrace.TraceSource.WriteError("EntryPointDescription.CreateFromNative", "Unknown code package entry point type : {0}", nativeEntryPointDescription->Kind);
                ReleaseAssert.Failfast(string.Format(CultureInfo.CurrentCulture, StringResources.Error_UnknownCodePackageEntryType_Formatted, nativeEntryPointDescription->Kind));
                return(null);
            }
        }