// Copyright Epic Games, Inc. All Rights Reserved.
#pragma warning disable CA1027 // Use [Flags] attribute.
#pragma warning disable CA1069 // Overlapping constants in enum.
using System;
using EpicGames.Horde.Storage.Bundles;
namespace EpicGames.Horde.Compute
{
///
/// Version number for the compute protocol
///
public enum ComputeProtocol
{
///
/// No version specified
///
Unknown,
///
/// Initial version number
///
Initial,
///
/// Set new env vars UE_HORDE_CPU_COUNT and UE_HORDE_CPU_MULTIPLIER
///
NewCpuEnvVars,
///
/// Constant for the latest protocol version
///
Latest = (int)NewCpuEnvVars
}
///
/// Helper methods for compute protocol version numbers
///
public static class ComputeProtocolUtilities
{
///
/// Gets the appropriate bundle options for a compute protocol version number
///
public static BundleOptions GetBundleOptions(ComputeProtocol protocol)
{
if (protocol <= ComputeProtocol.Latest)
{
return new BundleOptions { MaxVersion = BundleVersion.PacketSequence };
}
else
{
throw new NotSupportedException($"Unknown compute protocol version ('{(int)protocol}')");
}
}
}
}