using Castle.Core.Logging; using Pilz.Data; namespace Pilz.Net.Api; public interface IApiServer { public delegate void OnCheckAuthenticationEventHandler(object sender, ApiAuthCheckEventArgs e); public delegate void OnCheckContextEventHandler(object sender, ApiContextEventArgs e); public delegate IDataManager? OnGetNewDataManagerEventHandler(object sender, EventArgs e); event OnCheckAuthenticationEventHandler? OnCheckAuthentication; event OnCheckContextEventHandler? OnCheckContext; event OnCheckContextEventHandler? OnCheckContextCompleted; event OnGetNewDataManagerEventHandler? OnGetNewDataManager; event DataManagerEventHandler? OnResetDataManager; IDataManager Manager { get; } string ApiUrl { get; } bool EnableAuth { get; set; } IApiMessageSerializer Serializer { get; } ILogger Log { get; set; } void Start(); void Stop() => Stop(true); void RegisterHandler(T instance) where T : class; void RegisterHandler(Delegate handler); void RegisterHandler(Delegate handler, bool throwOnError); void RegisterHandler(Delegate handler, ApiMessageHandlerAttribute attribute, bool throwOnError); Dictionary GetEndpoints(); void Stop(bool graceful); void Restart(bool graceful); }