public GrainTypeManager( ILocalSiloDetails siloDetails, IApplicationPartManager 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(); }
public SiloAssemblyLoader(NodeConfiguration nodeConfig, MultiClusterRegistrationStrategyManager registrationManager) { IDictionary <string, SearchOption> additionalDirectories = nodeConfig.AdditionalAssemblyDirectories; this.registrationManager = registrationManager; this.excludedGrains = nodeConfig.ExcludedGrainTypes != null ? new List <string>(nodeConfig.ExcludedGrainTypes) : new List <string>(); var exeRoot = Path.GetDirectoryName(typeof(SiloAssemblyLoader).GetTypeInfo().Assembly.Location); var appRoot = Path.Combine(exeRoot, "Applications"); var cwd = Directory.GetCurrentDirectory(); directories = new Dictionary <string, SearchOption> { { exeRoot, SearchOption.TopDirectoryOnly }, { appRoot, SearchOption.AllDirectories } }; foreach (var kvp in additionalDirectories) { // Make sure the path is clean (get rid of ..\'s) directories[new DirectoryInfo(kvp.Key).FullName] = kvp.Value; } if (!directories.ContainsKey(cwd)) { directories.Add(cwd, SearchOption.TopDirectoryOnly); } LoadApplicationAssemblies(); }
public GrainTypeManager(bool localTestMode, SiloAssemblyLoader loader, DefaultPlacementStrategy defaultPlacementStrategy, SerializationManager serializationManager, MultiClusterRegistrationStrategyManager multiClusterRegistrationStrategyManager) { this.defaultPlacementStrategy = defaultPlacementStrategy.PlacementStrategy; this.loader = loader; this.serializationManager = serializationManager; this.multiClusterRegistrationStrategyManager = multiClusterRegistrationStrategyManager; grainInterfaceMap = new GrainInterfaceMap(localTestMode, this.defaultPlacementStrategy); ClusterGrainInterfaceMap = grainInterfaceMap; grainInterfaceMapsBySilo = new Dictionary <SiloAddress, GrainInterfaceMap>(); }
public GrainTypeManager(ILocalSiloDetails siloDetails, SiloAssemblyLoader loader, DefaultPlacementStrategy defaultPlacementStrategy, SerializationManager serializationManager, MultiClusterRegistrationStrategyManager multiClusterRegistrationStrategyManager) { var localTestMode = siloDetails.SiloAddress.Endpoint.Address.Equals(IPAddress.Loopback); this.defaultPlacementStrategy = defaultPlacementStrategy.PlacementStrategy; this.loader = loader; this.serializationManager = serializationManager; this.multiClusterRegistrationStrategyManager = multiClusterRegistrationStrategyManager; grainInterfaceMap = new GrainInterfaceMap(localTestMode, this.defaultPlacementStrategy); ClusterGrainInterfaceMap = grainInterfaceMap; grainInterfaceMapsBySilo = new Dictionary <SiloAddress, GrainInterfaceMap>(); }
public GenericGrainTypeData(Type activationType, Type stateObjectType, MultiClusterRegistrationStrategyManager registrationManager) : base(activationType, registrationManager) { if (!activationType.GetTypeInfo().IsGenericTypeDefinition) { throw new ArgumentException("Activation type is not generic: " + activationType.Name); } this.activationType = activationType; this.stateObjectType = stateObjectType; this.registrationManager = registrationManager; }
public GrainTypeData(Type type, MultiClusterRegistrationStrategyManager registrationManager) { var typeInfo = type.GetTypeInfo(); Type = type; IsReentrant = typeInfo.GetCustomAttributes(typeof(ReentrantAttribute), true).Any(); // TODO: shouldn't this use GrainInterfaceUtils.IsStatelessWorker? IsStatelessWorker = typeInfo.GetCustomAttributes(typeof(StatelessWorkerAttribute), true).Any(); GrainClass = TypeUtils.GetFullName(typeInfo); RemoteInterfaceTypes = GetRemoteInterfaces(type); MayInterleave = GetMayInterleavePredicate(typeInfo) ?? (_ => false); MultiClusterRegistrationStrategy = registrationManager?.GetMultiClusterRegistrationStrategy(type); }
public GrainTypeManager(ILocalSiloDetails siloDetails, SiloAssemblyLoader loader, DefaultPlacementStrategy defaultPlacementStrategy, SerializationManager serializationManager, MultiClusterRegistrationStrategyManager multiClusterRegistrationStrategyManager) : this(siloDetails.SiloAddress.Endpoint.Address.Equals(IPAddress.Loopback), loader, defaultPlacementStrategy, serializationManager, multiClusterRegistrationStrategyManager) { }
public SiloAssemblyLoader(NodeConfiguration nodeConfig, MultiClusterRegistrationStrategyManager registrationManager) : this(nodeConfig.AdditionalAssemblyDirectories, registrationManager, nodeConfig.ExcludedGrainTypes) { }