예제 #1
0
        private void ProcessStats(object state)
        {
            var currentTrace = Interlocked.Exchange(ref grainTrace, new ConcurrentDictionary <string, SiloGrainTraceEntry>());

            if (currentTrace.Count > 0)
            {
                if (siloAddress == null)
                {
                    siloAddress = localSiloDetails.SiloAddress.ToParsableString();
                }

                var items = currentTrace.Values.ToArray();

                foreach (var item in items)
                {
                    item.Grain = TypeFormatter.Parse(item.Grain);
                }

                try
                {
                    dashboardGrain = dashboardGrain ?? grainFactory.GetGrain <IDashboardGrain>(0);

                    dashboardGrain.SubmitTracing(siloAddress, items.AsImmutable()).Ignore();
                }
                catch (Exception ex)
                {
                    logger.LogWarning(100001, ex, "Exception thrown sending tracing to dashboard grain");
                }
            }
        }
예제 #2
0
        private void ProcessStats(object state)
        {
            if (dispatcher.CanDispatch())
            {
                var currentTrace = Interlocked.Exchange(ref grainTrace, new ConcurrentDictionary <string, SiloGrainTraceEntry>());

                var items = currentTrace.Values.ToArray();

                foreach (var item in items)
                {
                    item.Grain = TypeFormatter.Parse(item.Grain);
                }

                try
                {
                    dispatcher.DispatchAsync(() =>
                    {
                        this.dashboardGrain = this.dashboardGrain ?? grainFactory.GetGrain <IDashboardGrain>(0);

                        return(dashboardGrain.SubmitTracing(siloAddress, items.AsImmutable()));
                    }).Ignore();
                }
                catch (Exception ex)
                {
                    logger.LogWarning(100001, ex, "Exception thrown sending tracing to dashboard grain");
                }
            }
        }
 public DashboardClient(IGrainFactory grainFactory)
 {
     this.grainFactory = grainFactory;
     dashboardGrain    = grainFactory.GetGrain <IDashboardGrain>(0);
     remindersGrain    = grainFactory.GetGrain <IDashboardRemindersGrain>(0);
 }