public Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config) { this.logger = providerRuntime.GetLogger("Dashboard"); var router = new Router(); new DashboardController(router, TaskScheduler.Current, providerRuntime); var options = new StartOptions { ServerFactory = "Nowin", Port = config.Properties.ContainsKey("Port") ? int.Parse(config.Properties["Port"]) : 8080, }; var username = config.Properties.ContainsKey("Username") ? config.Properties["Username"] : null; var password = config.Properties.ContainsKey("Password") ? config.Properties["Password"] : null; try { host = WebApp.Start(options, app => new WebServer(router, username, password).Configuration(app)); } catch (Exception ex) { this.logger.Error(10001, ex.ToString()); } this.logger.Verbose($"Dashboard listening on {options.Port}"); this.profiler = new GrainProfiler(TaskScheduler.Current, providerRuntime); var dashboardGrain = providerRuntime.GrainFactory.GetGrain<IDashboardGrain>(0); return dashboardGrain.Init(); }
public DashboardController(Router router, TaskScheduler taskScheduler, IProviderRuntime providerRuntime) { this.TaskScheduler = taskScheduler; this.ProviderRuntime = providerRuntime; Action<string, Func<IOwinContext, IDictionary<string, string>, Task>> add = router.Add; add("/", Index); add("/index.min.js", IndexJs); add("/DashboardCounters", GetDashboardCounters); add("/RuntimeStats/:address", GetRuntimeStats); add("/HistoricalStats/:address", GetHistoricalStats); add("/GrainStats/:grain", GetGrainStats); }
public DashboardController(Router router, TaskScheduler taskScheduler, IProviderRuntime providerRuntime) { this.TaskScheduler = taskScheduler; this.ProviderRuntime = providerRuntime; Action<string, Func<IOwinContext, IDictionary<string, string>, Task>> add = router.Add; add("/", Index); add("/index.min.js", IndexJs); add("/DashboardCounters", GetDashboardCounters); add("/RuntimeStats/:address", GetRuntimeStats); add("/HistoricalStats/:address", GetHistoricalStats); //this.Get["/SiloPerformanceMetrics"] = GetSiloPerformanceMetrics; //this.Get["/ClientPerformanceMetrics"] = GetClientPerformanceMetrics; //this.Get["/Counters"] = GetCounters; //add("/ForceActivationCollection/{timespan:int}/{address?}", PostForceActivationCollection); }
public WebServer(Router router, string username, string password) { this.Router = router; this.Username = username; this.Password = password; }