107 lines
3.5 KiB
C#
107 lines
3.5 KiB
C#
// /**
|
|
// * File: CheckerApi.cs
|
|
// * Author: haraldwolff
|
|
// *
|
|
// * This file and it's content is copyrighted by the Author and / or copyright holder.
|
|
// * Any use wihtout proper permission is illegal and may lead to legal actions.
|
|
// *
|
|
// *
|
|
// **/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using ln.http;
|
|
using ln.http.resources;
|
|
using ln.types.threads;
|
|
using ln.perfdb.storage;
|
|
using Newtonsoft.Json;
|
|
namespace ln.skyscanner.http
|
|
{
|
|
public class CheckerApi : JsonCallResource
|
|
{
|
|
public CheckerApi(Resource container)
|
|
: base(container, "checker")
|
|
{
|
|
new Checks(this);
|
|
}
|
|
|
|
[Callable]
|
|
public PoolJob[] CurrentPoolJobs => SkyScanner.Instance.Checker.CurrentJobs;
|
|
[Callable]
|
|
public PoolJob[] QueuedPoolJobs => SkyScanner.Instance.Checker.QueuedJobs;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Checks : BaseResource
|
|
{
|
|
public Checks(CheckerApi container)
|
|
:base(container,"checks")
|
|
{ }
|
|
|
|
public override bool Contains(string name)
|
|
{
|
|
return base.Contains(name) || SkyScanner.Instance.Checker.ContainsPerfFile(name);
|
|
}
|
|
public override Resource GetResource(string name)
|
|
{
|
|
if (base.Contains(name))
|
|
return base.GetResource(name);
|
|
|
|
if (SkyScanner.Instance.Checker.ContainsPerfFile(name))
|
|
{
|
|
return new Check(this, name);
|
|
}
|
|
|
|
throw new KeyNotFoundException();
|
|
}
|
|
|
|
public override HttpResponse GetResponse(HttpRequest httpRequest)
|
|
{
|
|
HttpResponse response = new HttpResponse(httpRequest);
|
|
response.SetHeader("content-type", "application/json");
|
|
response.ContentWriter.Write(JsonConvert.SerializeObject(SkyScanner.Instance.Checker.PerfNames));
|
|
return response;
|
|
}
|
|
|
|
class Check : Resource
|
|
{
|
|
public Check(Checks container,String perfName)
|
|
:base(container,perfName)
|
|
{}
|
|
|
|
public override void AddResource(Resource resource) => throw new NotImplementedException();
|
|
public override bool Contains(string name) => throw new NotImplementedException();
|
|
public override IEnumerable<Resource> GetResources() => throw new NotImplementedException();
|
|
public override void RemoveResource(Resource resource) => throw new NotImplementedException();
|
|
|
|
public override HttpResponse GetResponse(HttpRequest httpRequest)
|
|
{
|
|
PerfFile perfFile = SkyScanner.Instance.Checker.GetPerfFile(Name);
|
|
PerfValue[] perfValues = null;
|
|
|
|
int interval = 3600;
|
|
|
|
if (httpRequest.Query.ContainsKey("interval"))
|
|
interval = int.Parse(httpRequest.Query["interval"]);
|
|
|
|
lock (perfFile)
|
|
{
|
|
perfFile.EnsureOpen();
|
|
perfValues = perfFile.QueryTime(interval, 0);
|
|
perfFile.Close();
|
|
}
|
|
|
|
HttpResponse response = new HttpResponse(httpRequest);
|
|
response.SetHeader("content-type", "application/json");
|
|
response.ContentWriter.Write(JsonConvert.SerializeObject(perfValues));
|
|
|
|
return response;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|