Exemple #1
0
 private static void ProcessServicesProvider(IServicesProvider provider, YieldServicesProvider yieldServicesProvider, FourPartVersion asmVersion, IRequest request)
 {
     try {
         provider.InitializeProvider(DynamicInterface.Instance, request);
         FourPartVersion ver = provider.GetProviderVersion();
         yieldServicesProvider(provider.GetServicesProviderName(), provider, ver == 0 ? asmVersion : ver, request);
     } catch (Exception e) {
         e.Dump();
     }
 }
Exemple #2
0
        internal static bool AcquireProviders(string assemblyPath, IRequest request, YieldMetaProvider yieldMetaProvider, YieldPackageProvider yieldPackageProvider, YieldServicesProvider yieldServicesProvider)
        {
            try {
                var assembly = Assembly.LoadFile(assemblyPath);

                if (assembly == null)
                {
                    return(false);
                }

                var asmVersion = GetAssemblyVersion(assembly);

                // process Meta Providers
                foreach (var metaProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IMetaProvider>(assembly))
                {
                    AcquireProvidersViaMetaProvider(DynamicInterface.Instance.Create <IMetaProvider>(metaProviderClass), yieldMetaProvider, yieldPackageProvider, yieldServicesProvider, asmVersion, request);
                }

                // process Package Providers
                foreach (var packageProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IPackageProvider>(assembly))
                {
                    ProcessPackageProvider(DynamicInterface.Instance.Create <IPackageProvider>(packageProviderClass), yieldPackageProvider, asmVersion, request);
                }

                // Process Services Providers
                foreach (var serviceProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IServicesProvider>(assembly))
                {
                    ProcessServicesProvider(DynamicInterface.Instance.Create <IServicesProvider>(serviceProviderClass), yieldServicesProvider, asmVersion, request);
                }
            } catch (Exception e) {
                e.Dump();
            }
            return(true);
        }
Exemple #3
0
        internal static void AcquireProvidersViaMetaProvider(IMetaProvider provider, YieldMetaProvider yieldMetaProvider, YieldPackageProvider yieldPackageProvider, YieldServicesProvider yieldServicesProvider, FourPartVersion asmVersion, IRequest request)
        {
            var             metaProviderName    = provider.GetMetaProviderName();
            FourPartVersion metaProviderVersion = provider.GetProviderVersion();
            bool            reloading           = yieldMetaProvider(metaProviderName, provider, (metaProviderVersion == 0 ? asmVersion : metaProviderVersion), request);

            try {
                provider.InitializeProvider(DynamicInterface.Instance, request);
                var metaProvider = provider;
                Parallel.ForEach(provider.GetProviderNames(), name => {
                    // foreach (var name in provider.GetProviderNames()) {
                    var instance = metaProvider.CreateProvider(name);
                    if (instance != null)
                    {
                        // check if it's a Package Provider
                        if (DynamicInterface.Instance.IsInstanceCompatible <IPackageProvider>(instance))
                        {
                            try {
                                ProcessPackageProvider(DynamicInterface.Instance.Create <IPackageProvider>(instance), yieldPackageProvider, asmVersion, request);
                            } catch (Exception e) {
                                e.Dump();
                            }
                        }

                        // check if it's a Services Provider
                        if (DynamicInterface.Instance.IsInstanceCompatible <IServicesProvider>(instance))
                        {
                            try {
                                ProcessServicesProvider(DynamicInterface.Instance.Create <IServicesProvider>(instance), yieldServicesProvider, asmVersion, request);
                            } catch (Exception e) {
                                e.Dump();
                            }
                        }
                    }
                });
            } catch (Exception e) {
                e.Dump();
            }
        }