예제 #1
0
        public GrainTypeManager(
            ILocalSiloDetails siloDetails,
            ApplicationPartManager applicationPartManager,
            DefaultPlacementStrategy defaultPlacementStrategy,
            SerializationManager serializationManager,
            MultiClusterRegistrationStrategyManager multiClusterRegistrationStrategyManager,
            ILogger <GrainTypeManager> logger,
            IOptions <GrainClassOptions> grainClassOptions)
        {
            var localTestMode = siloDetails.SiloAddress.Endpoint.Address.Equals(IPAddress.Loopback);

            this.logger = logger;
            this.defaultPlacementStrategy = defaultPlacementStrategy.PlacementStrategy;
            this.serializationManager     = serializationManager;
            this.multiClusterRegistrationStrategyManager = multiClusterRegistrationStrategyManager;
            grainInterfaceMap        = new GrainInterfaceMap(localTestMode, this.defaultPlacementStrategy);
            ClusterGrainInterfaceMap = grainInterfaceMap;
            grainInterfaceMapsBySilo = new Dictionary <SiloAddress, GrainInterfaceMap>();

            var grainClassFeature = applicationPartManager.CreateAndPopulateFeature <GrainClassFeature>();

            this.grainTypes = CreateGrainTypeMap(grainClassFeature, grainClassOptions.Value);

            var grainInterfaceFeature = applicationPartManager.CreateAndPopulateFeature <GrainInterfaceFeature>();

            this.invokers = CreateInvokerMap(grainInterfaceFeature);
            this.InitializeInterfaceMap();
        }
예제 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RoslynCodeGenerator"/> class.
        /// </summary>
        /// <param name="serializationManager">The serialization manager.</param>
        /// <param name="loggerFactory">logger factory to use</param>
        public RoslynCodeGenerator(SerializationManager serializationManager, ApplicationPartManager applicationPartManager, ILoggerFactory loggerFactory)
        {
            this.knownTypes = GetKnownTypes();
            this.serializerGenerationManager = new SerializerGenerationManager(serializationManager, loggerFactory);
            Logger = new LoggerWrapper <RoslynCodeGenerator>(loggerFactory);

            HashSet <string> GetKnownTypes()
            {
                var serializerFeature = applicationPartManager.CreateAndPopulateFeature <SerializerFeature>();

                var result = new HashSet <string>();

                foreach (var kt in serializerFeature.KnownTypes)
                {
                    result.Add(kt.Type);
                }
                foreach (var serializer in serializerFeature.SerializerTypes)
                {
                    result.Add(RuntimeTypeNameFormatter.Format(serializer.Target));
                    result.Add(RuntimeTypeNameFormatter.Format(serializer.Serializer));
                }

                foreach (var serializer in serializerFeature.SerializerDelegates)
                {
                    result.Add(RuntimeTypeNameFormatter.Format(serializer.Target));
                }

                return(result);
            }
        }
예제 #3
0
        public TypeMetadataCache(ApplicationPartManager applicationPartManager)
        {
            var grainInterfaceFeature = applicationPartManager.CreateAndPopulateFeature <GrainInterfaceFeature>();

            foreach (var grain in grainInterfaceFeature.Interfaces)
            {
                this.grainToInvokerMapping[grain.InterfaceType]   = grain.InvokerType;
                this.grainToReferenceMapping[grain.InterfaceType] = grain.ReferenceType;
            }
        }
예제 #4
0
        /// <summary>
        /// Constructors -- Registers Orleans system performance counters,
        /// plus any grain-specific activation counters that can be detected when this installer is run.
        /// </summary>
        public OrleansPerformanceCounterInstaller()
        {
            Trace.Listeners.Clear();
            var loggerFactory = CreateDefaultLoggerFactory($"{this.GetType()}.log");

            var parts = new ApplicationPartManager();

            parts.ConfigureDefaults().AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainClassFeature>());
            var grainClassFeature = parts.CreateAndPopulateFeature <GrainClassFeature>();

            CrashUtils.GrainTypes = grainClassFeature.Classes.Select(metadata => TypeUtils.GetFullName(metadata.ClassType)).ToList();
            consumer    = new OrleansPerfCounterTelemetryConsumer(loggerFactory);
            this.logger = loggerFactory.CreateLogger <OrleansPerformanceCounterInstaller>();
        }
        public CounterControl(ILoggerFactory loggerFactory)
        {
            // Check user is Administrator and has granted UAC elevation permission to run this app
            var userIdent     = WindowsIdentity.GetCurrent();
            var userPrincipal = new WindowsPrincipal(userIdent);

            IsRunningAsAdministrator = userPrincipal.IsInRole(WindowsBuiltInRole.Administrator);

            var parts = new ApplicationPartManager();

            parts.ConfigureDefaults()
            .AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainClassFeature>());
            var grainClassFeature = parts.CreateAndPopulateFeature <GrainClassFeature>();

            CrashUtils.GrainTypes = grainClassFeature.Classes.Select(metadata => TypeUtils.GetFullName(metadata.ClassType)).ToList();

            perfCounterConsumer = new OrleansPerfCounterTelemetryConsumer(loggerFactory);
            this.logger         = loggerFactory.CreateLogger <CounterControl>();
        }
        /// <summary>
        /// Constructors -- Registers Orleans system performance counters,
        /// plus any grain-specific activation counters that can be detected when this installer is run.
        /// </summary>
        public OrleansPerformanceCounterInstaller()
        {
            Trace.Listeners.Clear();
            var cfg = new NodeConfiguration {
                TraceFilePattern = null
            };
            var loggerFactory = CreateDefaultLoggerFactory(cfg.TraceFileName);

            var parts = new ApplicationPartManager();

            parts.AddApplicationPartsFromAppDomain();
            parts.AddApplicationPartsFromBasePath();
            parts.AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainClassFeature>());
            var grainClassFeature = parts.CreateAndPopulateFeature <GrainClassFeature>();

            CrashUtils.GrainTypes = grainClassFeature.Classes.Select(metadata => TypeUtils.GetFullName(metadata.ClassType)).ToList();
            consumer    = new OrleansPerfCounterTelemetryConsumer(loggerFactory);
            this.logger = loggerFactory.CreateLogger <OrleansPerformanceCounterInstaller>();
        }