139 lines
5.5 KiB
C#
139 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using NLog.LayoutRenderers.Wrappers;
|
|
|
|
|
|
using ServerCore; using ServerBase;
|
|
|
|
|
|
namespace ServerBase;
|
|
|
|
public static class ProgramVersionHelper
|
|
{
|
|
public static ServerErrorCode checkClientProgramVersion( ServerConfig config
|
|
, ServerProgramVersion serverProgramVersion
|
|
, ClientProgramVersion clientVersion )
|
|
{
|
|
ArgumentNullException.ThrowIfNull(config, $"config is null !!!");
|
|
ArgumentNullException.ThrowIfNull(serverProgramVersion, $"serverProgramVersion is null !!!");
|
|
|
|
var err_msg = string.Empty;
|
|
|
|
if (null == clientVersion)
|
|
{
|
|
err_msg = $"ClientProgramVersion is null !!!";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.ClientProgramVersionIsNull;
|
|
}
|
|
|
|
var version_paths = config.getVersionPaths();
|
|
ArgumentNullException.ThrowIfNull(version_paths, $"version_paths is null !!!");
|
|
|
|
foreach ( var each in version_paths )
|
|
{
|
|
var version_type = each.Key;
|
|
|
|
switch(version_type)
|
|
{
|
|
case ProgramVersionType.MetaSchemaVersion:
|
|
if (serverProgramVersion.MetaSchemaVersion != clientVersion.MetaSchemaVersion)
|
|
{
|
|
err_msg = $"Not match MetaSchema Version !!! : serverMetaSchemaVersion:{serverProgramVersion.MetaSchemaVersion} == clientMetaSchemaVersion:{clientVersion.MetaSchemaVersion}";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.MetaSchemaVersionNotMatch;
|
|
}
|
|
break;
|
|
|
|
case ProgramVersionType.MetaDataVersion:
|
|
if (serverProgramVersion.MetaDataVersion != clientVersion.MetaDataVersion)
|
|
{
|
|
err_msg = $"Not match MetaData Version !!! : serverMetaDataVersion:{serverProgramVersion.MetaDataVersion} == clientMetaDataVersion:{clientVersion.MetaDataVersion}";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.MetaDataVersionNotMatch;
|
|
}
|
|
break;
|
|
|
|
case ProgramVersionType.PacketVersion:
|
|
if (serverProgramVersion.PacketVersion != clientVersion.PacketVersion)
|
|
{
|
|
err_msg = $"Not match Packet Version !!! : serverPacketVersion:{serverProgramVersion.PacketVersion} == clientPacketVersion:{clientVersion.PacketVersion}";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.PacketVersionNotMatch;
|
|
}
|
|
break;
|
|
|
|
case ProgramVersionType.ResourceVersion:
|
|
if (serverProgramVersion.ResourceVersion != clientVersion.ResourceVersion)
|
|
{
|
|
err_msg = $"Not match ResourceVersion Version !!! : serverPacketVersion:{serverProgramVersion.ResourceVersion} == clientResourceVersion:{clientVersion.ResourceVersion}";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.ResourceVersionNotMatch;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (config.ClientMinimumRequiredLogicVersion > clientVersion.LogicVersion)
|
|
{
|
|
err_msg = $"Not match ClientLogic Version !!! : ClientMinimumRequiredLogicVersion:{config.ClientMinimumRequiredLogicVersion} <= clientLogicVersion:{clientVersion.LogicVersion}";
|
|
Log.getLogger().error(err_msg);
|
|
return ServerErrorCode.ClientLogicVersionNotMatch;
|
|
}
|
|
}
|
|
|
|
return ServerErrorCode.Success;
|
|
}
|
|
|
|
public static Result appendVersion( this ServerProgramVersion programVersion
|
|
, ProgramVersionType versionType
|
|
, Int32 buildVersion, Int32 revisionVersion )
|
|
{
|
|
var result = new Result();
|
|
|
|
switch(versionType)
|
|
{
|
|
case ProgramVersionType.MetaSchemaVersion:
|
|
programVersion.MetaSchemaVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.MetaDataVersion:
|
|
programVersion.MetaDataVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.DbSchemaVersion:
|
|
programVersion.DbSchemaVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.PacketVersion:
|
|
programVersion.PacketVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.ResourceVersion:
|
|
programVersion.ResourceVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.ConfigVersion:
|
|
programVersion.ConfigVersion = (ulong)revisionVersion;
|
|
break;
|
|
|
|
case ProgramVersionType.LogicVersion:
|
|
var logic_version = new LogicVersion();
|
|
programVersion.LogicVersion = logic_version;
|
|
logic_version.Revision = revisionVersion;
|
|
break;
|
|
|
|
default:
|
|
var err_msg = $"Invaoid ProgramVersionType !!! : ProgramVersionType:{versionType}";
|
|
Log.getLogger().error(err_msg);
|
|
|
|
return result;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|