using System;
using System.Text.Json.Nodes;
namespace Robust.Server.ServerStatus
{
[NotContentImplementable]
public interface IStatusHost
{
void Start();
[Obsolete("Use async handlers")]
void AddHandler(StatusHostHandler handler);
void AddHandler(StatusHostHandlerAsync handler);
///
/// Invoked when a client queries a status request from the server.
/// THIS IS INVOKED FROM ANOTHER THREAD.
/// I REPEAT, THIS DOES NOT RUN ON THE MAIN THREAD.
/// MAKE TRIPLE SURE EVERYTHING IN HERE IS THREAD SAFE DEAR GOD.
///
event Action OnStatusRequest;
///
/// Invoked when a client queries an info request from the server.
/// THIS IS INVOKED FROM ANOTHER THREAD.
/// I REPEAT, THIS DOES NOT RUN ON THE MAIN THREAD.
/// MAKE TRIPLE SURE EVERYTHING IN HERE IS THREAD SAFE DEAR GOD.
///
event Action OnInfoRequest;
void SetMagicAczProvider(IMagicAczProvider provider);
///
/// Sets a provider for extra asset files if Hybrid ACZ is available.
///
///
///
/// If called multiple times, the previous provider is replaced. This only applies if ACZ is ran again later.
/// must be called manually for this to have an effect if ACZ has already been built.
///
///
/// It is valid to have both a Full Hybrid ACZ provider
/// and a Magic ACZ provider (via ) set at the same time.
/// The Full Hybrid provider is used if Hybrid ACZ is available, otherwise the Magic ACZ provider is used.
///
///
/// The provider to use.
///
void SetFullHybridAczProvider(IFullHybridAczProvider provider);
///
/// Invalidate the cached ACZ package.
/// This causes it to be re-generated the next time a client attempts to download the ACZ
/// (or requests the information for it).
///
void InvalidateAcz();
}
}