using DorkNet.Server.Compat;
namespace DorkNet.Server.Versions.Late2020;
/// The "Late 2020" wire-format generation: covers all Rec Room
/// builds from the autumn 2020 schema migration through the end of the
/// year. The 2020.12.18 build is the canonical member; if/when we add
/// 2020.10 or 2020.11 builds and find their wire shapes are identical,
/// we just list them in here — no new code.
///
/// Currently this plugin is a marker: it declares which version
/// keys belong to the generation, but no strategy services are
/// registered yet. As controllers start branching on
/// 's
/// Generation, the strategies that get extracted will register
/// themselves through with a
/// keyed-DI binding so the right implementation resolves per
/// request.
///
public sealed class Late2020VersionPlugin : IVersionPlugin
{
public const string GenerationKey = "Late2020";
public IReadOnlyCollection VersionKeys { get; } = new[]
{
// Verified working against this server. The canonical
// private-deployment build the codebase has been developed
// against since the move to localhost.
"december_2020_12_18",
};
public string Generation => GenerationKey;
public void RegisterStrategies(IServiceCollection services)
{
// Intentionally empty for now. Generation-specific strategy
// services land here as soon as the first controller diverges
// (e.g. an IWireFormat keyed on GenerationKey, an IRouteOverride,
// etc.). Today every wire shape is implicitly "Late2020" so
// there's nothing to differentiate.
}
}