internal static void Initialize(GlobalConfiguration config = null) { InitializeStrategies(); var strategy = config == null ? GlobalConfiguration.DEFAULT_MULTICLUSTER_REGISTRATION_STRATEGY : config.DefaultMultiClusterRegistrationStrategy; defaultStrategy = GetStrategy(strategy); }
internal static void Initialize(GlobalConfiguration config) { InitializeStrategies(); if (config.HasMultiClusterNetwork && config.UseGlobalSingleInstanceByDefault) defaultStrategy = GlobalSingleInstanceRegistration.Singleton; else defaultStrategy = ClusterLocalRegistration.Singleton; }
internal static void Initialize(GlobalConfiguration config) { InitializeStrategies(); if (config.HasMultiClusterNetwork && config.UseGlobalSingleInstanceByDefault) { defaultStrategy = GlobalSingleInstanceRegistration.Singleton; } else { defaultStrategy = ClusterLocalRegistration.Singleton; } }
internal void AddEntry(int interfaceId, Type iface, int grainTypeCode, string grainInterface, string grainClass, string assembly, bool isGenericGrainClass, PlacementStrategy placement, MultiClusterRegistrationStrategy registrationStrategy, bool primaryImplementation = false) { lock (this) { GrainInterfaceData grainInterfaceData; if (table.ContainsKey(interfaceId)) { grainInterfaceData = table[interfaceId]; } else { grainInterfaceData = new GrainInterfaceData(interfaceId, iface, grainInterface); table[interfaceId] = grainInterfaceData; var interfaceTypeKey = GetTypeKey(iface, isGenericGrainClass); typeToInterfaceData[interfaceTypeKey] = grainInterfaceData; } var implementation = new GrainClassData(grainTypeCode, grainClass, isGenericGrainClass, grainInterfaceData, placement, registrationStrategy); if (!implementationIndex.ContainsKey(grainTypeCode)) implementationIndex.Add(grainTypeCode, implementation); grainInterfaceData.AddImplementation(implementation, primaryImplementation); if (primaryImplementation) { primaryImplementations[grainInterface] = grainClass; } else { if (!primaryImplementations.ContainsKey(grainInterface)) primaryImplementations.Add(grainInterface, grainClass); } if (localTestMode) { if (!loadedGrainAsemblies.Contains(assembly)) loadedGrainAsemblies.Add(assembly); } } }
public ActivationData(ActivationAddress addr, string genericArguments, PlacementStrategy placedUsing, MultiClusterRegistrationStrategy registrationStrategy, IActivationCollector collector, TimeSpan ageLimit) { if (null == addr) throw new ArgumentNullException("addr"); if (null == placedUsing) throw new ArgumentNullException("placedUsing"); if (null == collector) throw new ArgumentNullException("collector"); logger = LogManager.GetLogger("ActivationData", LoggerType.Runtime); ResetKeepAliveRequest(); Address = addr; State = ActivationState.Create; PlacedUsing = placedUsing; RegistrationStrategy = registrationStrategy; if (!Grain.IsSystemTarget && !Constants.IsSystemGrain(Grain)) { this.collector = collector; } CollectionAgeLimit = ageLimit; GrainReference = GrainReference.FromGrainId(addr.Grain, genericArguments, Grain.IsSystemTarget ? addr.Silo : null); }
public static void GetGrainTypeInfo(this IPlacementContext @this, GrainId grainId, out string grainClass, out PlacementStrategy placement, out MultiClusterRegistrationStrategy activationStrategy, string genericArguments = null) { @this.GetGrainTypeInfo(grainId.GetTypeCode(), out grainClass, out placement, out activationStrategy, genericArguments); }
public void GetGrainTypeInfo(int typeCode, out string grainClass, out PlacementStrategy placement, out MultiClusterRegistrationStrategy activationStrategy, string genericArguments = null) { GrainTypeManager.GetTypeInfo(typeCode, out grainClass, out placement, out activationStrategy, genericArguments); }
internal GrainClassData(int grainTypeCode, string grainClass, bool isGeneric, GrainInterfaceData interfaceData, PlacementStrategy placement, MultiClusterRegistrationStrategy registrationStrategy) { GrainTypeCode = grainTypeCode; GrainClass = grainClass; this.isGeneric = isGeneric; this.interfaceData = interfaceData; genericClassNames = new Dictionary<string, string>(); // TODO: initialize only for generic classes placementStrategy = placement ?? PlacementStrategy.GetDefault(); this.registrationStrategy = registrationStrategy ?? MultiClusterRegistrationStrategy.GetDefault(); }
internal bool TryGetTypeInfo(int typeCode, out string grainClass, out PlacementStrategy placement, out MultiClusterRegistrationStrategy registrationStrategy, string genericArguments = null) { lock (this) { grainClass = null; placement = null; registrationStrategy = null; if (!implementationIndex.ContainsKey(typeCode)) return false; var implementation = implementationIndex[typeCode]; grainClass = implementation.GetClassName(genericArguments); placement = implementation.PlacementStrategy; registrationStrategy = implementation.RegistrationStrategy; return true; } }
internal void GetTypeInfo(int typeCode, out string grainClass, out PlacementStrategy placement, out MultiClusterRegistrationStrategy activationStrategy, string genericArguments = null) { if (!grainInterfaceMap.TryGetTypeInfo(typeCode, out grainClass, out placement, out activationStrategy, genericArguments)) throw new OrleansException(String.Format("Unexpected: Cannot find an implementation class for grain interface {0}", typeCode)); }
internal RegistrationAttribute(MultiClusterRegistrationStrategy strategy) { RegistrationStrategy = strategy ?? MultiClusterRegistrationStrategy.GetDefault(); }