public InsideRuntimeClient( Dispatcher dispatcher, Catalog catalog, ILocalGrainDirectory directory, ClusterConfiguration config, IConsistentRingProvider ring, GrainTypeManager typeManager, TypeMetadataCache typeMetadataCache, Func<ISiloStatusOracle> siloStatusOracle, OrleansTaskScheduler scheduler) { this.dispatcher = dispatcher; MySilo = catalog.LocalSilo; this.directory = directory; ConsistentRingProvider = ring; Catalog = catalog; disposables = new List<IDisposable>(); callbacks = new ConcurrentDictionary<CorrelationId, CallbackData>(); Config = config; config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout); RuntimeClient.Current = this; this.typeManager = typeManager; this.Scheduler = scheduler; this.siloStatusOracle = new Lazy<ISiloStatusOracle>(siloStatusOracle); this.ConcreteGrainFactory = new GrainFactory(this, typeMetadataCache); RuntimeClient.Current = this; }
public InsideRuntimeClient( Dispatcher dispatcher, Catalog catalog, ILocalGrainDirectory directory, SiloAddress silo, ClusterConfiguration config, IConsistentRingProvider ring, GrainTypeManager typeManager) { this.dispatcher = dispatcher; MySilo = silo; this.directory = directory; ConsistentRingProvider = ring; Catalog = catalog; disposables = new List<IDisposable>(); callbacks = new ConcurrentDictionary<CorrelationId, CallbackData>(); Config = config; config.OnConfigChange("Globals/Message", () => ResponseTimeout = Config.Globals.ResponseTimeout); CallbackData.Config = Config.Globals; RuntimeClient.Current = this; this.typeManager = typeManager; }
internal Catalog( GrainId grainId, SiloAddress silo, string siloName, ILocalGrainDirectory grainDirectory, GrainTypeManager typeManager, OrleansTaskScheduler scheduler, ActivationDirectory activationDirectory, ClusterConfiguration config, IGrainRuntime grainRuntime, out Action<Dispatcher> setDispatcher) : base(grainId, silo) { LocalSilo = silo; localSiloName = siloName; directory = grainDirectory; activations = activationDirectory; this.scheduler = scheduler; GrainTypeManager = typeManager; this.grainRuntime = grainRuntime; collectionNumber = 0; destroyActivationsNumber = 0; logger = TraceLogger.GetLogger("Catalog", TraceLogger.LoggerType.Runtime); this.config = config.Globals; setDispatcher = d => dispatcher = d; ActivationCollector = new ActivationCollector(config); GC.GetTotalMemory(true); // need to call once w/true to ensure false returns OK value config.OnConfigChange("Globals/Activation", () => scheduler.RunOrQueueAction(Start, SchedulingContext), false); IntValueStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COUNT, () => activations.Count); activationsCreated = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_CREATED); activationsDestroyed = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_DESTROYED); activationsFailedToActivate = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_FAILED_TO_ACTIVATE); collectionCounter = CounterStatistic.FindOrCreate(StatisticNames.CATALOG_ACTIVATION_COLLECTION_NUMBER_OF_COLLECTIONS); inProcessRequests = IntValueStatistic.FindOrCreate(StatisticNames.MESSAGING_PROCESSING_ACTIVATION_DATA_ALL, () => { long counter = 0; lock (activations) { foreach (var activation in activations) { ActivationData data = activation.Value; counter += data.GetRequestCount(); } } return counter; }); }