public override Task OnActivateAsync()
        {
            this.State = new StatsState();

            Logger.OrleansLogger = this.GetLogger();
            Logger.LogVerbose(this.GetLogger(), "StatsGrain", "OnActivate", "Enter");

            this.State.SiloSentMsgs = new Dictionary <string, Dictionary <string, long> >();
            this.State.SiloRecvMsgs = new Dictionary <string, Dictionary <string, long> >();

            this.State.SiloActivations   = new Dictionary <string, Dictionary <string, long> >();
            this.State.SiloDeactivations = new Dictionary <string, Dictionary <string, long> >();

            this.State.GrainClasses   = new HashSet <string>();
            this.State.SiloClientMsgs = new Dictionary <string, long>();

            this.operationCounter    = new Dictionary <string, long>();
            this.messages            = 0;
            this.clientMessages      = 0;
            this.updatesCounter      = 0;
            this.worklistSizeCounter = 0;
            this.latencyInfo         = new LatencyInfo
            {
                AccumulattedTimeDifference = 0,
                MaxLatency    = 0,
                MaxLatencyMsg = ""
            };

            Logger.LogVerbose(this.GetLogger(), "StatsGrain", "OnActivate", "Exit");
            return(Task.CompletedTask);
        }
        public async Task ResetStats()
        {
            await this.ClearStateAsync();

            this.State.SiloSentMsgs.Clear();
            this.State.SiloRecvMsgs.Clear();
            this.State.SiloActivations.Clear();
            this.State.SiloDeactivations.Clear();
            this.State.SiloClientMsgs.Clear();
            this.operationCounter.Clear();
            this.State.GrainClasses.Clear();
            this.messages       = 0;
            this.clientMessages = 0;
            this.memoryUsage    = 0;
            this.operationCounter.Clear();
            this.updatesCounter = 0;

            this.latencyInfo = new LatencyInfo()
            {
                AccumulattedTimeDifference = 0,
                MaxLatency    = 0,
                MaxLatencyMsg = ""
            };
            await this.WriteStateAsync();
        }