diff --git a/BrokerApiCore/ApiModels/AccountApiModel.cs b/BrokerApiCore/ApiModels/AccountApiModel.cs index 71fc2de..bb9c9a4 100644 --- a/BrokerApiCore/ApiModels/AccountApiModel.cs +++ b/BrokerApiCore/ApiModels/AccountApiModel.cs @@ -1,9 +1,9 @@ -namespace BrokerCore.ApiModels; - -using System.ComponentModel; +using System.ComponentModel; using Swashbuckle.AspNetCore.Annotations; +namespace BrokerApiCore; + public class DummyRequest { public required string Dummy { get; set; } diff --git a/BrokerApiCore/ApiModels/AdminModel.cs b/BrokerApiCore/ApiModels/AdminModel.cs index 9895c85..3acfd75 100644 --- a/BrokerApiCore/ApiModels/AdminModel.cs +++ b/BrokerApiCore/ApiModels/AdminModel.cs @@ -1,10 +1,8 @@ -namespace BrokerCore.ApiModels; - -using System.ComponentModel; +using System.ComponentModel; using System.Text.Json.Serialization; - using Swashbuckle.AspNetCore.Annotations; +namespace BrokerApiCore; public class AdminSapphireChangeRequest { public string AccountId { get; set; } = string.Empty; diff --git a/BrokerApiCore/ApiModels/CommonApiModel.cs b/BrokerApiCore/ApiModels/CommonApiModel.cs index cb77f89..1d890b2 100644 --- a/BrokerApiCore/ApiModels/CommonApiModel.cs +++ b/BrokerApiCore/ApiModels/CommonApiModel.cs @@ -1,7 +1,6 @@ -namespace BrokerCore.ApiModels; - -using System.ComponentModel; +using System.ComponentModel; +namespace BrokerApiCore; public class ApiErrorResponse { [Description("에러 추척용 id")] diff --git a/BrokerApiCore/ApiModels/ExchangeApiModel.cs b/BrokerApiCore/ApiModels/ExchangeApiModel.cs index d5e46c2..fcb59c3 100644 --- a/BrokerApiCore/ApiModels/ExchangeApiModel.cs +++ b/BrokerApiCore/ApiModels/ExchangeApiModel.cs @@ -1,17 +1,8 @@ using System.ComponentModel; +using ServerCommon; using Swashbuckle.AspNetCore.Annotations; -namespace BrokerCore.ApiModels; - -using System.Runtime.Serialization; -using System.Text.Json.Serialization; - -using Common; - -using DbEntity; - -using ServerCommon; - +namespace BrokerApiCore; [SwaggerSchema("사파이어 잔액 요청")] public class SapphireRequest { diff --git a/BrokerApiCore/ApiModels/PlanetAuthApiModel.cs b/BrokerApiCore/ApiModels/PlanetAuthApiModel.cs index 9d2713c..400e376 100644 --- a/BrokerApiCore/ApiModels/PlanetAuthApiModel.cs +++ b/BrokerApiCore/ApiModels/PlanetAuthApiModel.cs @@ -1,9 +1,7 @@ -namespace BrokerCore.ApiModels; - -using System.ComponentModel; - +using System.ComponentModel; using Swashbuckle.AspNetCore.Annotations; +namespace BrokerApiCore; [SwaggerSchema("플래닛 인증 요청")] public class PlanetAuthRequest { diff --git a/BrokerApiCore/ApiModels/PlanetItemExchangeApiModel.cs b/BrokerApiCore/ApiModels/PlanetItemExchangeApiModel.cs index 3561e8a..0ae73be 100644 --- a/BrokerApiCore/ApiModels/PlanetItemExchangeApiModel.cs +++ b/BrokerApiCore/ApiModels/PlanetItemExchangeApiModel.cs @@ -1,10 +1,10 @@ -namespace BrokerCore.ApiModels; - -using System.ComponentModel; +using System.ComponentModel; using System.Text.Json.Serialization; using Swashbuckle.AspNetCore.Annotations; +namespace BrokerApiCore; + [SwaggerSchema("재화 잔액 요청")] public class CurrencyBalanceRequest { diff --git a/BrokerApiCore/ApiModels/PlanetItemExchangeOrderDto.cs b/BrokerApiCore/ApiModels/PlanetItemExchangeOrderDto.cs index f38d79d..1ac42ab 100644 --- a/BrokerApiCore/ApiModels/PlanetItemExchangeOrderDto.cs +++ b/BrokerApiCore/ApiModels/PlanetItemExchangeOrderDto.cs @@ -1,14 +1,11 @@ -namespace BrokerCore.ApiModels; - + using System.ComponentModel; using System.Text.Json.Serialization; - -using DbEntity; - using ServerCommon; - using Swashbuckle.AspNetCore.Annotations; +namespace BrokerApiCore; + [SwaggerSchema("플래닛 아이템 교환 주문 정보")] public class PlanetItemExchangeOrderDto { diff --git a/BrokerApiCore/ApiModels/UserApiModel.cs b/BrokerApiCore/ApiModels/UserApiModel.cs index bc7b9a9..7d06e9e 100644 --- a/BrokerApiCore/ApiModels/UserApiModel.cs +++ b/BrokerApiCore/ApiModels/UserApiModel.cs @@ -1,7 +1,7 @@ using System.ComponentModel; using Swashbuckle.AspNetCore.Annotations; -namespace BrokerCore.ApiModels; +namespace BrokerApiCore; [SwaggerSchema("유저 사파이어 잔액 요청")] public class UserSapphireRequest diff --git a/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetProviderLogActor.cs b/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetProviderLogActor.cs index 61e6ba5..c6158b8 100644 --- a/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetProviderLogActor.cs +++ b/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetProviderLogActor.cs @@ -1,9 +1,9 @@ -namespace BrokerCore.BrokerBusinessLog; - + using Newtonsoft.Json; using ServerBase; +namespace BrokerApiCore; public class PlanetProviderLogActor : IWithLogActor { // 로그 행위자 정보 diff --git a/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetUserLogActor.cs b/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetUserLogActor.cs index 656dee8..340b52b 100644 --- a/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetUserLogActor.cs +++ b/BrokerApiCore/BrokerBusinessLog/LogActor/PlanetUserLogActor.cs @@ -1,19 +1,7 @@ - -using Newtonsoft.Json; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using Newtonsoft.Json; using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - - -namespace BrokerCore.BrokerBusinessLog; +namespace BrokerApiCore; public class PlanetUserLogActor : ILogActor { [JsonProperty] public ServerType ServerType { get; init; } = ServerType.BrokerApi; diff --git a/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs b/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs index f1aeb90..121ab3d 100644 --- a/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs +++ b/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs @@ -1,15 +1,16 @@  using ServerBase; using ServerCommon; +using ServerCommon.BusinessLogDomain; -namespace BrokerCore.BrokerBusinessLog; +namespace BrokerApiCore; public class PlanetItemExchangeBusinessLog : ILogInvokerEx { private readonly PlanetItemExchangeLogData m_log_data; - public PlanetItemExchangeBusinessLog(LogActionEx logAction, PlanetItemExchangeLogData logData) + public PlanetItemExchangeBusinessLog(LogActionEx logAction, PlanetItemExchangeLogData logData) : base(LogDomainType.BrokerApi, logAction) { m_log_data = new PlanetItemExchangeLogData(this, logData); diff --git a/BrokerApiCore/BrokerBusinessLog/PlanetProviderAuthBusinessLog.cs b/BrokerApiCore/BrokerBusinessLog/PlanetProviderAuthBusinessLog.cs index 18d9585..42cb602 100644 --- a/BrokerApiCore/BrokerBusinessLog/PlanetProviderAuthBusinessLog.cs +++ b/BrokerApiCore/BrokerBusinessLog/PlanetProviderAuthBusinessLog.cs @@ -1,10 +1,9 @@ - - -using ServerBase; +using ServerBase; using ServerCommon; +using ServerCommon.BusinessLogDomain; -namespace BrokerCore.BrokerBusinessLog; +namespace BrokerApiCore; public class PlanetProviderAuthBusinessLog : ILogInvokerEx { diff --git a/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs b/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs index 906c76c..a64c25a 100644 --- a/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs +++ b/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs @@ -1,14 +1,17 @@ -using ServerBase; +using BrokerApiServer; + +using ServerBase; using ServerCommon; +using ServerCommon.BusinessLogDomain; -namespace BrokerCore.BrokerBusinessLog; +namespace BrokerApiCore; public class PlanetUserAuthBusinessLog : ILogInvokerEx { private readonly PlanetUserAuthLogData m_log_data; - public PlanetUserAuthBusinessLog(PlanetUserAuthLogData logData, LogActionType logActionType) + public PlanetUserAuthBusinessLog(PlanetUserAuthLogData logData, LogActionType logActionType) : base(LogDomainType.BrokerApi, new LogActionEx(logActionType)) { m_log_data = new PlanetUserAuthLogData(this, logData); diff --git a/BrokerApiCore/BrokerServerLogic.cs b/BrokerApiCore/BrokerServerLogic.cs index c542349..d2fbaa8 100644 --- a/BrokerApiCore/BrokerServerLogic.cs +++ b/BrokerApiCore/BrokerServerLogic.cs @@ -1,15 +1,11 @@ - -using ServerCore; +using NLog.Config; + using ServerBase; using ServerCommon; - - -namespace BrokerCore; - - -using NLog.Config; +using ServerCore; using MODULE_ID = System.UInt32; +namespace BrokerApiCore; public sealed class BrokerServerLogic : IServerLogic, IWithLogActor, IInitializer { @@ -25,9 +21,15 @@ public sealed class BrokerServerLogic : IServerLogic, IWithLogActor, IInitialize m_server_config = serverConfig; } - public IModule getModule(MODULE_ID moduleId) { throw new NullReferenceException(); } + public IModule getModule(MODULE_ID moduleId) + { + return null; + } - public Result registerEntityTicker(EntityTicker entityTicker) { throw new NullReferenceException(); } + public Result registerEntityTicker(EntityTicker entityTicker) + { + return null; + } public async Task onInit() diff --git a/BrokerApiCore/Common/ApiException.cs b/BrokerApiCore/Common/ApiException.cs index 1eeb69c..77fdbc4 100644 --- a/BrokerApiCore/Common/ApiException.cs +++ b/BrokerApiCore/Common/ApiException.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.Common; +namespace BrokerApiCore; public class ApiException: Exception { diff --git a/BrokerApiCore/Common/ApiExtensions.cs b/BrokerApiCore/Common/ApiExtensions.cs index 909223c..43e42be 100644 --- a/BrokerApiCore/Common/ApiExtensions.cs +++ b/BrokerApiCore/Common/ApiExtensions.cs @@ -1,8 +1,4 @@ -namespace BrokerCore.Common; - -using ApiModels; - -using DbEntity; +namespace BrokerApiCore; public static class ApiExtensions { diff --git a/BrokerApiCore/Common/Guard.cs b/BrokerApiCore/Common/Guard.cs index 27af2ce..6af4004 100644 --- a/BrokerApiCore/Common/Guard.cs +++ b/BrokerApiCore/Common/Guard.cs @@ -1,13 +1,7 @@ -using System; -using System.Diagnostics.CodeAnalysis; - - -using ServerCore; +using System.Diagnostics.CodeAnalysis; using ServerBase; -using ServerCommon; - -namespace BrokerCore.Common; +namespace BrokerApiCore; public static class Guard { diff --git a/BrokerApiCore/Common/Helpers.cs b/BrokerApiCore/Common/Helpers.cs index 39b07df..bbc55a4 100644 --- a/BrokerApiCore/Common/Helpers.cs +++ b/BrokerApiCore/Common/Helpers.cs @@ -1,19 +1,12 @@ -namespace BrokerCore.Common; - -using System.Security.Cryptography; - -using BrokerBusinessLog; - -using DbEntity; - -using Entity.Actions; +using System.Security.Cryptography; using MetaAssets; - using ServerCommon; +using ServerCommon.BusinessLogDomain; -using ServerCore; using ServerBase; +using ServerCore; +namespace BrokerApiCore; public class Helpers { public static string generateSecureKey(int keySizeInBytes = 32, bool isBase64 = true) @@ -46,25 +39,25 @@ public class Helpers Title = mailMeta.Mail_Title, Text = mailMeta.Mail_Desc, ExpireDate = expire_date, - ItemList = getMailItems(productMeta).ToList(), + ItemList = getMailItems(productMeta), PackageOrderId = string.Empty, }; return mail_send_option; } - public static IEnumerable getMailItems(ProductMetaData productMetaData) + public static List getMailItems(ProductMetaData productMetaData) { if (productMetaData.ItemID_First != 0) { - return productMetaData.First_List.Select(itemMeta => new MailItem() + return productMetaData.First_List.Select(itemMeta => new ServerCommon.MailItem { ItemId = (UInt32)itemMeta.Id, Count = itemMeta.Value, ProductId = (UInt32)productMetaData.Id, isRepeatProduct = false - }); + }).ToList(); } - return new List(); + return []; } public static PlanetItemExchangeLogData createFromExchangeOrderLog(PlanetItemExchangeOrder order) diff --git a/BrokerApiCore/Common/JwtOption.cs b/BrokerApiCore/Common/JwtOption.cs index 64c0253..206b0b9 100644 --- a/BrokerApiCore/Common/JwtOption.cs +++ b/BrokerApiCore/Common/JwtOption.cs @@ -1,7 +1,7 @@ //============================================================== // JWT 설정 정보를 담고있는 클래스입니다. //============================================================== -namespace BrokerCore.Common; +namespace BrokerApiCore; public class JwtOption { public string ValidIssuer { get; set; } = string.Empty; diff --git a/BrokerApiCore/Common/ResultFailException.cs b/BrokerApiCore/Common/ResultFailException.cs index b936b0b..3b5a1c9 100644 --- a/BrokerApiCore/Common/ResultFailException.cs +++ b/BrokerApiCore/Common/ResultFailException.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.Common; +namespace BrokerApiCore; public class ResultFailException : ApiException { public ResultFailException(Result result, string? message = null) : base((int)result.ErrorCode, diff --git a/BrokerApiCore/DbEntity/PlanetInfo.cs b/BrokerApiCore/DbEntity/PlanetInfo.cs index 6a2b611..023c1fa 100644 --- a/BrokerApiCore/DbEntity/PlanetInfo.cs +++ b/BrokerApiCore/DbEntity/PlanetInfo.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.DbEntity; +namespace BrokerApiCore; public class PlanetInfo { diff --git a/BrokerApiCore/DbEntity/PlanetItemExchangeOrder.cs b/BrokerApiCore/DbEntity/PlanetItemExchangeOrder.cs index 3b7b6d1..952a40d 100644 --- a/BrokerApiCore/DbEntity/PlanetItemExchangeOrder.cs +++ b/BrokerApiCore/DbEntity/PlanetItemExchangeOrder.cs @@ -1,6 +1,6 @@ -namespace BrokerCore.DbEntity; using ServerCommon; +namespace BrokerApiCore; //================================================================================ // 교환 거래 주문 정보 //================================================================================ diff --git a/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountTotalLimit.cs b/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountTotalLimit.cs index b5d66b7..5b5618e 100644 --- a/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountTotalLimit.cs +++ b/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountTotalLimit.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.DbEntity; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountTotalLimit { diff --git a/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountUserLimit.cs b/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountUserLimit.cs index 54f6d12..0acde8e 100644 --- a/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountUserLimit.cs +++ b/BrokerApiCore/DbEntity/PlanetItemExchangeOrderAmountUserLimit.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.DbEntity; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountUserLimit { diff --git a/BrokerApiCore/DbEntity/SapphireExchangeOrder.cs b/BrokerApiCore/DbEntity/SapphireExchangeOrder.cs index 590cc18..76711e3 100644 --- a/BrokerApiCore/DbEntity/SapphireExchangeOrder.cs +++ b/BrokerApiCore/DbEntity/SapphireExchangeOrder.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.DbEntity; +namespace BrokerApiCore; public enum ExchangeOrderStatus { diff --git a/BrokerApiCore/DbEntity/SsoAccountInfo.cs b/BrokerApiCore/DbEntity/SsoAccountInfo.cs index a7593f2..966600e 100644 --- a/BrokerApiCore/DbEntity/SsoAccountInfo.cs +++ b/BrokerApiCore/DbEntity/SsoAccountInfo.cs @@ -1,6 +1,6 @@ -namespace BrokerCore.DbEntity; +using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; +namespace BrokerApiCore; [Keyless] public class SsoAccountInfo diff --git a/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs b/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs index a6f624a..59b5086 100644 --- a/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs +++ b/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs @@ -1,12 +1,8 @@ using System.Text; +using ServerBase; +using ServerCommon; using ServerCore; -using BrokerCore.BrokerBusinessLog; - -using ServerCommon; - -using ServerCore; using ServerBase; - -namespace BrokerCore.Entity.Actions; +namespace BrokerApiCore; using MetaAssets; diff --git a/BrokerApiCore/Entity/Actions/UserAuthAction.cs b/BrokerApiCore/Entity/Actions/UserAuthAction.cs index b7358ca..1b539dd 100644 --- a/BrokerApiCore/Entity/Actions/UserAuthAction.cs +++ b/BrokerApiCore/Entity/Actions/UserAuthAction.cs @@ -1,16 +1,7 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; +using ServerBase; -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - - -namespace BrokerCore.Entity; +namespace BrokerApiCore; using ServerCommon; diff --git a/BrokerApiCore/Entity/BrokerMailEntity.cs b/BrokerApiCore/Entity/BrokerMailEntity.cs index e5f941b..7a0d148 100644 --- a/BrokerApiCore/Entity/BrokerMailEntity.cs +++ b/BrokerApiCore/Entity/BrokerMailEntity.cs @@ -1,13 +1,10 @@  -using ServerCore; using ServerBase; using ServerCommon; +using ServerCore; -namespace BrokerCore.Entity; - -using Actions; - +namespace BrokerApiCore; public class BrokerMailEntity : EntityBase, IWithLogActor { @@ -16,7 +13,7 @@ public class BrokerMailEntity : EntityBase, IWithLogActor // !! 주의 현상태에서는 EntityBase는 반드시 UserBase여야 한다. // !! MailAttribute가 AccountAttribute를 참조하고, AccountAttribute는 UserBase를 참조하기 때문 - public BrokerMailEntity(EntityBase parent, IServerLogic serverLogic) + public BrokerMailEntity(EntityBase parent, IServerLogic serverLogic) : base(EntityType.Mail, parent) { this.m_parent = parent; diff --git a/BrokerApiCore/Entity/Helpers/EntityExtensions.cs b/BrokerApiCore/Entity/Helpers/EntityExtensions.cs index 8fd1ed4..ca3fa9e 100644 --- a/BrokerApiCore/Entity/Helpers/EntityExtensions.cs +++ b/BrokerApiCore/Entity/Helpers/EntityExtensions.cs @@ -1,8 +1,6 @@ -namespace BrokerCore.Entity; +namespace BrokerApiCore; -using ServerCommon; - -using ServerCore; using ServerBase; +using ServerBase; using ServerCore; public static class EntityExtensions { diff --git a/BrokerApiCore/Entity/Helpers/EntityHelper.cs b/BrokerApiCore/Entity/Helpers/EntityHelper.cs index 6ec1c96..0ccc5fc 100644 --- a/BrokerApiCore/Entity/Helpers/EntityHelper.cs +++ b/BrokerApiCore/Entity/Helpers/EntityHelper.cs @@ -1,17 +1,7 @@ - - -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; +using ServerBase; -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace BrokerCore.Entity; +namespace BrokerApiCore; public static class EntityHelper diff --git a/BrokerApiCore/Entity/Helpers/MailSendOption.cs b/BrokerApiCore/Entity/Helpers/MailSendOption.cs index 6357fe8..d6098f3 100644 --- a/BrokerApiCore/Entity/Helpers/MailSendOption.cs +++ b/BrokerApiCore/Entity/Helpers/MailSendOption.cs @@ -1,8 +1,8 @@ -namespace BrokerCore.Entity.Actions; +namespace BrokerApiCore; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; public record class MailSendOption { diff --git a/BrokerApiCore/Entity/PlanetUserEntity.cs b/BrokerApiCore/Entity/PlanetUserEntity.cs index 205c83a..c71c6b8 100644 --- a/BrokerApiCore/Entity/PlanetUserEntity.cs +++ b/BrokerApiCore/Entity/PlanetUserEntity.cs @@ -1,13 +1,8 @@ -namespace BrokerCore.Entity; - -using Actions; - -using BrokerBusinessLog; - +using ServerBase; using ServerCommon; +using ServerCore; -using ServerCore; using ServerBase; - +namespace BrokerApiCore; public sealed class PlanetUserEntity : EntityBase, IWithLogActor { private readonly DynamoDbClient m_dynamo_db_client; diff --git a/BrokerApiCore/Meta/BrokerApiMetaDataManager.cs b/BrokerApiCore/Meta/BrokerApiMetaDataManager.cs index 360d88e..b558768 100644 --- a/BrokerApiCore/Meta/BrokerApiMetaDataManager.cs +++ b/BrokerApiCore/Meta/BrokerApiMetaDataManager.cs @@ -1,4 +1,4 @@ -namespace BrokerCore.Meta; +namespace BrokerApiCore; using Microsoft.Extensions.Hosting; diff --git a/BrokerApiCore/Meta/BrokerMetaDataManager.cs b/BrokerApiCore/Meta/BrokerMetaDataManager.cs index a59dd58..c7c1998 100644 --- a/BrokerApiCore/Meta/BrokerMetaDataManager.cs +++ b/BrokerApiCore/Meta/BrokerMetaDataManager.cs @@ -1,11 +1,9 @@ using System.Collections.Concurrent; - - +using MetaAssets; using ServerBase; using ServerCommon; -using MetaAssets; - +namespace BrokerApiCore; public class BrokerMetaTable { public string Version { get; private set; } diff --git a/BrokerApiCore/Meta/PlanetItemExchangePolicy.cs b/BrokerApiCore/Meta/PlanetItemExchangePolicy.cs deleted file mode 100644 index 01d3788..0000000 --- a/BrokerApiCore/Meta/PlanetItemExchangePolicy.cs +++ /dev/null @@ -1,23 +0,0 @@ -// namespace BrokerCore.Meta; -// -// public class PlanetItemExchangePolicy -// { -// // ID -// // PlanetId -// // CaliverseItemType -// // CaliverseItemId -// // CaliverseItemAmount -// // PlanetItemType -// // PlanetItemId -// // PlanetItemAmount -// // Description -// -// public string? Id { get; set; } -// public string? PlanetId { get; set; } -// public string? CaliverseItemType { get; set; } -// public string? CaliverseItemId { get; set; } -// public long CaliverseItemAmount { get; set; } -// public string? PlanetItemType { get; set; } -// public string? PlanetItemId { get; set; } -// public long PlanetItemAmount { get; set; } -// } diff --git a/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.Designer.cs b/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.Designer.cs index 362a42a..31a3ff5 100644 --- a/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.Designer.cs +++ b/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.Designer.cs @@ -1,6 +1,9 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + +using BrokerApiServer; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250217015116_SchemaChanges_105106")] diff --git a/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.cs b/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.cs index 2c99da0..5c8e12d 100644 --- a/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.cs +++ b/BrokerApiCore/Migrations/20250217015116_SchemaChanges_105106.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_105106 : Migration diff --git a/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.Designer.cs b/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.Designer.cs index 30b888f..1d2eec1 100644 --- a/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.Designer.cs +++ b/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250224031421_SchemaChanges_121410")] diff --git a/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.cs b/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.cs index c7308a5..3065e44 100644 --- a/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.cs +++ b/BrokerApiCore/Migrations/20250224031421_SchemaChanges_121410.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_121410 : Migration diff --git a/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.Designer.cs b/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.Designer.cs index 8db2a63..3bd8eda 100644 --- a/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.Designer.cs +++ b/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.Designer.cs @@ -1,6 +1,9 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + +using BrokerApiServer; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250314055515_SchemaChanges_145503")] diff --git a/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.cs b/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.cs index 104649c..ec46c41 100644 --- a/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.cs +++ b/BrokerApiCore/Migrations/20250314055515_SchemaChanges_145503.cs @@ -2,7 +2,7 @@ #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_145503 : Migration diff --git a/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.Designer.cs b/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.Designer.cs index cf696cd..dfb373d 100644 --- a/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.Designer.cs +++ b/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250314062930_SchemaChanges_152918")] diff --git a/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.cs b/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.cs index cfea74d..cc48a9c 100644 --- a/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.cs +++ b/BrokerApiCore/Migrations/20250314062930_SchemaChanges_152918.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_152918 : Migration diff --git a/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.Designer.cs b/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.Designer.cs index 2f53d8a..c331929 100644 --- a/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.Designer.cs +++ b/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250314063529_SchemaChanges_153518")] diff --git a/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.cs b/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.cs index b66e61b..18585fb 100644 --- a/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.cs +++ b/BrokerApiCore/Migrations/20250314063529_SchemaChanges_153518.cs @@ -2,7 +2,7 @@ #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_153518 : Migration diff --git a/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.Designer.cs b/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.Designer.cs index 9c00d80..cf0c9a2 100644 --- a/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.Designer.cs +++ b/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250314070903_SchemaChanges_160851")] diff --git a/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.cs b/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.cs index 9866b8e..d3ec061 100644 --- a/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.cs +++ b/BrokerApiCore/Migrations/20250314070903_SchemaChanges_160851.cs @@ -2,7 +2,7 @@ #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_160851 : Migration diff --git a/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.Designer.cs b/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.Designer.cs index c8d7ee1..819abdb 100644 --- a/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.Designer.cs +++ b/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250317020124_SchemaChanges_110113")] diff --git a/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.cs b/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.cs index 98504b1..d65d401 100644 --- a/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.cs +++ b/BrokerApiCore/Migrations/20250317020124_SchemaChanges_110113.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_110113 : Migration diff --git a/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.Designer.cs b/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.Designer.cs index b5b3414..8973806 100644 --- a/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.Designer.cs +++ b/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250317030502_SchemaChanges_120450")] diff --git a/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.cs b/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.cs index 192d720..dd62554 100644 --- a/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.cs +++ b/BrokerApiCore/Migrations/20250317030502_SchemaChanges_120450.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_120450 : Migration diff --git a/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.Designer.cs b/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.Designer.cs index dd32861..2379c83 100644 --- a/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.Designer.cs +++ b/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250317032756_SchemaChanges_122745")] diff --git a/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.cs b/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.cs index bbd635f..5b85195 100644 --- a/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.cs +++ b/BrokerApiCore/Migrations/20250317032756_SchemaChanges_122745.cs @@ -2,7 +2,7 @@ #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_122745 : Migration diff --git a/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.Designer.cs b/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.Designer.cs index 40956e6..15c012f 100644 --- a/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.Designer.cs +++ b/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250321034709_SchemaChanges_124658")] diff --git a/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.cs b/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.cs index d597219..6dda9ca 100644 --- a/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.cs +++ b/BrokerApiCore/Migrations/20250321034709_SchemaChanges_124658.cs @@ -2,7 +2,7 @@ #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_124658 : Migration diff --git a/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.Designer.cs b/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.Designer.cs index 4046f9f..1868edd 100644 --- a/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.Designer.cs +++ b/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.Designer.cs @@ -1,6 +1,8 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] [Migration("20250324074920_SchemaChanges_164908")] diff --git a/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.cs b/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.cs index 9929d0d..992b91f 100644 --- a/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.cs +++ b/BrokerApiCore/Migrations/20250324074920_SchemaChanges_164908.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { /// public partial class SchemaChanges_164908 : Migration diff --git a/BrokerApiCore/Migrations/MetaverseBrokerDbContextModelSnapshot.cs b/BrokerApiCore/Migrations/MetaverseBrokerDbContextModelSnapshot.cs index 14d5d98..3b06bab 100644 --- a/BrokerApiCore/Migrations/MetaverseBrokerDbContextModelSnapshot.cs +++ b/BrokerApiCore/Migrations/MetaverseBrokerDbContextModelSnapshot.cs @@ -1,6 +1,9 @@ // using System; -using BrokerCore.Repository.Context; + +using BrokerApiCore; + +using BrokerApiServer; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace BrokerApiCore.Migrations +namespace BrokerApiServer.Migrations { [DbContext(typeof(MetaverseBrokerDbContext))] partial class MetaverseBrokerDbContextModelSnapshot : ModelSnapshot diff --git a/BrokerApiCore/Repository/PlanetInfoRepo.cs b/BrokerApiCore/Repository/PlanetInfoRepo.cs index 410d83e..1f051b7 100644 --- a/BrokerApiCore/Repository/PlanetInfoRepo.cs +++ b/BrokerApiCore/Repository/PlanetInfoRepo.cs @@ -1,14 +1,8 @@ -namespace BrokerCore.Repository; - -using Context; - -using DbEntity; - -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using ServerBase; -using ServerCommon; +namespace BrokerApiCore; public class PlanetInfoRepo { private readonly MetaverseBrokerDbContext m_db; diff --git a/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountTotalLimitRepo.cs b/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountTotalLimitRepo.cs index e3ba286..3859a63 100644 --- a/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountTotalLimitRepo.cs +++ b/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountTotalLimitRepo.cs @@ -1,13 +1,8 @@ using Microsoft.EntityFrameworkCore; using ServerBase; -using ServerCommon; -namespace BrokerCore.Repository; - -using DbEntity; - -using Context; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountTotalLimitRepo { diff --git a/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountUserLimitRepo.cs b/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountUserLimitRepo.cs index f52ed6a..56c0e72 100644 --- a/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountUserLimitRepo.cs +++ b/BrokerApiCore/Repository/PlanetItemExchangeOrderAmountUserLimitRepo.cs @@ -1,13 +1,8 @@ using Microsoft.EntityFrameworkCore; using ServerBase; -using ServerCommon; -namespace BrokerCore.Repository; - -using DbEntity; - -using Context; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountUserLimitRepo { diff --git a/BrokerApiCore/Repository/PlanetItemExchangeOrderRepo.cs b/BrokerApiCore/Repository/PlanetItemExchangeOrderRepo.cs index 7629d26..5daa03e 100644 --- a/BrokerApiCore/Repository/PlanetItemExchangeOrderRepo.cs +++ b/BrokerApiCore/Repository/PlanetItemExchangeOrderRepo.cs @@ -2,16 +2,9 @@ using Microsoft.EntityFrameworkCore; using ServerBase; -using ServerCommon; -namespace BrokerCore.Repository; - -using Common; - -using DbEntity; - -using Context; +namespace BrokerApiCore; public class PlanetItemExchangeOrderRepo { diff --git a/BrokerApiCore/Repository/SapphireExchangeOrderRepo.cs b/BrokerApiCore/Repository/SapphireExchangeOrderRepo.cs deleted file mode 100644 index aaa4b09..0000000 --- a/BrokerApiCore/Repository/SapphireExchangeOrderRepo.cs +++ /dev/null @@ -1,240 +0,0 @@ -// using Microsoft.EntityFrameworkCore; -// -// using ServerCommon; -// -// namespace BrokerCore.Repository; -// -// using Common; -// -// using DbEntity; -// using Context; -// -// public class SapphireExchangeOrderRepo -// { -// private readonly MetaverseBrokerDbContext m_db_context; -// -// public SapphireExchangeOrderRepo(MetaverseBrokerDbContext dbContext) -// { -// m_db_context = dbContext; -// } -// -// //================================================================================ -// // 사파이어 교환 주문을 추가한다. -// // 트랜잭션을 사용한다. -// //================================================================================ -// public async Task add(SapphireExchangeOrder order, CancellationToken cancellationToken = default) -// { -// var result = new Result(); -// try -// { -// m_db_context.SapphireExchangeOrders.Add(order); -// await m_db_context.SaveChangesAsync(cancellationToken); -// return result; -// } -// catch (Exception e) -// { -// result.setFail(ServerErrorCode.InternalServerError, e.Message); -// } -// -// return result; -// } -// -// public async Task delete(SapphireExchangeOrder order, CancellationToken cancellationToken = default) -// { -// var result = new Result(); -// try -// { -// m_db_context.SapphireExchangeOrders.Remove(order); -// await m_db_context.SaveChangesAsync(cancellationToken); -// } -// catch (Exception e) -// { -// result.setFail(ServerErrorCode.InternalServerError, e.Message); -// } -// -// return result; -// } -// -// //================================================================================ -// // 사파이어 교환 주문을 비동기로 업데이트한다. -// // 트랜잭션을 사용한다. -// // OrderId를 키로 사용한다. -// // OrderType과 OrderCompletedAt만 업데이트한다. -// //================================================================================ -// public async Task<(Result, SapphireExchangeOrder?)> findAndComplete(string orderId, -// CancellationToken cancellationToken = default) -// { -// var result = new Result(); -// // var transaction = await m_db_context.Database.BeginTransactionAsync(cancellationToken).ConfigureAwait(false); -// // await using var transaction1 = transaction.ConfigureAwait(false); -// try -// { -// var order = await m_db_context.SapphireExchangeOrders.Where(x => x.OrderId == orderId).FirstOrDefaultAsync(cancellationToken); -// Guard.Against.isNull(order, ServerErrorCode.ExchangeOrderIdNotFound, "Invalid orderId"); -// if (order.OrderStatus != ExchangeOrderStatus.Pending) -// { -// result.setFail(ServerErrorCode.Success, $"Fail To Complete OrderStatus Not Pending: orderId {orderId}, order_status {order.OrderStatus}"); -// return (result, order); -// } -// -// order.OrderStatus = ExchangeOrderStatus.Completed; -// order.CompletedAt = DateTime.Now; -// m_db_context.SapphireExchangeOrders.Attach(order); -// m_db_context.Entry(order).Property(x => x.OrderStatus).IsModified = true; -// m_db_context.Entry(order).Property(x => x.CompletedAt).IsModified = true; -// await m_db_context.SaveChangesAsync(cancellationToken).ConfigureAwait(false); -// // await transaction.CommitAsync(cancellationToken).ConfigureAwait(false); -// return (new Result(), order); -// } -// catch (Exception e) -// { -// // await transaction.RollbackAsync(cancellationToken).ConfigureAwait(false); -// return (new Result { ResultString = e.Message }, null); -// } -// } -// -// // public async Task updateForPending(SapphireExchangeOrder order, -// // CancellationToken cancellationToken = default) -// // { -// // // await using var transaction = await m_db_context.Database.BeginTransactionAsync(cancellationToken); -// // try -// // { -// // m_db_context.SapphireExchangeOrders.Attach(order); -// // m_db_context.Entry(order).Property(x => x.OrderStatus).IsModified = true; -// // await m_db_context.SaveChangesAsync(cancellationToken); -// // // await transaction.CommitAsync(cancellationToken); -// // return new Result(); -// // } -// // catch (Exception e) -// // { -// // // await transaction.RollbackAsync(cancellationToken); -// // return new Result { ResultString = e.Message }; -// // } -// // } -// //========================================================================== -// //SELECT * -// // FROM `sapphire_exchange_order` -// // WHERE `PlanetId` = @planetId -// // AND `UserGuid` = @userGuid -// // AND (@orderStatus IS NULL OR `OrderStatus` = @orderStatus) -// // ORDER BY `CreatedAt` ASC -// // LIMIT @pageSize OFFSET @offset; -// //========================================================================== -// public async Task<(Result, IEnumerable?)> findList( -// string planetId, -// string userGuid, -// ExchangeOrderStatus? orderStatus = null, -// int pageIndex = 1, -// int pageSize = 20, -// string sortOrder = "asc", -// CancellationToken cancellationToken = default) -// { -// var result = new Result(); -// try -// { -// var query = m_db_context.SapphireExchangeOrders.AsQueryable(); -// -// if (!string.IsNullOrEmpty(planetId)) -// { -// query = query.Where(x => x.PlanetId == planetId); -// } -// -// if (!string.IsNullOrEmpty(userGuid)) -// { -// query = query.Where(x => x.UserGuid == userGuid); -// } -// -// //orderStatus.HasValue는 orderStatus가 null일 때도 에러가 발생하지 않음. orderStatus가 null이면 HasValue는 false를 반환. -// if (orderStatus.HasValue) -// { -// query = query.Where(x => x.OrderStatus == orderStatus); -// } -// -// query = sortOrder.ToLower() == "desc" -// ? query.OrderByDescending(o => o.CreatedAt) -// : query.OrderBy(o => o.CreatedAt); -// -// var orders = await query -// .Skip((pageIndex - 1) * pageSize) -// .Take(pageSize) -// .ToArrayAsync(cancellationToken); -// -// return (result, orders); -// } -// catch (Exception e) -// { -// result.setFail(ServerErrorCode.DynamoDbException, e.Message); -// return (result, null); -// } -// } -// -// //================================================================================ -// // 사파이어 교환 주문 목록을 비동기로 조회한다. -// // OrderType과 PlanetId로 검색한다. -// // Result, IEnumerable<>를 반환한다. -// // 조건에 맞는 값이 없다면 빈 배열을 반환한다. -// //================================================================================ -// public async Task<(Result, IEnumerable?)> findList_old(string planetId, string userGuid, -// ExchangeOrderStatus? orderStatus = null, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default) -// { -// var result = new Result(); -// try -// { -// if (orderStatus == null) -// { -// var orders = await m_db_context.SapphireExchangeOrders -// .OrderBy(o => o.CreatedAt) -// .Skip((pageIndex - 1) * pageSize) -// .Take(pageSize) -// .Where(x => x.PlanetId == planetId && x.UserGuid == userGuid).ToArrayAsync(cancellationToken); -// return (result, orders); -// } -// else -// { -// var orders = await m_db_context.SapphireExchangeOrders -// .Where(x => x.PlanetId == planetId && x.UserGuid == userGuid && x.OrderStatus == orderStatus) -// .Skip((pageIndex - 1) * pageSize) -// .Take(pageSize) -// .ToArrayAsync(cancellationToken); -// return (result, orders); -// } -// } -// catch (Exception e) -// { -// result.setFail(ServerErrorCode.RdbError, e.Message); -// return (result, null); -// } -// } -// -// public async Task> getSapphireExchangeOrders(int pageIndex, int pageSize) -// { -// var query = m_db_context.Set().AsNoTracking(); -// -// var count = await query.CountAsync(); -// var items = await query -// .OrderBy(o => o.CreatedAt) -// .Skip((pageIndex - 1) * pageSize) -// .Take(pageSize) -// .ToListAsync(); -// -// return new PaginatedList(items, count, pageIndex, pageSize); -// } -// -// public class PaginatedList : List -// { -// public int PageIndex { get; private set; } -// public int TotalPages { get; private set; } -// public int TotalCount { get; private set; } -// -// public PaginatedList(List items, int count, int pageIndex, int pageSize) -// { -// PageIndex = pageIndex; -// TotalCount = count; -// -// this.AddRange(items); -// } -// -// public bool HasPreviousPage => PageIndex > 1; -// public bool HasNextPage => PageIndex < TotalPages; -// } -// } diff --git a/BrokerApiCore/Repository/SqlConfig/PlanetExchangeOrderConfig.cs b/BrokerApiCore/Repository/SqlConfig/PlanetExchangeOrderConfig.cs index b462933..fbbeb2d 100644 --- a/BrokerApiCore/Repository/SqlConfig/PlanetExchangeOrderConfig.cs +++ b/BrokerApiCore/Repository/SqlConfig/PlanetExchangeOrderConfig.cs @@ -1,8 +1,8 @@ -namespace BrokerCore.DbEntity; - + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; +namespace BrokerApiCore; public class PlanetExchangeOrderConfig : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) diff --git a/BrokerApiCore/Repository/SqlConfig/PlanetInfoConfig.cs b/BrokerApiCore/Repository/SqlConfig/PlanetInfoConfig.cs index ae726ff..8c6c5be 100644 --- a/BrokerApiCore/Repository/SqlConfig/PlanetInfoConfig.cs +++ b/BrokerApiCore/Repository/SqlConfig/PlanetInfoConfig.cs @@ -1,10 +1,8 @@ -namespace BrokerCore.Repository.SqlConfig; - -using DbEntity; - + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; +namespace BrokerApiCore; public class PlanetInfoConfig : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) diff --git a/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountTotalLimitConfig.cs b/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountTotalLimitConfig.cs index af92e77..fe4909c 100644 --- a/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountTotalLimitConfig.cs +++ b/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountTotalLimitConfig.cs @@ -1,8 +1,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace BrokerApiCore.Repository.SqlConfig; -using BrokerCore.DbEntity; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountTotalLimitConfig : IEntityTypeConfiguration { diff --git a/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountUserLimitConfig.cs b/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountUserLimitConfig.cs index 189df23..6b63844 100644 --- a/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountUserLimitConfig.cs +++ b/BrokerApiCore/Repository/SqlConfig/PlanetItemExchangeOrderAmountUserLimitConfig.cs @@ -2,9 +2,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace BrokerApiCore.Repository.SqlConfig; - -using BrokerCore.DbEntity; +namespace BrokerApiCore; public class PlanetItemExchangeOrderAmountUserLimitConfig : IEntityTypeConfiguration { diff --git a/BrokerApiCore/Repository/SqlConfig/SapphireExchangeOrderConfig.cs b/BrokerApiCore/Repository/SqlConfig/SapphireExchangeOrderConfig.cs index f718ac8..e5f20a3 100644 --- a/BrokerApiCore/Repository/SqlConfig/SapphireExchangeOrderConfig.cs +++ b/BrokerApiCore/Repository/SqlConfig/SapphireExchangeOrderConfig.cs @@ -1,10 +1,8 @@ -namespace BrokerCore.Repository.SqlConfig; - -using DbEntity; - + using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; +namespace BrokerApiCore; public class SapphireExchangeOrderConfig : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) diff --git a/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs b/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs index ec58edc..f3d360c 100644 --- a/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs +++ b/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs @@ -1,20 +1,9 @@ -using ServerCore; -using ServerBase; -using ServerCommon; - - using Microsoft.EntityFrameworkCore; - -namespace BrokerCore.Repository.Context; - -using BrokerApiCore.Repository.SqlConfig; - -using DbEntity; - using Microsoft.EntityFrameworkCore.Design; +using ServerBase; +using ServerCore; -using SqlConfig; - +namespace BrokerApiCore; public class MetaverseBrokerDbContext: DbContext { public DbSet SapphireExchangeOrders { get; set; } diff --git a/BrokerApiCore/Repository/SqlContext/SsoAccountDbContext.cs b/BrokerApiCore/Repository/SqlContext/SsoAccountDbContext.cs index e533f2f..20ad976 100644 --- a/BrokerApiCore/Repository/SqlContext/SsoAccountDbContext.cs +++ b/BrokerApiCore/Repository/SqlContext/SsoAccountDbContext.cs @@ -1,7 +1,5 @@ using Microsoft.EntityFrameworkCore; -namespace BrokerCore.Repository.Context; - -using DbEntity; +namespace BrokerApiCore; public class SsoAccountDbContext: DbContext { diff --git a/BrokerApiCore/Repository/SsoAccountRepo.cs b/BrokerApiCore/Repository/SsoAccountRepo.cs index 4b03ee1..f101df5 100644 --- a/BrokerApiCore/Repository/SsoAccountRepo.cs +++ b/BrokerApiCore/Repository/SsoAccountRepo.cs @@ -1,8 +1,6 @@ using Microsoft.EntityFrameworkCore; -namespace BrokerCore.Repository; -using Context; -using DbEntity; +namespace BrokerApiCore; public class SsoAccountRepo { private readonly SsoAccountDbContext m_db_context; diff --git a/BrokerApiCore/Repository/UserBaseDocRepo.cs b/BrokerApiCore/Repository/UserBaseDocRepo.cs index fdf7ba8..52ca323 100644 --- a/BrokerApiCore/Repository/UserBaseDocRepo.cs +++ b/BrokerApiCore/Repository/UserBaseDocRepo.cs @@ -1,9 +1,7 @@ using ServerCommon; +using ServerBase; using ServerCore; -namespace BrokerCore.Repository; - -using ServerCore; using ServerBase; - +namespace BrokerApiCore; public class UserBaseDocRepo { private readonly DynamoDbClient m_dynamo_db_client; diff --git a/BrokerApiCore/Services/EchoSystemService.cs b/BrokerApiCore/Services/EchoSystemService.cs index 322f5e9..d16c97b 100644 --- a/BrokerApiCore/Services/EchoSystemService.cs +++ b/BrokerApiCore/Services/EchoSystemService.cs @@ -1,14 +1,9 @@ - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; +using ServerCore; - - -namespace BrokerCore.Services; - -using Common; +namespace BrokerApiCore; public class EchoSystemService { diff --git a/BrokerApiCore/Services/JwtGenerator.cs b/BrokerApiCore/Services/JwtGenerator.cs index 466e4e7..56ce60a 100644 --- a/BrokerApiCore/Services/JwtGenerator.cs +++ b/BrokerApiCore/Services/JwtGenerator.cs @@ -4,10 +4,9 @@ using System.Security.Claims; using System.Text; using Microsoft.IdentityModel.Tokens; -using ServerCore; using ServerBase; +using ServerCore; -namespace BrokerCore.Services; -using Common; +namespace BrokerApiCore; public class JwtGenerator { diff --git a/BrokerApiCore/Services/JwtService.cs b/BrokerApiCore/Services/JwtService.cs deleted file mode 100644 index 2a212bd..0000000 --- a/BrokerApiCore/Services/JwtService.cs +++ /dev/null @@ -1,185 +0,0 @@ -// namespace BrokerCore.Services; -// -// using System.IdentityModel.Tokens.Jwt; -// using System.Security.Claims; -// using System.Security.Cryptography; -// using System.Text; -// -// using Microsoft.IdentityModel.Tokens; -// -// public interface IJwtUser -// { -// public string Id { get; } -// } -// -// public interface IJwtAuth -// { -// -// } -// -// public class RefreshToken -// { -// public int Id { get; set; } -// public string Token { get; set; } = string.Empty; -// public DateTime Created { get; set; } = DateTime.UtcNow; -// public DateTime Expires { get; set; } -// public bool IsExpired => DateTime.UtcNow >= Expires; -// public DateTime? Revoked { get; set; } -// public bool IsActive => Revoked == null && !IsExpired; -// public string? ReplacedByToken { get; set; } -// public string? ReasonRevoked { get; set; } -// public int UserId { get; set; } -// public IJwtUser User { get; set; } = null!; -// } -// -// public interface IJwtService where TUser : class -// { -// string generateJwtToken(TUser user, string secretKey, int expirationMinutes = 15); -// string generateRefreshToken(); -// int? validateJwtToken(string token); -// Task refreshTokenAsync(string token, string ipAddress); -// Task revokeTokenAsync(string token, string ipAddress, string? reason = null); -// } -// public class JwtService: IJwtService -// { -// private string m_secret_key = string.Empty; -// private int m_expiration_minutes = 15; -// private string m_issuer = string.Empty; -// private string m_audience = string.Empty; -// -// public string generateJwtToken(IJwtUser user) -// { -// if (user == null) -// throw new ArgumentNullException(nameof(user)); -// -// if (string.IsNullOrEmpty(m_secret_key)) -// throw new ArgumentNullException(nameof(m_secret_key)); -// -// if (m_expiration_minutes <= 0) -// throw new ArgumentOutOfRangeException(nameof(m_expiration_minutes), "Expiration minutes must be greater than zero."); -// -// var token_handler = new JwtSecurityTokenHandler(); -// var key = Encoding.ASCII.GetBytes(m_secret_key); -// -// var claims = new List -// { -// new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), -// // new Claim(ClaimTypes.Name, user.Username), -// // new Claim(ClaimTypes.Email, user.Email) -// // 필요한 경우 추가 클레임 정의 (역할 등) -// }; -// -// var token_descriptor = new SecurityTokenDescriptor -// { -// Subject = new ClaimsIdentity(claims), -// Expires = DateTime.UtcNow.AddMinutes(15), // 액세스 토큰 만료 시간 (짧게 설정) -// Issuer = string.Empty, -// Audience = string.Empty, -// SigningCredentials = new SigningCredentials( -// new SymmetricSecurityKey(key), -// SecurityAlgorithms.HmacSha256Signature) -// }; -// -// var token = token_handler.CreateToken(token_descriptor); -// return token_handler.WriteToken(token); -// } -// -// public string generateRefreshToken() -// { -// var random_number = new byte[16]; -// using var rng = RandomNumberGenerator.Create(); -// rng.GetBytes(random_number); -// return Convert.ToBase64String(random_number); -// } -// -// public int? validateJwtToken(string token) -// { -// if (string.IsNullOrEmpty(token)) -// return null; -// -// var token_handler = new JwtSecurityTokenHandler(); -// var key = Encoding.ASCII.GetBytes(m_secret_key); -// -// try -// { -// token_handler.ValidateToken(token, new TokenValidationParameters -// { -// ValidateIssuerSigningKey = true, -// IssuerSigningKey = new SymmetricSecurityKey(key), -// ValidateIssuer = true, -// ValidIssuer = this.m_issuer, -// ValidateAudience = true, -// ValidAudience = this.m_audience, -// // 시간 검증 설정 -// ValidateLifetime = true, -// ClockSkew = TimeSpan.Zero -// }, out SecurityToken validated_token); -// -// var jwt_token = (JwtSecurityToken)validated_token; -// var user_id = int.Parse(jwt_token.Claims.First(x => x.Type == ClaimTypes.NameIdentifier).Value); -// -// return user_id; -// } -// catch -// { -// // 토큰 검증 실패 -// return null; -// } -// } -// -// public Task refreshTokenAsync(string token) -// { -// // 리프레시 토큰으로 유저 정보를 가져온다. -// var user; -// -// // 사용자가 없거나 토큰이 존재하지 않음 -// if (user == null) -// throw new SecurityTokenException("Invalid token"); -// -// var refreshToken = user.RefreshTokens.Single(x => x.Token == token); -// -// // 토큰이 더 이상 활성 상태가 아니면 오류 -// if (!refreshToken.IsActive) -// throw new SecurityTokenException("Invalid token"); -// -// // 새 리프레시 토큰 생성 -// var newRefreshToken = generateRefreshTokenEntity(); -// -// // 이전 토큰 폐기 -// refreshToken.Revoked = DateTime.UtcNow; -// refreshToken.ReplacedByToken = newRefreshToken.Token; -// refreshToken.ReasonRevoked = "Replaced by new token"; -// -// // 새 리프레시 토큰 추가 -// user.RefreshTokens.Add(newRefreshToken); -// _context.Update(user); -// await _context.SaveChangesAsync(); -// -// // 새 JWT 생성 -// var jwtToken = generateJwtToken(user); -// -// return new -// { -// Id = user.Id, -// Username = user.Username, -// Email = user.Email, -// AccessToken = jwtToken, -// RefreshToken = newRefreshToken.Token -// }; -// } -// -// public Task revokeTokenAsync(string token, string ipAddress, string? reason = null) -// { -// throw new NotImplementedException(); -// } -// -// private RefreshToken generateRefreshTokenEntity() -// { -// return new RefreshToken -// { -// Token = generateRefreshToken(), -// Expires = DateTime.UtcNow.AddDays(32), // 리프레시 토큰 만료 시간 (길게 설정) -// Created = DateTime.UtcNow -// }; -// } -// } diff --git a/BrokerApiCore/Services/PlanetService.cs b/BrokerApiCore/Services/PlanetService.cs index 8b4cbcb..43be094 100644 --- a/BrokerApiCore/Services/PlanetService.cs +++ b/BrokerApiCore/Services/PlanetService.cs @@ -1,17 +1,11 @@ -namespace BrokerCore.Services; - -using System.Security.Claims; - -using BrokerBusinessLog; - +using System.Security.Claims; using Microsoft.IdentityModel.JsonWebTokens; -using Repository; - -using Common; - using ServerBase; using ServerCommon; +using ServerCommon.BusinessLogDomain; + +namespace BrokerApiCore; public class PlanetService { diff --git a/BrokerApiCore/Services/PlanetitemExchange/DailyAmountLimitChecker.cs b/BrokerApiCore/Services/PlanetitemExchange/DailyAmountLimitChecker.cs index c78f984..dfa4acb 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/DailyAmountLimitChecker.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/DailyAmountLimitChecker.cs @@ -1,16 +1,6 @@ -namespace BrokerCore.Services; - -using Common; - -using DbEntity; - +using MetaAssets; using ServerBase; -using ServerCommon; -using MetaAssets; - -using Repository; - - +namespace BrokerApiCore; public class DailyAmountLimitChecker { private readonly PlanetItemExchangeOrderAmountTotalLimitRepo m_planet_item_exchange_order_amount_total_limit; diff --git a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCompletionStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCompletionStrategy.cs index c95f9cd..4b064ee 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCompletionStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCompletionStrategy.cs @@ -1,11 +1,5 @@ -namespace BrokerCore.Services; - - -using DbEntity; -using Entity; - - +namespace BrokerApiCore; public interface IOrderCompletionStrategy { diff --git a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCreationStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCreationStrategy.cs index fa2635b..3a28629 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCreationStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderCreationStrategy.cs @@ -1,8 +1,6 @@ -using BrokerCore.DbEntity; - using MetaAssets; -namespace BrokerCore.Services; +namespace BrokerApiCore; public interface IOrderCreationStrategy { diff --git a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderStrategyProvider.cs b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderStrategyProvider.cs index 2202f20..8bd32f2 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderStrategyProvider.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/IOrderStrategyProvider.cs @@ -1,6 +1,6 @@ using ServerCommon; -namespace BrokerCore.Services; +namespace BrokerApiCore; public interface IOrderStrategyProvider { diff --git a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/OrderStrategyProvider.cs b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/OrderStrategyProvider.cs index 1f0d3b9..15abd58 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Interfaces/OrderStrategyProvider.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Interfaces/OrderStrategyProvider.cs @@ -1,10 +1,8 @@ +using System.Collections.Concurrent; using Microsoft.Extensions.DependencyInjection; - using ServerCommon; -using System.Collections.Concurrent; - -namespace BrokerCore.Services; +namespace BrokerApiCore; public class OrderStrategyProvider : IOrderStrategyProvider { diff --git a/BrokerApiCore/Services/PlanetitemExchange/PlanetItemExchangeService.cs b/BrokerApiCore/Services/PlanetitemExchange/PlanetItemExchangeService.cs index 7011bdc..e8db19b 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/PlanetItemExchangeService.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/PlanetItemExchangeService.cs @@ -1,23 +1,9 @@ -namespace BrokerCore.Services; - +using MetaAssets; +using ServerBase; using ServerCommon; +using ServerCore; -using Common; - -using DbEntity; - -using Repository; - -using Entity; - -using System.Collections.Generic; - -using BrokerBusinessLog; - -using MetaAssets; - -using ServerCore; using ServerBase; - +namespace BrokerApiCore; public class PlanetItemExchangeService { readonly PlanetUserEntity m_planet_user; diff --git a/BrokerApiCore/Services/PlanetitemExchange/ServiceCollectionExtensions.cs b/BrokerApiCore/Services/PlanetitemExchange/ServiceCollectionExtensions.cs index cfd8a72..f1ea234 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/ServiceCollectionExtensions.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/ServiceCollectionExtensions.cs @@ -1,9 +1,6 @@ using Microsoft.Extensions.DependencyInjection; -namespace BrokerCore.Services; - -using Entity; - +namespace BrokerApiCore; public static class ServiceCollectionExtensions { public static IServiceCollection addExchangeServices(this IServiceCollection services) diff --git a/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyExchangeCreationStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyExchangeCreationStrategy.cs index c91ce0f..99daecd 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyExchangeCreationStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyExchangeCreationStrategy.cs @@ -1,22 +1,11 @@ -using BrokerCore.DbEntity; -using BrokerCore.Entity; -using BrokerCore.Repository; - -using Microsoft.Extensions.Logging; -// using Polly; -// using Polly.Retry; using MetaAssets; - -using ServerCommon; - -namespace BrokerCore.Services; -using Common; - using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; -using Repository.Context; -using ServerCore; using ServerBase; +using Microsoft.Extensions.Logging; +using ServerBase; +using ServerCommon; +namespace BrokerApiCore; //========================================================================================= // 플래닛의 아이템을 칼리버스 재화로 교환하는 주문 생성 // Broker의 rdb(순수 교환 정보)와 DynamoDB(유저의 게임정보)를 사용하여 교환 주문을 생성한다. diff --git a/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyOrderCompletionStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyOrderCompletionStrategy.cs index cd76ff1..4edb1d6 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyOrderCompletionStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Strategies/CurrencyOrderCompletionStrategy.cs @@ -1,8 +1,4 @@ -namespace BrokerCore.Services; -using Common; -using DbEntity; -using Entity; -using Repository; +namespace BrokerApiCore; // 화폐(Currency) 주문 완료 전략 public class CurrencyOrderCompletionStrategy : IOrderCompletionStrategy diff --git a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductExchangeCreationStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductExchangeCreationStrategy.cs index b841099..2e93335 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductExchangeCreationStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductExchangeCreationStrategy.cs @@ -1,18 +1,8 @@ -namespace BrokerCore.Services; - -using Common; - -using DbEntity; - -using Repository; - using MetaAssets; - using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; -using Repository.Context; - +namespace BrokerApiCore; public class ProductExchangeCreationStrategy : IOrderCreationStrategy { private readonly MetaverseBrokerDbContext m_broker_db_context; diff --git a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs index 23fe8b7..90cb8c0 100644 --- a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs +++ b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs @@ -1,26 +1,9 @@ -using ServerCore; -using ServerBase; -using ServerCommon; - - -namespace BrokerCore.Services; - -using BrokerBusinessLog; - -using Common; - -using DbEntity; - -using Entity; -using Entity.Actions; - using MetaAssets; - using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; +using ServerBase; -using Repository; -using Repository.Context; +namespace BrokerApiCore; // 아이템 주문 완료 전략 public class ProductOrderCompletionStrategy : IOrderCompletionStrategy diff --git a/BrokerApiCore/Services/UserAuthService.cs b/BrokerApiCore/Services/UserAuthService.cs index 9fb2e81..1cd7b28 100644 --- a/BrokerApiCore/Services/UserAuthService.cs +++ b/BrokerApiCore/Services/UserAuthService.cs @@ -1,22 +1,13 @@ using System.IdentityModel.Tokens.Jwt; using System.Text; - using Microsoft.IdentityModel.Tokens; -using ServerCore; using ServerBase; - +using ServerCore; +using ServerBase; using ServerCommon; +using ServerCommon.BusinessLogDomain; -namespace BrokerCore.Services; - -using BrokerBusinessLog; - -using Repository; - -using Common; - -using Entity; - +namespace BrokerApiCore; public class UserAuthService { private readonly PlanetUserEntity m_planet_user_entity; diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json index dbe23bd..ec6a865 100644 --- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json +++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json @@ -90,16 +90,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -129,7 +139,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -138,8 +148,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -163,7 +173,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -172,7 +182,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -262,16 +272,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -301,7 +321,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -310,8 +330,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -335,7 +355,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -344,7 +364,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -427,16 +447,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -466,7 +496,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -475,8 +505,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -500,7 +530,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -509,7 +539,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -598,16 +628,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -637,7 +677,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -646,8 +686,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -671,7 +711,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -680,7 +720,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -756,22 +796,27 @@ }, "AWSSDK.Core": { "target": "Package", - "version": "[3.7.402.39, )", + "version": "[3.7.402.46, )", "versionCentrallyManaged": true }, "AWSSDK.DynamoDBv2": { "target": "Package", - "version": "[3.7.406.21, )", + "version": "[3.7.407, )", "versionCentrallyManaged": true }, "AWSSDK.OpenSearchService": { "target": "Package", - "version": "[3.7.404.75, )", + "version": "[3.7.404.81, )", "versionCentrallyManaged": true }, "AWSSDK.S3": { "target": "Package", - "version": "[3.7.416.9, )", + "version": "[3.7.416.15, )", + "versionCentrallyManaged": true + }, + "AWSSDK.SecurityToken": { + "target": "Package", + "version": "[3.7.401.89, )", "versionCentrallyManaged": true }, "AsyncStateMachine": { @@ -779,11 +824,66 @@ "version": "[1.3.2, )", "versionCentrallyManaged": true }, + "AutoMapper": { + "target": "Package", + "version": "[14.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.AspNetCore.OData.EFCore": { + "target": "Package", + "version": "[7.0.1, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Collection": { + "target": "Package", + "version": "[11.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Collection.EntityFrameworkCore": { + "target": "Package", + "version": "[11.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Contrib.Autofac.DependencyInjection": { + "target": "Package", + "version": "[9.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Data": { + "target": "Package", + "version": "[9.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.EF6": { + "target": "Package", + "version": "[3.0.1, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Extensions.EnumMapping": { + "target": "Package", + "version": "[4.1.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Extensions.ExpressionMapping": { + "target": "Package", + "version": "[8.0.0, )", + "versionCentrallyManaged": true + }, "Axion.ConcurrentHashSet": { "target": "Package", "version": "[1.0.0, )", "versionCentrallyManaged": true }, + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.0.3, )", + "versionCentrallyManaged": true + }, + "BouncyCastle.Cryptography": { + "target": "Package", + "version": "[2.5.1, )", + "versionCentrallyManaged": true + }, "CommandLineParser": { "target": "Package", "version": "[2.9.1, )", @@ -814,6 +914,16 @@ "version": "[0.2.621003, )", "versionCentrallyManaged": true }, + "Microsoft.Extensions.Configuration": { + "target": "Package", + "version": "[9.0.4, )", + "versionCentrallyManaged": true + }, + "Microsoft.Extensions.Options": { + "target": "Package", + "version": "[9.0.4, )", + "versionCentrallyManaged": true + }, "MongoDB.Analyzer": { "target": "Package", "version": "[1.5.0, )", @@ -866,7 +976,7 @@ }, "SSH.NET": { "target": "Package", - "version": "[2024.2.0, )", + "version": "[2025.0.0, )", "versionCentrallyManaged": true }, "StackExchange.Redis": { @@ -891,7 +1001,7 @@ }, "System.IdentityModel.Tokens.Jwt": { "target": "Package", - "version": "[8.8.0, )", + "version": "[8.9.0, )", "versionCentrallyManaged": true }, "YamlDotNet": { @@ -905,16 +1015,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -944,7 +1064,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -953,8 +1073,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -978,7 +1098,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -987,7 +1107,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1070,16 +1190,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1109,7 +1239,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1118,8 +1248,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1143,7 +1273,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1152,7 +1282,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1249,16 +1379,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1288,7 +1428,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1297,8 +1437,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1322,7 +1462,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1331,7 +1471,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1418,16 +1558,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1457,7 +1607,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1466,8 +1616,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1491,7 +1641,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1500,7 +1650,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1600,16 +1750,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1639,7 +1799,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1648,8 +1808,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1673,7 +1833,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1682,7 +1842,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props index 75a9ff2..5f34edd 100644 --- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props +++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props @@ -14,15 +14,18 @@ - + + C:\Users\user\.nuget\packages\mongodb.analyzer\1.5.0 - C:\Users\user\.nuget\packages\awssdk.core\3.7.402.39 - C:\Users\user\.nuget\packages\awssdk.s3\3.7.416.9 - C:\Users\user\.nuget\packages\awssdk.opensearchservice\3.7.404.75 - C:\Users\user\.nuget\packages\awssdk.dynamodbv2\3.7.406.21 + C:\Users\user\.nuget\packages\entityframework\6.5.1 + C:\Users\user\.nuget\packages\awssdk.core\3.7.402.46 + C:\Users\user\.nuget\packages\awssdk.securitytoken\3.7.401.89 + C:\Users\user\.nuget\packages\awssdk.s3\3.7.416.15 + C:\Users\user\.nuget\packages\awssdk.opensearchservice\3.7.404.81 + C:\Users\user\.nuget\packages\awssdk.dynamodbv2\3.7.407 C:\Users\user\.nuget\packages\awssdk.cloudwatchlogs\3.7.305.15 C:\Users\user\.nuget\packages\awssdk.ec2\3.7.330.4 C:\Users\user\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets index 59e6b29..81dbdb8 100644 --- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets +++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets @@ -3,8 +3,9 @@ - - + + + \ No newline at end of file diff --git a/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache b/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache index 6579e20..34c90eb 100644 Binary files a/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache and b/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache differ diff --git a/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache b/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache index bf7fd0d..e0e4dd4 100644 Binary files a/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache and b/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache differ diff --git a/BrokerApiCore/obj/project.assets.json b/BrokerApiCore/obj/project.assets.json index b394540..4e3dc8f 100644 --- a/BrokerApiCore/obj/project.assets.json +++ b/BrokerApiCore/obj/project.assets.json @@ -15,6 +15,161 @@ "lib/net7.0/AsyncStateMachine.dll": {} } }, + "Autofac/8.2.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "8.0.1" + }, + "compile": { + "lib/net8.0/Autofac.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Autofac.dll": { + "related": ".xml" + } + } + }, + "AutoMapper/14.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/AutoMapper.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.AspNetCore.OData.EFCore/7.0.1": { + "type": "package", + "dependencies": { + "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)", + "LogicBuilder.Expressions.Utils": "7.0.0", + "Microsoft.AspNetCore.OData": "9.1.1", + "Microsoft.EntityFrameworkCore": "8.0.11" + }, + "compile": { + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "AutoMapper.Collection/11.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Collection.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.Collection.dll": {} + } + }, + "AutoMapper.Collection.EntityFrameworkCore/11.0.0": { + "type": "package", + "dependencies": { + "AutoMapper.Collection": "[11.0.0, 12.0.0)", + "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)", + "Microsoft.EntityFrameworkCore": "9.0.2" + }, + "compile": { + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {} + } + }, + "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "14.0.0", + "Autofac": "8.2.0" + }, + "compile": { + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": { + "related": ".pdb" + } + } + }, + "AutoMapper.Data/9.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Data.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Data.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.EF6/3.0.1": { + "type": "package", + "dependencies": { + "AutoMapper": "10.1.1", + "DelegateDecompiler.EntityFramework": "0.34.0", + "EntityFramework": "6.5.1" + }, + "compile": { + "lib/netstandard2.1/AutoMapper.EF6.dll": {} + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.EF6.dll": {} + } + }, + "AutoMapper.Extensions.EnumMapping/4.1.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.Extensions.ExpressionMapping/8.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": { + "related": ".xml" + } + } + }, "AWS.Logger.Core/3.3.3": { "type": "package", "dependencies": { @@ -64,7 +219,7 @@ } } }, - "AWSSDK.Core/3.7.402.39": { + "AWSSDK.Core/3.7.402.46": { "type": "package", "compile": { "lib/net8.0/AWSSDK.Core.dll": { @@ -77,10 +232,10 @@ } } }, - "AWSSDK.DynamoDBv2/3.7.406.21": { + "AWSSDK.DynamoDBv2/3.7.407": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.DynamoDBv2.dll": { @@ -109,10 +264,10 @@ } } }, - "AWSSDK.OpenSearchService/3.7.404.75": { + "AWSSDK.OpenSearchService/3.7.404.81": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.OpenSearchService.dll": { @@ -125,10 +280,10 @@ } } }, - "AWSSDK.S3/3.7.416.9": { + "AWSSDK.S3/3.7.416.15": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.S3.dll": { @@ -141,6 +296,22 @@ } } }, + "AWSSDK.SecurityToken/3.7.401.89": { + "type": "package", + "dependencies": { + "AWSSDK.Core": "[3.7.402.46, 4.0.0)" + }, + "compile": { + "lib/net8.0/AWSSDK.SecurityToken.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/AWSSDK.SecurityToken.dll": { + "related": ".pdb;.xml" + } + } + }, "Axion.ConcurrentHashSet/1.0.0": { "type": "package", "compile": { @@ -154,7 +325,20 @@ } } }, - "BouncyCastle.Cryptography/2.4.0": { + "BCrypt.Net-Next/4.0.3": { + "type": "package", + "compile": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + } + }, + "BouncyCastle.Cryptography/2.5.1": { "type": "package", "compile": { "lib/net6.0/BouncyCastle.Cryptography.dll": { @@ -180,6 +364,31 @@ } } }, + "DelegateDecompiler/0.34.0": { + "type": "package", + "dependencies": { + "Mono.Reflection": "2.0.0" + }, + "compile": { + "lib/netstandard2.1/DelegateDecompiler.dll": {} + }, + "runtime": { + "lib/netstandard2.1/DelegateDecompiler.dll": {} + } + }, + "DelegateDecompiler.EntityFramework/0.34.0": { + "type": "package", + "dependencies": { + "DelegateDecompiler": "0.34.0", + "EntityFramework": "6.3.0" + }, + "compile": { + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {} + }, + "runtime": { + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {} + } + }, "DnsClient/1.6.1": { "type": "package", "dependencies": { @@ -218,6 +427,36 @@ "lib/netcoreapp2.0/DumpExtensions.dll": {} } }, + "EntityFramework/6.5.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.CodeDom": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.6" + }, + "compile": { + "lib/netstandard2.1/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/netstandard2.1/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "runtime": { + "lib/netstandard2.1/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/netstandard2.1/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "build": { + "buildTransitive/net6.0/EntityFramework.props": {}, + "buildTransitive/net6.0/EntityFramework.targets": {} + } + }, "Google.Protobuf/3.27.1": { "type": "package", "compile": { @@ -414,6 +653,29 @@ } } }, + "LogicBuilder.Expressions.Utils/7.0.0": { + "type": "package", + "dependencies": { + "LogicBuilder.Structures": "7.0.0", + "Microsoft.CSharp": "4.7.0", + "System.Reflection.Emit": "4.7.0" + }, + "compile": { + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {} + }, + "runtime": { + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {} + } + }, + "LogicBuilder.Structures/7.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/LogicBuilder.Structures.dll": {} + }, + "runtime": { + "lib/netstandard2.0/LogicBuilder.Structures.dll": {} + } + }, "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.2": { "type": "package", "dependencies": { @@ -433,10 +695,29 @@ "Microsoft.AspNetCore.App" ] }, - "Microsoft.Bcl.AsyncInterfaces/6.0.0": { + "Microsoft.AspNetCore.OData/9.1.1": { + "type": "package", + "dependencies": { + "Microsoft.OData.Core": "[8.2.2, 9.0.0)", + "Microsoft.OData.Edm": "[8.2.2, 9.0.0)", + "Microsoft.OData.ModelBuilder": "[2.0.0, 3.0.0)", + "Microsoft.Spatial": "[8.2.2, 9.0.0)" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.OData.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.OData.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { "type": "package", "compile": { - "lib/netstandard2.1/_._": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { "related": ".xml" } }, @@ -708,6 +989,15 @@ } } }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, "Microsoft.Diagnostics.NETCore.Client/0.2.621003": { "type": "package", "dependencies": { @@ -724,13 +1014,13 @@ } } }, - "Microsoft.EntityFrameworkCore/8.0.2": { + "Microsoft.EntityFrameworkCore/9.0.2": { "type": "package", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.2", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.2", - "Microsoft.Extensions.Caching.Memory": "8.0.0", - "Microsoft.Extensions.Logging": "8.0.0" + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.2", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.2", + "Microsoft.Extensions.Caching.Memory": "9.0.2", + "Microsoft.Extensions.Logging": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { @@ -746,7 +1036,7 @@ "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} } }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { + "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": { "type": "package", "compile": { "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { @@ -759,14 +1049,8 @@ } } }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/_._": {} - } + "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": { + "type": "package" }, "Microsoft.EntityFrameworkCore.Design/8.0.2": { "type": "package", @@ -820,10 +1104,10 @@ "lib/net8.0/_._": {} } }, - "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "Microsoft.Extensions.Caching.Abstractions/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Primitives": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { @@ -836,17 +1120,17 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Caching.Memory/8.0.0": { + "Microsoft.Extensions.Caching.Memory/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Caching.Abstractions": "9.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.2", + "Microsoft.Extensions.Options": "9.0.2", + "Microsoft.Extensions.Primitives": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { @@ -859,14 +1143,14 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Configuration/8.0.0": { + "Microsoft.Extensions.Configuration/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Configuration.dll": { @@ -879,13 +1163,13 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "Microsoft.Extensions.Configuration.Abstractions/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { @@ -898,7 +1182,7 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, "Microsoft.Extensions.Configuration.Binder/8.0.0": { @@ -989,10 +1273,10 @@ "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} } }, - "Microsoft.Extensions.DependencyInjection/8.0.0": { + "Microsoft.Extensions.DependencyInjection/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { @@ -1005,10 +1289,10 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": { "type": "package", "compile": { "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { @@ -1021,7 +1305,7 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, "Microsoft.Extensions.DependencyModel/8.0.0": { @@ -1166,12 +1450,12 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Logging/8.0.0": { + "Microsoft.Extensions.Logging/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0" + "Microsoft.Extensions.DependencyInjection": "9.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.2", + "Microsoft.Extensions.Options": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Logging.dll": { @@ -1184,13 +1468,14 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "Microsoft.Extensions.Logging.Abstractions/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2", + "System.Diagnostics.DiagnosticSource": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { @@ -1203,14 +1488,27 @@ } }, "build": { - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} } }, - "Microsoft.Extensions.Options/8.0.0": { + "Microsoft.Extensions.ObjectPool/6.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Options/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Options.dll": { @@ -1223,7 +1521,7 @@ } }, "build": { - "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} } }, "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { @@ -1249,7 +1547,7 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Primitives/8.0.0": { + "Microsoft.Extensions.Primitives/9.0.4": { "type": "package", "compile": { "lib/net8.0/Microsoft.Extensions.Primitives.dll": { @@ -1262,10 +1560,10 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.IdentityModel.Abstractions/8.8.0": { + "Microsoft.IdentityModel.Abstractions/8.9.0": { "type": "package", "compile": { "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { @@ -1278,10 +1576,10 @@ } } }, - "Microsoft.IdentityModel.JsonWebTokens/8.8.0": { + "Microsoft.IdentityModel.JsonWebTokens/8.9.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.8.0" + "Microsoft.IdentityModel.Tokens": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { @@ -1294,10 +1592,10 @@ } } }, - "Microsoft.IdentityModel.Logging/8.8.0": { + "Microsoft.IdentityModel.Logging/8.9.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.8.0" + "Microsoft.IdentityModel.Abstractions": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { @@ -1344,12 +1642,12 @@ } } }, - "Microsoft.IdentityModel.Tokens/8.8.0": { + "Microsoft.IdentityModel.Tokens/8.9.0": { "type": "package", "dependencies": { "Microsoft.Bcl.Memory": "9.0.0", "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.8.0" + "Microsoft.IdentityModel.Logging": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { @@ -1362,13 +1660,59 @@ } } }, - "Microsoft.NETCore.Platforms/5.0.0": { + "Microsoft.OData.Core/8.2.2": { "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "Microsoft.Extensions.ObjectPool": "6.0.3", + "Microsoft.OData.Edm": "[8.2.2]", + "Microsoft.Spatial": "[8.2.2]" + }, "compile": { - "lib/netstandard1.0/_._": {} + "lib/net8.0/Microsoft.OData.Core.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard1.0/_._": {} + "lib/net8.0/Microsoft.OData.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OData.Edm/8.2.2": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.6.0", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.OData.Edm.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.OData.Edm.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OData.ModelBuilder/2.0.0": { + "type": "package", + "dependencies": { + "Microsoft.OData.Edm": "[8.0.0, 9.0.0)", + "Microsoft.Spatial": "[8.0.0, 9.0.0)", + "System.ComponentModel.Annotations": "4.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.OData.ModelBuilder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.OData.ModelBuilder.dll": { + "related": ".xml" + } } }, "Microsoft.OpenApi/1.6.22": { @@ -1384,6 +1728,19 @@ } } }, + "Microsoft.Spatial/8.2.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Spatial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Spatial.dll": { + "related": ".xml" + } + } + }, "Microsoft.Win32.Registry/5.0.0": { "type": "package", "dependencies": { @@ -1407,6 +1764,28 @@ } } }, + "Microsoft.Win32.SystemEvents/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, "MongoDB.Analyzer/1.5.0": { "type": "package" }, @@ -1449,6 +1828,19 @@ } } }, + "Mono.Reflection/2.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Mono.Reflection.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/netstandard2.0/Mono.Reflection.dll": { + "related": ".pdb" + } + } + }, "Mono.TextTemplating/2.2.1": { "type": "package", "dependencies": { @@ -1746,6 +2138,41 @@ } } }, + "runtime.native.System.Data.SqlClient.sni/4.7.0": { + "type": "package", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-arm64/native/sni.dll": { + "assetType": "native", + "rid": "win-arm64" + } + } + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-x64/native/sni.dll": { + "assetType": "native", + "rid": "win-x64" + } + } + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-x86/native/sni.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, "SharpCompress/0.30.1": { "type": "package", "compile": { @@ -1768,10 +2195,11 @@ } } }, - "SSH.NET/2024.2.0": { + "SSH.NET/2025.0.0": { "type": "package", "dependencies": { - "BouncyCastle.Cryptography": "2.4.0" + "BouncyCastle.Cryptography": "2.5.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.3" }, "compile": { "lib/net8.0/Renci.SshNet.dll": { @@ -1899,15 +2327,20 @@ "lib/netcoreapp2.0/_._": {} } }, - "System.CodeDom/4.4.0": { + "System.CodeDom/6.0.0": { "type": "package", "compile": { - "ref/netstandard2.0/_._": { + "lib/net6.0/System.CodeDom.dll": { "related": ".xml" } }, "runtime": { - "lib/netstandard2.0/System.CodeDom.dll": {} + "lib/net6.0/System.CodeDom.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} } }, "System.Collections.Immutable/6.0.0": { @@ -1929,6 +2362,19 @@ "buildTransitive/netcoreapp3.1/_._": {} } }, + "System.ComponentModel.Annotations/5.0.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + } + }, "System.Composition/6.0.0": { "type": "package", "dependencies": { @@ -2033,7 +2479,55 @@ "buildTransitive/netcoreapp3.1/_._": {} } }, - "System.Diagnostics.DiagnosticSource/8.0.0": { + "System.Configuration.ConfigurationManager/6.0.1": { + "type": "package", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Configuration.ConfigurationManager.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Configuration.ConfigurationManager.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Data.SqlClient/4.8.6": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "System.Security.Principal.Windows": "4.7.0", + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + }, + "compile": { + "ref/netcoreapp2.1/System.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.DiagnosticSource/9.0.2": { "type": "package", "compile": { "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { @@ -2045,15 +2539,51 @@ "related": ".xml" } }, + "contentFiles": { + "contentFiles/any/any/_._": { + "buildAction": "None", + "codeLanguage": "any", + "copyToOutput": false + } + }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "System.IdentityModel.Tokens.Jwt/8.8.0": { + "System.Drawing.Common/6.0.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.8.0", - "Microsoft.IdentityModel.Tokens": "8.8.0" + "Microsoft.Win32.SystemEvents": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Drawing.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Drawing.Common.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/net6.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net6.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IdentityModel.Tokens.Jwt/8.9.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.9.0", + "Microsoft.IdentityModel.Tokens": "8.9.0" }, "compile": { "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { @@ -2107,6 +2637,15 @@ "buildTransitive/net6.0/_._": {} } }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, "System.Reflection.Metadata/6.0.1": { "type": "package", "dependencies": { @@ -2142,29 +2681,70 @@ "buildTransitive/netcoreapp3.1/_._": {} } }, - "System.Security.AccessControl/5.0.0": { + "System.Security.AccessControl/6.0.0": { "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - }, "compile": { - "ref/netstandard2.0/System.Security.AccessControl.dll": { + "lib/net6.0/System.Security.AccessControl.dll": { "related": ".xml" } }, "runtime": { - "lib/netstandard2.0/System.Security.AccessControl.dll": { + "lib/net6.0/System.Security.AccessControl.dll": { "related": ".xml" } }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { + "runtimes/win/lib/net6.0/System.Security.AccessControl.dll": { "assetType": "runtime", "rid": "win" } } }, + "System.Security.Cryptography.ProtectedData/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Permissions/6.0.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "6.0.0", + "System.Windows.Extensions": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Security.Permissions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Security.Permissions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, "System.Security.Principal.Windows/5.0.0": { "type": "package", "compile": { @@ -2270,6 +2850,28 @@ "buildTransitive/net6.0/_._": {} } }, + "System.Windows.Extensions/6.0.0": { + "type": "package", + "dependencies": { + "System.Drawing.Common": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Windows.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Windows.Extensions.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Windows.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, "YamlDotNet/16.3.0": { "type": "package", "compile": { @@ -2391,18 +2993,32 @@ "framework": ".NETCoreApp,Version=v8.0", "dependencies": { "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "Axion.ConcurrentHashSet": "1.0.0", + "BCrypt.Net-Next": "4.0.3", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "DotNet.MultiMap": "2.2.1", "DumpExtensions": "2.0.0", "Google.Protobuf": "3.27.1", "JWT": "11.0.0", "Microsoft.Diagnostics.NETCore.Client": "0.2.621003", + "Microsoft.Extensions.Configuration": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "MongoDB.Analyzer": "1.5.0", "MongoDB.Bson": "3.3.0", "MongoDB.Driver": "3.3.0", @@ -2413,12 +3029,12 @@ "Nito.AsyncEx": "5.1.2", "Otp.NET": "1.4.0", "RabbitMQ.Client": "6.8.1", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", "StackExchange.Redis.MultiplexerPool": "2.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "YamlDotNet": "16.3.0" }, "compile": { @@ -2461,6 +3077,156 @@ "lib/netstandard2.0/AsyncStateMachine.dll" ] }, + "Autofac/8.2.0": { + "sha512": "T+4+W4byzyUOarCbIcFRbxpYKC+cndfQm/+VeWpB60P2MCN0JMsewUhZqvH5Ooe936HQjn5uHvEY9tq6BfbiIw==", + "type": "package", + "path": "autofac/8.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "autofac.8.2.0.nupkg.sha512", + "autofac.nuspec", + "icon.png", + "lib/net6.0/Autofac.dll", + "lib/net6.0/Autofac.xml", + "lib/net7.0/Autofac.dll", + "lib/net7.0/Autofac.xml", + "lib/net8.0/Autofac.dll", + "lib/net8.0/Autofac.xml", + "lib/netstandard2.0/Autofac.dll", + "lib/netstandard2.0/Autofac.xml", + "lib/netstandard2.1/Autofac.dll", + "lib/netstandard2.1/Autofac.xml" + ] + }, + "AutoMapper/14.0.0": { + "sha512": "OC+1neAPM4oCCqQj3g2GJ2shziNNhOkxmNB9cVS8jtx4JbgmRzLcUOxB9Tsz6cVPHugdkHgCaCrTjjSI0Z5sCQ==", + "type": "package", + "path": "automapper/14.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.14.0.0.nupkg.sha512", + "automapper.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.dll", + "lib/net8.0/AutoMapper.xml" + ] + }, + "AutoMapper.AspNetCore.OData.EFCore/7.0.1": { + "sha512": "VfJFmLdPjdKX1gOlUx9+n1hdi9tFadsEDd28iSsTy26SdOe8AuV9fWozVMXg6663qBbw/7LiaPP19VgRlfFkOA==", + "type": "package", + "path": "automapper.aspnetcore.odata.efcore/7.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512", + "automapper.aspnetcore.odata.efcore.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll", + "lib/net9.0/AutoMapper.AspNetCore.OData.EFCore.dll" + ] + }, + "AutoMapper.Collection/11.0.0": { + "sha512": "26CXTuPsIbfk121na1sWt/QcJ4EkXtlWy6R+LJFvsxiF80d2srbUgL0WgZn9mDyrJo4Hvvyqr/WFwNrVOKMiHQ==", + "type": "package", + "path": "automapper.collection/11.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.collection.11.0.0.nupkg.sha512", + "automapper.collection.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Collection.dll" + ] + }, + "AutoMapper.Collection.EntityFrameworkCore/11.0.0": { + "sha512": "+IHCGSLfdc2pNXEUF2Kz8P1I1anCqPlEGWswMzTz1tZ2eRod9bY609TS55dg2NlS8e9CKebIoT3e/c4m90jCoQ==", + "type": "package", + "path": "automapper.collection.entityframeworkcore/11.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512", + "automapper.collection.entityframeworkcore.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll" + ] + }, + "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": { + "sha512": "vomQXQ4vqWUhl5tpbUbD3200BtlVJxdAUdCMa08a/vzRL6S9MJb2mN6EplaXXA3FLH1a3lPT1KpiHu6AlooQ/w==", + "type": "package", + "path": "automapper.contrib.autofac.dependencyinjection/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512", + "automapper.contrib.autofac.dependencyinjection.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll", + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.pdb" + ] + }, + "AutoMapper.Data/9.0.0": { + "sha512": "OI0+nHZaVGZCys2Nz7YV1I5ZjKjuTM2NXlAUmd2Nx68s4qX5m8piUfSapVjxInoQDf5PJ7Mox7a1lEZHpSHYpg==", + "type": "package", + "path": "automapper.data/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.data.9.0.0.nupkg.sha512", + "automapper.data.nuspec", + "lib/net8.0/AutoMapper.Data.dll", + "lib/net8.0/AutoMapper.Data.xml" + ] + }, + "AutoMapper.EF6/3.0.1": { + "sha512": "4w8gqn6NixT69TmH5Iup2nFoC6bYtjwh/QozOvOEbnu6imnegZE2DE4EqEG6Fis1dKKJ6WT9NCbiWC4NZv7Abw==", + "type": "package", + "path": "automapper.ef6/3.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.ef6.3.0.1.nupkg.sha512", + "automapper.ef6.nuspec", + "lib/net462/AutoMapper.EF6.dll", + "lib/netstandard2.1/AutoMapper.EF6.dll" + ] + }, + "AutoMapper.Extensions.EnumMapping/4.1.0": { + "sha512": "4i6FVLOequZNLgU6CRFbT900tBHb6JxyJty7Q8Rf7wMiwIBy/PkjsOT7Vz6svacFykghEy7PURSxpO9Fl2OUsA==", + "type": "package", + "path": "automapper.extensions.enummapping/4.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.extensions.enummapping.4.1.0.nupkg.sha512", + "automapper.extensions.enummapping.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll", + "lib/net8.0/AutoMapper.Extensions.EnumMapping.xml" + ] + }, + "AutoMapper.Extensions.ExpressionMapping/8.0.0": { + "sha512": "fR55QEOt8GiaVQPuEpyWJAzZxFSInCIYg6E1EoqQByWnjzQnQ5zHwQvMMF3E+AdtvAzbG7Intm08/8pK8eUTvQ==", + "type": "package", + "path": "automapper.extensions.expressionmapping/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.extensions.expressionmapping.8.0.0.nupkg.sha512", + "automapper.extensions.expressionmapping.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll", + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.xml" + ] + }, "AWS.Logger.Core/3.3.3": { "sha512": "JEXjiwIwAws5YJZDVwSqUoZIjMxsAuaZOQFZfLk6lYTg9NLrFY1dHafy6qifz/8ZQSlBiuSs+MAAHlBqHF9Cfw==", "type": "package", @@ -2533,15 +3299,15 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.Core/3.7.402.39": { - "sha512": "tfhDM14yy3P/Hrrq6pxmG+DojJcghnCYpuEAHPgTPAcMlffL3nVIHRtzsUTnCrR1B6qwGtxHd6f3IOhL6m+fSA==", + "AWSSDK.Core/3.7.402.46": { + "sha512": "/W2Y/8PmNilP4qONoPJz5/AgHwvwblmE8wvf1nG+oqqd2fX88vUNRToHmdVxZUqjLtx64VryI7iGKRaPUDMkTA==", "type": "package", - "path": "awssdk.core/3.7.402.39", + "path": "awssdk.core/3.7.402.46", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", - "awssdk.core.3.7.402.39.nupkg.sha512", + "awssdk.core.3.7.402.46.nupkg.sha512", "awssdk.core.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.Core.dll", @@ -2562,17 +3328,17 @@ "tools/account-management.ps1" ] }, - "AWSSDK.DynamoDBv2/3.7.406.21": { - "sha512": "WMfkpnUTqXMfwbdsg2neC9ZEmueNAXjkbuITh9oVEe7TLVkE9O2+8jo/qZOfwa16dYsDgPigBGyO+pJAKfp8yg==", + "AWSSDK.DynamoDBv2/3.7.407": { + "sha512": "YhenYMRx4d//UI6oEzvOPx/z8lBpSYQDel+JcFTIyR1IuRq1S3Fj3EOKUkjO8Rc24tcW9iO7fwvQldCYm50AyQ==", "type": "package", - "path": "awssdk.dynamodbv2/3.7.406.21", + "path": "awssdk.dynamodbv2/3.7.407", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.DynamoDBv2.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.dynamodbv2.3.7.406.21.nupkg.sha512", + "awssdk.dynamodbv2.3.7.407.nupkg.sha512", "awssdk.dynamodbv2.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.DynamoDBv2.dll", @@ -2626,17 +3392,17 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.OpenSearchService/3.7.404.75": { - "sha512": "O4k6MR2SpKf/bplYdfTgAtm7x9oiI66gx32DaSTuTB6UY39sG9AddmSTNGWTqU6qI+3zgb3BJq4YIXhKHWdPXA==", + "AWSSDK.OpenSearchService/3.7.404.81": { + "sha512": "ozC9j1qTmCu+01U5aA2/tp2aPYDUvhtc94eGNq/Z4qp1ybjjxpH5mY00v7vL9xC4OY6NnxY2miLS/VvxsqsTsg==", "type": "package", - "path": "awssdk.opensearchservice/3.7.404.75", + "path": "awssdk.opensearchservice/3.7.404.81", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.OpenSearchService.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.opensearchservice.3.7.404.75.nupkg.sha512", + "awssdk.opensearchservice.3.7.404.81.nupkg.sha512", "awssdk.opensearchservice.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.OpenSearchService.dll", @@ -2658,17 +3424,17 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.S3/3.7.416.9": { - "sha512": "o+Rnsn6mVVl/51FN8kIOvJqByXYm9ek545ZUV1zdkYqepAhKRJ1VUBeM3PxrlZmkoeW3Lrf6tMVcqHTU2onnpA==", + "AWSSDK.S3/3.7.416.15": { + "sha512": "jacDKz1W4udfELs1kUMh+joJfy3cxk5MTQ6V8KhN5U0UsdSigticS6p5/8xY3L1RpZrwNTdE4EFE5IV7I4tFDg==", "type": "package", - "path": "awssdk.s3/3.7.416.9", + "path": "awssdk.s3/3.7.416.15", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.S3.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.s3.3.7.416.9.nupkg.sha512", + "awssdk.s3.3.7.416.15.nupkg.sha512", "awssdk.s3.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.S3.dll", @@ -2690,6 +3456,38 @@ "tools/uninstall.ps1" ] }, + "AWSSDK.SecurityToken/3.7.401.89": { + "sha512": "HZ/tPaMoxKYlgTW7k0nLC/9QjyDXY3i+1yI7ptMKlZR378ikmFe4QgMf73MQeG+dIhAKf1SBTAXDytdlPtttcg==", + "type": "package", + "path": "awssdk.securitytoken/3.7.401.89", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "analyzers/dotnet/cs/AWSSDK.SecurityToken.CodeAnalysis.dll", + "analyzers/dotnet/cs/SharedAnalysisCode.dll", + "awssdk.securitytoken.3.7.401.89.nupkg.sha512", + "awssdk.securitytoken.nuspec", + "images/AWSLogo.png", + "lib/net35/AWSSDK.SecurityToken.dll", + "lib/net35/AWSSDK.SecurityToken.pdb", + "lib/net35/AWSSDK.SecurityToken.xml", + "lib/net45/AWSSDK.SecurityToken.dll", + "lib/net45/AWSSDK.SecurityToken.pdb", + "lib/net45/AWSSDK.SecurityToken.xml", + "lib/net8.0/AWSSDK.SecurityToken.dll", + "lib/net8.0/AWSSDK.SecurityToken.pdb", + "lib/net8.0/AWSSDK.SecurityToken.xml", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.dll", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.pdb", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.xml", + "lib/netstandard2.0/AWSSDK.SecurityToken.dll", + "lib/netstandard2.0/AWSSDK.SecurityToken.pdb", + "lib/netstandard2.0/AWSSDK.SecurityToken.xml", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, "Axion.ConcurrentHashSet/1.0.0": { "sha512": "lpDLMEHO6chrdOWWojzEyGsnev/6jFjyL7Z0bcQXWYWupyTqz+3V7frzC/bonvMbZXEwyNzsKkUa3SdkIYBazA==", "type": "package", @@ -2705,16 +3503,47 @@ "lib/netstandard2.0/Axion.ConcurrentHashSet.xml" ] }, - "BouncyCastle.Cryptography/2.4.0": { - "sha512": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==", + "BCrypt.Net-Next/4.0.3": { + "sha512": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==", "type": "package", - "path": "bouncycastle.cryptography/2.4.0", + "path": "bcrypt.net-next/4.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.0.3.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net20/BCrypt.Net-Next.dll", + "lib/net20/BCrypt.Net-Next.xml", + "lib/net35/BCrypt.Net-Next.dll", + "lib/net35/BCrypt.Net-Next.xml", + "lib/net462/BCrypt.Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt.Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt.Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/net5.0/BCrypt.Net-Next.dll", + "lib/net5.0/BCrypt.Net-Next.xml", + "lib/net6.0/BCrypt.Net-Next.dll", + "lib/net6.0/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt.Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt.Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, + "BouncyCastle.Cryptography/2.5.1": { + "sha512": "zy8TMeTP+1FH2NrLaNZtdRbBdq7u5MI+NFZQOBSM69u5RFkciinwzV2eveY6Kjf5MzgsYvvl6kTStsj3JrXqkg==", + "type": "package", + "path": "bouncycastle.cryptography/2.5.1", "files": [ ".nupkg.metadata", ".signature.p7s", "LICENSE.md", "README.md", - "bouncycastle.cryptography.2.4.0.nupkg.sha512", + "bouncycastle.cryptography.2.5.1.nupkg.sha512", "bouncycastle.cryptography.nuspec", "lib/net461/BouncyCastle.Cryptography.dll", "lib/net461/BouncyCastle.Cryptography.xml", @@ -2747,6 +3576,36 @@ "lib/netstandard2.0/CommandLine.xml" ] }, + "DelegateDecompiler/0.34.0": { + "sha512": "blUx3XMP4lJynw2y34NrnHzrshF2YGOPirxVUhHnAT09L/LwQc8Q6szmNGFi9hLd9AcM4nVAmXIX2DDyqCfwLg==", + "type": "package", + "path": "delegatedecompiler/0.34.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "delegatedecompiler.0.34.0.nupkg.sha512", + "delegatedecompiler.nuspec", + "lib/net40/DelegateDecompiler.dll", + "lib/net45/DelegateDecompiler.dll", + "lib/netstandard2.0/DelegateDecompiler.dll", + "lib/netstandard2.1/DelegateDecompiler.dll" + ] + }, + "DelegateDecompiler.EntityFramework/0.34.0": { + "sha512": "U55TkUKhrAsssd+cgXsEZqYXdT20nJBlEOBdLInsCRt1UghtWhYNZqbnR9oPIV4phrtgmkqj/6kXhfdczYNn4g==", + "type": "package", + "path": "delegatedecompiler.entityframework/0.34.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "delegatedecompiler.entityframework.0.34.0.nupkg.sha512", + "delegatedecompiler.entityframework.nuspec", + "lib/net45/DelegateDecompiler.EntityFramework.dll", + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll" + ] + }, "DnsClient/1.6.1": { "sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==", "type": "package", @@ -2798,6 +3657,68 @@ "lib/netstandard2.0/DumpExtensions.dll" ] }, + "EntityFramework/6.5.1": { + "sha512": "sQRP2lWg1i3aAGWqdliAM8zrGx7LHMUk+9/MoxUjwfTZYGMXvZ2JYZTlyTm1PqDxvn3c9E3U76TWDON7Y5+CVA==", + "type": "package", + "path": "entityframework/6.5.1", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "README.md", + "build/EntityFramework.DefaultItems.props", + "build/EntityFramework.props", + "build/EntityFramework.targets", + "build/Microsoft.Data.Entity.Build.Tasks.dll", + "build/net6.0/EntityFramework.props", + "build/net6.0/EntityFramework.targets", + "buildTransitive/EntityFramework.props", + "buildTransitive/EntityFramework.targets", + "buildTransitive/net6.0/EntityFramework.props", + "buildTransitive/net6.0/EntityFramework.targets", + "content/net40/App.config.install.xdt", + "content/net40/App.config.transform", + "content/net40/Web.config.install.xdt", + "content/net40/Web.config.transform", + "entityframework.6.5.1.nupkg.sha512", + "entityframework.nuspec", + "lib/net40/EntityFramework.SqlServer.dll", + "lib/net40/EntityFramework.SqlServer.xml", + "lib/net40/EntityFramework.dll", + "lib/net40/EntityFramework.xml", + "lib/net45/EntityFramework.SqlServer.dll", + "lib/net45/EntityFramework.SqlServer.xml", + "lib/net45/EntityFramework.dll", + "lib/net45/EntityFramework.xml", + "lib/netstandard2.1/EntityFramework.SqlServer.dll", + "lib/netstandard2.1/EntityFramework.SqlServer.xml", + "lib/netstandard2.1/EntityFramework.dll", + "lib/netstandard2.1/EntityFramework.xml", + "tools/EntityFramework6.PS2.psd1", + "tools/EntityFramework6.PS2.psm1", + "tools/EntityFramework6.psd1", + "tools/EntityFramework6.psm1", + "tools/about_EntityFramework6.help.txt", + "tools/init.ps1", + "tools/install.ps1", + "tools/net40/any/ef6.exe", + "tools/net40/any/ef6.pdb", + "tools/net40/win-arm64/ef6.exe", + "tools/net40/win-arm64/ef6.pdb", + "tools/net40/win-x86/ef6.exe", + "tools/net40/win-x86/ef6.pdb", + "tools/net45/any/ef6.exe", + "tools/net45/any/ef6.pdb", + "tools/net45/win-arm64/ef6.exe", + "tools/net45/win-arm64/ef6.pdb", + "tools/net45/win-x86/ef6.exe", + "tools/net45/win-x86/ef6.pdb", + "tools/net6.0/any/ef6.dll", + "tools/net6.0/any/ef6.pdb", + "tools/net6.0/any/ef6.runtimeconfig.json" + ] + }, "Google.Protobuf/3.27.1": { "sha512": "7IVz9TzhYCZ8qY0rPhXUnyJSXYdshUqmmxmTI763XmDDSJJFnyfKH43FFcMJu/CZgBcE98xlFztrKwhzcRkiPg==", "type": "package", @@ -3079,6 +4000,32 @@ "lib/netstandard2.0/JWT.xml" ] }, + "LogicBuilder.Expressions.Utils/7.0.0": { + "sha512": "nTlL/5nGPHZ0s987Kta4lFnzU79Px/9R9rFhJi6AxCMHZUz5BUX4Aab1A29iBTLmIMu2DKyQM8iN8q1NK3+CUA==", + "type": "package", + "path": "logicbuilder.expressions.utils/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll", + "logicbuilder.expressions.utils.7.0.0.nupkg.sha512", + "logicbuilder.expressions.utils.nuspec" + ] + }, + "LogicBuilder.Structures/7.0.0": { + "sha512": "KDfzBB7cYk2ras9Nb3xYXuUKs+rvje0vVyGzkXPQCpKsSbugFi2fXz+0MIQ108K+f/mOde7ZBECkkmYObyPf2Q==", + "type": "package", + "path": "logicbuilder.structures/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/LogicBuilder.Structures.dll", + "logicbuilder.structures.7.0.0.nupkg.sha512", + "logicbuilder.structures.nuspec" + ] + }, "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.2": { "sha512": "7qJkk5k5jabATZZrMIQgpUB9yjDNAAApSqw+8d0FEyK1AJ4j+wv1qOMl2byUr837xbK+MjehtPnQ32yZ5Gtzlw==", "type": "package", @@ -3094,23 +4041,40 @@ "microsoft.aspnetcore.authentication.jwtbearer.nuspec" ] }, - "Microsoft.Bcl.AsyncInterfaces/6.0.0": { - "sha512": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==", + "Microsoft.AspNetCore.OData/9.1.1": { + "sha512": "if1N+q3dTgUbUZ4KjLXCHYDQLKEEv0gpx8dLaSRp2StrYuWcRVCKjncI7fPcndFkt/nEJcIYzNKxtws4L5OO8Q==", "type": "package", - "path": "microsoft.bcl.asyncinterfaces/6.0.0", + "path": "microsoft.aspnetcore.odata/9.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/odata.png", + "lib/net8.0/Microsoft.AspNetCore.OData.dll", + "lib/net8.0/Microsoft.AspNetCore.OData.xml", + "microsoft.aspnetcore.odata.9.1.1.nupkg.sha512", + "microsoft.aspnetcore.odata.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", + "PACKAGE.md", "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", "microsoft.bcl.asyncinterfaces.nuspec", "useSharedDesignerContext.txt" ] @@ -3576,6 +4540,75 @@ "microsoft.codeanalysis.workspaces.common.nuspec" ] }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "Microsoft.Diagnostics.NETCore.Client/0.2.621003": { "sha512": "22YdSeB53xk4Pd1Xz92HigUy8ySJMzd8hpEZHlFWeaefzYox4VJnW+gJEzGrxbSvl3oGCpiIFKqh8the0xhzSA==", "type": "package", @@ -3592,46 +4625,48 @@ "microsoft.diagnostics.netcore.client.nuspec" ] }, - "Microsoft.EntityFrameworkCore/8.0.2": { - "sha512": "6QlvBx4rdawW3AkkCsGVV+8qRLk34aknV5JD40s1hbVR18vKmT2KDl2DW83nHcPX7f4oebQ3BD1UMNCI/gkE0g==", + "Microsoft.EntityFrameworkCore/9.0.2": { + "sha512": "P90ZuybgcpW32y985eOYxSoZ9IiL0UTYQlY0y1Pt1iHAnpZj/dQHREpSpry1RNvk8YjAeoAkWFdem5conqB9zQ==", "type": "package", - "path": "microsoft.entityframeworkcore/8.0.2", + "path": "microsoft.entityframeworkcore/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", + "PACKAGE.md", "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", "lib/net8.0/Microsoft.EntityFrameworkCore.dll", "lib/net8.0/Microsoft.EntityFrameworkCore.xml", - "microsoft.entityframeworkcore.8.0.2.nupkg.sha512", + "microsoft.entityframeworkcore.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.nuspec" ] }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { - "sha512": "DjDKp++BTKFZmX+xLTow7grQTY+pImKfhGW68Zf8myiL3zyJ3b8RZbnLsWGNCqKQIF6hJIz/zA/zmERobFwV0A==", + "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": { + "sha512": "oVSjNSIYHsk0N66eqAWgDcyo9etEFbUswbz7SmlYR6nGp05byHrJAYM5N8U2aGWJWJI6WvIC2e4TXJgH6GZ6HQ==", "type": "package", - "path": "microsoft.entityframeworkcore.abstractions/8.0.2", + "path": "microsoft.entityframeworkcore.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", + "PACKAGE.md", "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", - "microsoft.entityframeworkcore.abstractions.8.0.2.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.abstractions.nuspec" ] }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": { - "sha512": "LI7awhc0fiAKvcUemsqxXUWqzAH9ywTSyM1rpC1un4p5SE1bhr5nRLvyRVbKRzKakmnNNY3to8NPDnoySEkxVw==", + "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": { + "sha512": "w4jzX7XI+L3erVGzbHXpx64A3QaLXxqG3f1vPpGYYZGpxOIHkh7e4iLLD7cq4Ng1vjkwzWl5ZJp0Kj/nHsgFYg==", "type": "package", - "path": "microsoft.entityframeworkcore.analyzers/8.0.2", + "path": "microsoft.entityframeworkcore.analyzers/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", - "lib/netstandard2.0/_._", - "microsoft.entityframeworkcore.analyzers.8.0.2.nupkg.sha512", + "docs/PACKAGE.md", + "microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.analyzers.nuspec" ] }, @@ -3689,10 +4724,10 @@ "tools/netcoreapp2.0/any/ef.runtimeconfig.json" ] }, - "Microsoft.Extensions.Caching.Abstractions/8.0.0": { - "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "Microsoft.Extensions.Caching.Abstractions/9.0.2": { + "sha512": "a7QhA25n+BzSM5r5d7JznfyluMBGI7z3qyLlFviZ1Eiqv6DdiK27sLZdP/rpYirBM6UYAKxu5TbmfhIy13GN9A==", "type": "package", - "path": "microsoft.extensions.caching.abstractions/8.0.0", + "path": "microsoft.extensions.caching.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3702,27 +4737,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", - "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512", "microsoft.extensions.caching.abstractions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Caching.Memory/8.0.0": { - "sha512": "7pqivmrZDzo1ADPkRwjy+8jtRKWRCPag9qPI+p7sgu7Q4QreWhcvbiWXsbhP+yY8XSiDvZpu2/LWdBv7PnmOpQ==", + "Microsoft.Extensions.Caching.Memory/9.0.2": { + "sha512": "AlEfp0DMz8E1h1Exi8LBrUCNmCYcGDfSM4F/uK1D1cYx/R3w0LVvlmjICqxqXTsy7BEZaCf5leRZY2FuPEiFaw==", "type": "package", - "path": "microsoft.extensions.caching.memory/8.0.0", + "path": "microsoft.extensions.caching.memory/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3732,27 +4765,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", "lib/net462/Microsoft.Extensions.Caching.Memory.dll", "lib/net462/Microsoft.Extensions.Caching.Memory.xml", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net9.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net9.0/Microsoft.Extensions.Caching.Memory.xml", "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", - "microsoft.extensions.caching.memory.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.memory.9.0.2.nupkg.sha512", "microsoft.extensions.caching.memory.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Configuration/8.0.0": { - "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "Microsoft.Extensions.Configuration/9.0.4": { + "sha512": "KIVBrMbItnCJDd1RF4KEaE8jZwDJcDUJW5zXpbwQ05HNYTK1GveHxHK0B3SjgDJuR48GRACXAO+BLhL8h34S7g==", "type": "package", - "path": "microsoft.extensions.configuration/8.0.0", + "path": "microsoft.extensions.configuration/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3762,27 +4793,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", "lib/net462/Microsoft.Extensions.Configuration.dll", "lib/net462/Microsoft.Extensions.Configuration.xml", - "lib/net6.0/Microsoft.Extensions.Configuration.dll", - "lib/net6.0/Microsoft.Extensions.Configuration.xml", - "lib/net7.0/Microsoft.Extensions.Configuration.dll", - "lib/net7.0/Microsoft.Extensions.Configuration.xml", "lib/net8.0/Microsoft.Extensions.Configuration.dll", "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/net9.0/Microsoft.Extensions.Configuration.dll", + "lib/net9.0/Microsoft.Extensions.Configuration.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.9.0.4.nupkg.sha512", "microsoft.extensions.configuration.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "Microsoft.Extensions.Configuration.Abstractions/9.0.4": { + "sha512": "0LN/DiIKvBrkqp7gkF3qhGIeZk6/B63PthAHjQsxymJfIBcz0kbf4/p/t4lMgggVxZ+flRi5xvTwlpPOoZk8fg==", "type": "package", - "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "path": "microsoft.extensions.configuration.abstractions/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3792,19 +4821,17 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512", "microsoft.extensions.configuration.abstractions.nuspec", "useSharedDesignerContext.txt" ] @@ -3946,10 +4973,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.DependencyInjection/8.0.0": { - "sha512": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "Microsoft.Extensions.DependencyInjection/9.0.2": { + "sha512": "ZffbJrskOZ40JTzcTyKwFHS5eACSWp2bUQBBApIgGV+es8RaTD4OxUG7XxFr3RIPLXtYQ1jQzF2DjKB5fZn7Qg==", "type": "package", - "path": "microsoft.extensions.dependencyinjection/8.0.0", + "path": "microsoft.extensions.dependencyinjection/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3959,29 +4986,27 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", "lib/net462/Microsoft.Extensions.DependencyInjection.dll", "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512", "microsoft.extensions.dependencyinjection.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { - "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": { + "sha512": "UI0TQPVkS78bFdjkTodmkH0Fe8lXv9LnhGFKgKrsgUJ5a5FVdFRcgjIkBVLbGgdRhxWirxH/8IXUtEyYJx6GQg==", "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "path": "microsoft.extensions.dependencyinjection.abstractions/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3991,21 +5016,19 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512", "microsoft.extensions.dependencyinjection.abstractions.nuspec", "useSharedDesignerContext.txt" ] @@ -4216,10 +5239,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging/8.0.0": { - "sha512": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "Microsoft.Extensions.Logging/9.0.2": { + "sha512": "loV/0UNpt2bD+6kCDzFALVE63CDtqzPeC0LAetkdhiEr/tTNbvOlQ7CBResH7BQBd3cikrwiBfaHdyHMFUlc2g==", "type": "package", - "path": "microsoft.extensions.logging/8.0.0", + "path": "microsoft.extensions.logging/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4229,29 +5252,27 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Logging.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", "lib/net462/Microsoft.Extensions.Logging.dll", "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net6.0/Microsoft.Extensions.Logging.dll", - "lib/net6.0/Microsoft.Extensions.Logging.xml", - "lib/net7.0/Microsoft.Extensions.Logging.dll", - "lib/net7.0/Microsoft.Extensions.Logging.xml", "lib/net8.0/Microsoft.Extensions.Logging.dll", "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/net9.0/Microsoft.Extensions.Logging.dll", + "lib/net9.0/Microsoft.Extensions.Logging.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.9.0.2.nupkg.sha512", "microsoft.extensions.logging.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging.Abstractions/8.0.2": { - "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "Microsoft.Extensions.Logging.Abstractions/9.0.2": { + "sha512": "dV9s2Lamc8jSaqhl2BQSPn/AryDIH2sSbQUyLitLXV0ROmsb+SROnn2cH939JFbsNrnf3mIM3GNRKT7P0ldwLg==", "type": "package", - "path": "microsoft.extensions.logging.abstractions/8.0.2", + "path": "microsoft.extensions.logging.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4303,28 +5324,45 @@ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512", "microsoft.extensions.logging.abstractions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Options/8.0.0": { - "sha512": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "Microsoft.Extensions.ObjectPool/6.0.3": { + "sha512": "IbQUEZr/LxxpPxkXDmKaemMeQNPjdHfk87HtTsI18a3RVgad0NOJSRaJ20hcesqL45PLcpQHR8xrPP7wZKbFQQ==", "type": "package", - "path": "microsoft.extensions.options/8.0.0", + "path": "microsoft.extensions.objectpool/6.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Extensions.ObjectPool.dll", + "lib/net461/Microsoft.Extensions.ObjectPool.xml", + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll", + "lib/net6.0/Microsoft.Extensions.ObjectPool.xml", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", + "microsoft.extensions.objectpool.6.0.3.nupkg.sha512", + "microsoft.extensions.objectpool.nuspec" + ] + }, + "Microsoft.Extensions.Options/9.0.4": { + "sha512": "fiFI2+58kicqVZyt/6obqoFwHiab7LC4FkQ3mmiBJ28Yy4fAvy2+v9MRnSvvlOO8chTOjKsdafFl/K9veCPo5g==", + "type": "package", + "path": "microsoft.extensions.options/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4348,22 +5386,20 @@ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", "buildTransitive/net461/Microsoft.Extensions.Options.targets", "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", "lib/net462/Microsoft.Extensions.Options.dll", "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net6.0/Microsoft.Extensions.Options.dll", - "lib/net6.0/Microsoft.Extensions.Options.xml", - "lib/net7.0/Microsoft.Extensions.Options.dll", - "lib/net7.0/Microsoft.Extensions.Options.xml", "lib/net8.0/Microsoft.Extensions.Options.dll", "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/net9.0/Microsoft.Extensions.Options.dll", + "lib/net9.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.0/Microsoft.Extensions.Options.dll", "lib/netstandard2.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.1/Microsoft.Extensions.Options.dll", "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.8.0.0.nupkg.sha512", + "microsoft.extensions.options.9.0.4.nupkg.sha512", "microsoft.extensions.options.nuspec", "useSharedDesignerContext.txt" ] @@ -4398,10 +5434,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Primitives/8.0.0": { - "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "Microsoft.Extensions.Primitives/9.0.4": { + "sha512": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA==", "type": "package", - "path": "microsoft.extensions.primitives/8.0.0", + "path": "microsoft.extensions.primitives/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4411,27 +5447,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", "lib/net462/Microsoft.Extensions.Primitives.dll", "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net6.0/Microsoft.Extensions.Primitives.dll", - "lib/net6.0/Microsoft.Extensions.Primitives.xml", - "lib/net7.0/Microsoft.Extensions.Primitives.dll", - "lib/net7.0/Microsoft.Extensions.Primitives.xml", "lib/net8.0/Microsoft.Extensions.Primitives.dll", "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/net9.0/Microsoft.Extensions.Primitives.dll", + "lib/net9.0/Microsoft.Extensions.Primitives.xml", "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.9.0.4.nupkg.sha512", "microsoft.extensions.primitives.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.IdentityModel.Abstractions/8.8.0": { - "sha512": "0lKw+f3vkmV9t3PLe6sY3xPrYrHYiMRFxuOse5CMkKPxhQYiabpfJsuk6wX2RrVQ86Dn+t/8poHpH0nbp6sFvA==", + "Microsoft.IdentityModel.Abstractions/8.9.0": { + "sha512": "b/87S+lb86U7Ns7xgTKnqql6XGNr8hBE+k0rj5sRWwXeJe6uA+3mSjvpZ9GoQo3cB9zlwzcbGBU8KM44qX0t1g==", "type": "package", - "path": "microsoft.identitymodel.abstractions/8.8.0", + "path": "microsoft.identitymodel.abstractions/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4448,14 +5482,14 @@ "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", - "microsoft.identitymodel.abstractions.8.8.0.nupkg.sha512", + "microsoft.identitymodel.abstractions.8.9.0.nupkg.sha512", "microsoft.identitymodel.abstractions.nuspec" ] }, - "Microsoft.IdentityModel.JsonWebTokens/8.8.0": { - "sha512": "lepOkZZTMfJCPSnWITXxV+4Wxb54g+9oIybs9YovlOzZWuR1i2DOpzaDgSe+piDJaGtnSrcUlcB9fZ5Swur7Uw==", + "Microsoft.IdentityModel.JsonWebTokens/8.9.0": { + "sha512": "QcNC57hJLc6LIcy2PTYlD8iRBQBm6bqPKbCjsRYWlp7QTyJisF0ImUWaa3mx6wWaS1upwYneYVPiIiNSlAy16g==", "type": "package", - "path": "microsoft.identitymodel.jsonwebtokens/8.8.0", + "path": "microsoft.identitymodel.jsonwebtokens/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4472,14 +5506,14 @@ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "microsoft.identitymodel.jsonwebtokens.8.8.0.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.8.9.0.nupkg.sha512", "microsoft.identitymodel.jsonwebtokens.nuspec" ] }, - "Microsoft.IdentityModel.Logging/8.8.0": { - "sha512": "sUyoxzg/WBZobbFLJK8loT9IILKtS9ePmWu5B11ogQqhSHppE6SRZKw0fhI6Fd16X6ey52cbbWc2rvMBC98EQA==", + "Microsoft.IdentityModel.Logging/8.9.0": { + "sha512": "rswvH4ZANbFsJYEn+PGEOj7nkkBRjnsb7LcYGAS16VUJpSeKULLeYSy/7SK6jLO1WTT12xqdeL4mj3dYT7GdoQ==", "type": "package", - "path": "microsoft.identitymodel.logging/8.8.0", + "path": "microsoft.identitymodel.logging/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4496,7 +5530,7 @@ "lib/net9.0/Microsoft.IdentityModel.Logging.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", - "microsoft.identitymodel.logging.8.8.0.nupkg.sha512", + "microsoft.identitymodel.logging.8.9.0.nupkg.sha512", "microsoft.identitymodel.logging.nuspec" ] }, @@ -4546,10 +5580,10 @@ "microsoft.identitymodel.protocols.openidconnect.nuspec" ] }, - "Microsoft.IdentityModel.Tokens/8.8.0": { - "sha512": "09hnbUJh/18gUmu5nCVFMvyzAFC4l1qyc4bwSJaKzUBqHN7aNDwmSx8dE3/MMJImbvnKq9rEtkkgnrS/OUBtjA==", + "Microsoft.IdentityModel.Tokens/8.9.0": { + "sha512": "qK6kW5qZvDj7E5RLWQ9gzJxQe5GUz7+7bXrLQQydSDF9hTf5Ip2qHuAQW3Fg9GND6jkjTr7IXAZFmBHadNQi4Q==", "type": "package", - "path": "microsoft.identitymodel.tokens/8.8.0", + "path": "microsoft.identitymodel.tokens/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4566,26 +5600,48 @@ "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", - "microsoft.identitymodel.tokens.8.8.0.nupkg.sha512", + "microsoft.identitymodel.tokens.8.9.0.nupkg.sha512", "microsoft.identitymodel.tokens.nuspec" ] }, - "Microsoft.NETCore.Platforms/5.0.0": { - "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", + "Microsoft.OData.Core/8.2.2": { + "sha512": "VY3sZzBOxePvRuCeBlEiJ2LNxjr8ReOKj6YWXi5i8vG3TLWo+CmIc9fiE8WDoe90NcCaBnwK6Ub2fWnpNEbLxA==", "type": "package", - "path": "microsoft.netcore.platforms/5.0.0", + "path": "microsoft.odata.core/8.2.2", "files": [ ".nupkg.metadata", ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.5.0.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json", - "useSharedDesignerContext.txt", - "version.txt" + "lib/net8.0/Microsoft.OData.Core.dll", + "lib/net8.0/Microsoft.OData.Core.xml", + "microsoft.odata.core.8.2.2.nupkg.sha512", + "microsoft.odata.core.nuspec" + ] + }, + "Microsoft.OData.Edm/8.2.2": { + "sha512": "cHMsoV059EPNLD+SJFxIM8rKLUA3kKifflfUQy+7hWKZpmw+YhLi7qeWSSA9UDRVd0sqApFU8gdqHjordJoTIg==", + "type": "package", + "path": "microsoft.odata.edm/8.2.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Microsoft.OData.Edm.dll", + "lib/net8.0/Microsoft.OData.Edm.xml", + "microsoft.odata.edm.8.2.2.nupkg.sha512", + "microsoft.odata.edm.nuspec" + ] + }, + "Microsoft.OData.ModelBuilder/2.0.0": { + "sha512": "QzySAMGhLCMyLNHSTIYKFjJXetoDeGkRS/7JEjm7eMJlyu1Qv4MfL1CXQFg2uijizNu2jQojT0mdCpawXbyv8Q==", + "type": "package", + "path": "microsoft.odata.modelbuilder/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/odata.png", + "lib/net8.0/Microsoft.OData.ModelBuilder.dll", + "lib/net8.0/Microsoft.OData.ModelBuilder.xml", + "microsoft.odata.modelbuilder.2.0.0.nupkg.sha512", + "microsoft.odata.modelbuilder.nuspec" ] }, "Microsoft.OpenApi/1.6.22": { @@ -4603,6 +5659,19 @@ "microsoft.openapi.nuspec" ] }, + "Microsoft.Spatial/8.2.2": { + "sha512": "iG0pF7o7bR9/J+WcSNGEW0DzewO8Te/T+5FJ9EIuXcPkVE96cqc6Cf57ygqlQZj5jmf+D/gOtBJjPc4iyeI0Aw==", + "type": "package", + "path": "microsoft.spatial/8.2.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Microsoft.Spatial.dll", + "lib/net8.0/Microsoft.Spatial.xml", + "microsoft.spatial.8.2.2.nupkg.sha512", + "microsoft.spatial.nuspec" + ] + }, "Microsoft.Win32.Registry/5.0.0": { "sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", "type": "package", @@ -4647,6 +5716,35 @@ "version.txt" ] }, + "Microsoft.Win32.SystemEvents/6.0.0": { + "sha512": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==", + "type": "package", + "path": "microsoft.win32.systemevents/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/Microsoft.Win32.SystemEvents.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/Microsoft.Win32.SystemEvents.dll", + "lib/net461/Microsoft.Win32.SystemEvents.xml", + "lib/net6.0/Microsoft.Win32.SystemEvents.dll", + "lib/net6.0/Microsoft.Win32.SystemEvents.xml", + "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll", + "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml", + "microsoft.win32.systemevents.6.0.0.nupkg.sha512", + "microsoft.win32.systemevents.nuspec", + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.xml", + "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml", + "useSharedDesignerContext.txt" + ] + }, "MongoDB.Analyzer/1.5.0": { "sha512": "ujrUe6NeLGW9q8ABseYY/NFx7pc1G/LshtVfLMONV02+fEy0jUDsXLHU7YvuARjJhJI7Mgz88tfvCncccUmerw==", "type": "package", @@ -4705,6 +5803,21 @@ "packageIcon.png" ] }, + "Mono.Reflection/2.0.0": { + "sha512": "gipqt3dO1NsgM9wfUsQeNVLYmSskDfaN+muNQHLJYkCuYxx2bIp6gAA8j2Rp+Ey6YNHloZv+BJY56r9fl3tfew==", + "type": "package", + "path": "mono.reflection/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/Mono.Reflection.dll", + "lib/net40/Mono.Reflection.pdb", + "lib/netstandard2.0/Mono.Reflection.dll", + "lib/netstandard2.0/Mono.Reflection.pdb", + "mono.reflection.2.0.0.nupkg.sha512", + "mono.reflection.nuspec" + ] + }, "Mono.TextTemplating/2.2.1": { "sha512": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", "type": "package", @@ -5100,6 +6213,69 @@ "rabbitmq.client.nuspec" ] }, + "runtime.native.System.Data.SqlClient.sni/4.7.0": { + "sha512": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "type": "package", + "path": "runtime.native.system.data.sqlclient.sni/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512", + "runtime.native.system.data.sqlclient.sni.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==", + "type": "package", + "path": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-arm64/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==", + "type": "package", + "path": "runtime.win-x64.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-x64.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-x64/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==", + "type": "package", + "path": "runtime.win-x86.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-x86.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-x86/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "SharpCompress/0.30.1": { "sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==", "type": "package", @@ -5136,10 +6312,10 @@ "snappier.nuspec" ] }, - "SSH.NET/2024.2.0": { - "sha512": "9r+4UF2P51lTztpd+H7SJywk7WgmlWB//Cm2o96c6uGVZU5r58ys2/cD9pCgTk0zCdSkfflWL1WtqQ9I4IVO9Q==", + "SSH.NET/2025.0.0": { + "sha512": "AKYbB+q2zFkNQbBFx5gXdv+Wje0baBtADQ35WnMKi4bg1ka74wTQtWoPd+fOWcydohdfsD0nfT8ErMOAPxtSfA==", "type": "package", - "path": "ssh.net/2024.2.0", + "path": "ssh.net/2025.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -5147,17 +6323,15 @@ "SS-NET-icon-h500.png", "lib/net462/Renci.SshNet.dll", "lib/net462/Renci.SshNet.xml", - "lib/net6.0/Renci.SshNet.dll", - "lib/net6.0/Renci.SshNet.xml", - "lib/net7.0/Renci.SshNet.dll", - "lib/net7.0/Renci.SshNet.xml", "lib/net8.0/Renci.SshNet.dll", "lib/net8.0/Renci.SshNet.xml", + "lib/net9.0/Renci.SshNet.dll", + "lib/net9.0/Renci.SshNet.xml", "lib/netstandard2.0/Renci.SshNet.dll", "lib/netstandard2.0/Renci.SshNet.xml", "lib/netstandard2.1/Renci.SshNet.dll", "lib/netstandard2.1/Renci.SshNet.xml", - "ssh.net.2024.2.0.nupkg.sha512", + "ssh.net.2025.0.0.nupkg.sha512", "ssh.net.nuspec" ] }, @@ -5334,25 +6508,27 @@ "version.txt" ] }, - "System.CodeDom/4.4.0": { - "sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "System.CodeDom/6.0.0": { + "sha512": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==", "type": "package", - "path": "system.codedom/4.4.0", + "path": "system.codedom/6.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.CodeDom.targets", + "buildTransitive/netcoreapp3.1/_._", "lib/net461/System.CodeDom.dll", + "lib/net461/System.CodeDom.xml", + "lib/net6.0/System.CodeDom.dll", + "lib/net6.0/System.CodeDom.xml", "lib/netstandard2.0/System.CodeDom.dll", - "ref/net461/System.CodeDom.dll", - "ref/net461/System.CodeDom.xml", - "ref/netstandard2.0/System.CodeDom.dll", - "ref/netstandard2.0/System.CodeDom.xml", - "system.codedom.4.4.0.nupkg.sha512", + "lib/netstandard2.0/System.CodeDom.xml", + "system.codedom.6.0.0.nupkg.sha512", "system.codedom.nuspec", - "useSharedDesignerContext.txt", - "version.txt" + "useSharedDesignerContext.txt" ] }, "System.Collections.Immutable/6.0.0": { @@ -5378,6 +6554,96 @@ "useSharedDesignerContext.txt" ] }, + "System.ComponentModel.Annotations/5.0.0": { + "sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==", + "type": "package", + "path": "system.componentmodel.annotations/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.5.0.0.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "System.Composition/6.0.0": { "sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", "type": "package", @@ -5510,10 +6776,121 @@ "useSharedDesignerContext.txt" ] }, - "System.Diagnostics.DiagnosticSource/8.0.0": { - "sha512": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "System.Configuration.ConfigurationManager/6.0.1": { + "sha512": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", "type": "package", - "path": "system.diagnostics.diagnosticsource/8.0.0", + "path": "system.configuration.configurationmanager/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Configuration.ConfigurationManager.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Configuration.ConfigurationManager.dll", + "lib/net461/System.Configuration.ConfigurationManager.xml", + "lib/net6.0/System.Configuration.ConfigurationManager.dll", + "lib/net6.0/System.Configuration.ConfigurationManager.xml", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.xml", + "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.dll", + "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.xml", + "system.configuration.configurationmanager.6.0.1.nupkg.sha512", + "system.configuration.configurationmanager.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Data.SqlClient/4.8.6": { + "sha512": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==", + "type": "package", + "path": "system.data.sqlclient/4.8.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/System.Data.SqlClient.dll", + "lib/net46/System.Data.SqlClient.dll", + "lib/net461/System.Data.SqlClient.dll", + "lib/net461/System.Data.SqlClient.xml", + "lib/netcoreapp2.1/System.Data.SqlClient.dll", + "lib/netcoreapp2.1/System.Data.SqlClient.xml", + "lib/netstandard1.2/System.Data.SqlClient.dll", + "lib/netstandard1.2/System.Data.SqlClient.xml", + "lib/netstandard1.3/System.Data.SqlClient.dll", + "lib/netstandard1.3/System.Data.SqlClient.xml", + "lib/netstandard2.0/System.Data.SqlClient.dll", + "lib/netstandard2.0/System.Data.SqlClient.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/System.Data.SqlClient.dll", + "ref/net46/System.Data.SqlClient.dll", + "ref/net461/System.Data.SqlClient.dll", + "ref/net461/System.Data.SqlClient.xml", + "ref/netcoreapp2.1/System.Data.SqlClient.dll", + "ref/netcoreapp2.1/System.Data.SqlClient.xml", + "ref/netstandard1.2/System.Data.SqlClient.dll", + "ref/netstandard1.2/System.Data.SqlClient.xml", + "ref/netstandard1.2/de/System.Data.SqlClient.xml", + "ref/netstandard1.2/es/System.Data.SqlClient.xml", + "ref/netstandard1.2/fr/System.Data.SqlClient.xml", + "ref/netstandard1.2/it/System.Data.SqlClient.xml", + "ref/netstandard1.2/ja/System.Data.SqlClient.xml", + "ref/netstandard1.2/ko/System.Data.SqlClient.xml", + "ref/netstandard1.2/ru/System.Data.SqlClient.xml", + "ref/netstandard1.2/zh-hans/System.Data.SqlClient.xml", + "ref/netstandard1.2/zh-hant/System.Data.SqlClient.xml", + "ref/netstandard1.3/System.Data.SqlClient.dll", + "ref/netstandard1.3/System.Data.SqlClient.xml", + "ref/netstandard1.3/de/System.Data.SqlClient.xml", + "ref/netstandard1.3/es/System.Data.SqlClient.xml", + "ref/netstandard1.3/fr/System.Data.SqlClient.xml", + "ref/netstandard1.3/it/System.Data.SqlClient.xml", + "ref/netstandard1.3/ja/System.Data.SqlClient.xml", + "ref/netstandard1.3/ko/System.Data.SqlClient.xml", + "ref/netstandard1.3/ru/System.Data.SqlClient.xml", + "ref/netstandard1.3/zh-hans/System.Data.SqlClient.xml", + "ref/netstandard1.3/zh-hant/System.Data.SqlClient.xml", + "ref/netstandard2.0/System.Data.SqlClient.dll", + "ref/netstandard2.0/System.Data.SqlClient.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll", + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.xml", + "runtimes/unix/lib/netstandard1.3/System.Data.SqlClient.dll", + "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.dll", + "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.xml", + "runtimes/win/lib/net451/System.Data.SqlClient.dll", + "runtimes/win/lib/net46/System.Data.SqlClient.dll", + "runtimes/win/lib/net461/System.Data.SqlClient.dll", + "runtimes/win/lib/net461/System.Data.SqlClient.xml", + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll", + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.xml", + "runtimes/win/lib/netstandard1.3/System.Data.SqlClient.dll", + "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.dll", + "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.xml", + "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.dll", + "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.xml", + "system.data.sqlclient.4.8.6.nupkg.sha512", + "system.data.sqlclient.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/9.0.2": { + "sha512": "z5CMQNLzk8UKnTEHRKb4nq03CCDWBMEF2gfP3oPKZn4F8wip6LFZCP5rF90DREHqdNddScIGAfszXJSjh4drSw==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -5522,27 +6899,69 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "content/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net462/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net8.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net9.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/netstandard2.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", "lib/net462/System.Diagnostics.DiagnosticSource.dll", "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net6.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net6.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net7.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net7.0/System.Diagnostics.DiagnosticSource.xml", "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512", "system.diagnostics.diagnosticsource.nuspec", "useSharedDesignerContext.txt" ] }, - "System.IdentityModel.Tokens.Jwt/8.8.0": { - "sha512": "/oIQ5jhVxpzutFOPYIxmvkVMCLLDwpN0CLcXjyxPflVRQGZRYi5x2IqHeJw+xJ2k2HUPmeTaM18La5wDbhJcQA==", + "System.Drawing.Common/6.0.0": { + "sha512": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", "type": "package", - "path": "system.identitymodel.tokens.jwt/8.8.0", + "path": "system.drawing.common/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Drawing.Common.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Drawing.Common.dll", + "lib/net461/System.Drawing.Common.xml", + "lib/net6.0/System.Drawing.Common.dll", + "lib/net6.0/System.Drawing.Common.xml", + "lib/netcoreapp3.1/System.Drawing.Common.dll", + "lib/netcoreapp3.1/System.Drawing.Common.xml", + "lib/netstandard2.0/System.Drawing.Common.dll", + "lib/netstandard2.0/System.Drawing.Common.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/unix/lib/net6.0/System.Drawing.Common.dll", + "runtimes/unix/lib/net6.0/System.Drawing.Common.xml", + "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.dll", + "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.xml", + "runtimes/win/lib/net6.0/System.Drawing.Common.dll", + "runtimes/win/lib/net6.0/System.Drawing.Common.xml", + "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.dll", + "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.xml", + "system.drawing.common.6.0.0.nupkg.sha512", + "system.drawing.common.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/8.9.0": { + "sha512": "7Pu9UjF1+so0s8zgzcIxSxbRQoiM2DMdwazVGmNptX3O6gDfMyeWZBd/Zn6VueDteN0ZTHw2acsf6+mAe8UpMw==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -5559,7 +6978,7 @@ "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", - "system.identitymodel.tokens.jwt.8.8.0.nupkg.sha512", + "system.identitymodel.tokens.jwt.8.9.0.nupkg.sha512", "system.identitymodel.tokens.jwt.nuspec" ] }, @@ -5639,6 +7058,60 @@ "system.reactive.nuspec" ] }, + "System.Reflection.Emit/4.7.0": { + "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "type": "package", + "path": "system.reflection.emit/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Reflection.Emit.dll", + "lib/netstandard1.1/System.Reflection.Emit.xml", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.xml", + "lib/netstandard2.1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/netstandard2.0/System.Reflection.Emit.dll", + "ref/netstandard2.0/System.Reflection.Emit.xml", + "ref/netstandard2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", + "system.reflection.emit.4.7.0.nupkg.sha512", + "system.reflection.emit.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "System.Reflection.Metadata/6.0.1": { "sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", "type": "package", @@ -5687,51 +7160,97 @@ "useSharedDesignerContext.txt" ] }, - "System.Security.AccessControl/5.0.0": { - "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "System.Security.AccessControl/6.0.0": { + "sha512": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==", "type": "package", - "path": "system.security.accesscontrol/5.0.0", + "path": "system.security.accesscontrol/6.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.AccessControl.dll", + "buildTransitive/netcoreapp2.0/System.Security.AccessControl.targets", + "buildTransitive/netcoreapp3.1/_._", "lib/net461/System.Security.AccessControl.dll", "lib/net461/System.Security.AccessControl.xml", - "lib/netstandard1.3/System.Security.AccessControl.dll", + "lib/net6.0/System.Security.AccessControl.dll", + "lib/net6.0/System.Security.AccessControl.xml", "lib/netstandard2.0/System.Security.AccessControl.dll", "lib/netstandard2.0/System.Security.AccessControl.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.xml", - "ref/netstandard1.3/System.Security.AccessControl.dll", - "ref/netstandard1.3/System.Security.AccessControl.xml", - "ref/netstandard1.3/de/System.Security.AccessControl.xml", - "ref/netstandard1.3/es/System.Security.AccessControl.xml", - "ref/netstandard1.3/fr/System.Security.AccessControl.xml", - "ref/netstandard1.3/it/System.Security.AccessControl.xml", - "ref/netstandard1.3/ja/System.Security.AccessControl.xml", - "ref/netstandard1.3/ko/System.Security.AccessControl.xml", - "ref/netstandard1.3/ru/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", - "ref/netstandard2.0/System.Security.AccessControl.dll", - "ref/netstandard2.0/System.Security.AccessControl.xml", - "ref/uap10.0.16299/_._", - "runtimes/win/lib/net46/System.Security.AccessControl.dll", "runtimes/win/lib/net461/System.Security.AccessControl.dll", "runtimes/win/lib/net461/System.Security.AccessControl.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.accesscontrol.5.0.0.nupkg.sha512", + "runtimes/win/lib/net6.0/System.Security.AccessControl.dll", + "runtimes/win/lib/net6.0/System.Security.AccessControl.xml", + "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.dll", + "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.xml", + "system.security.accesscontrol.6.0.0.nupkg.sha512", "system.security.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Cryptography.ProtectedData/6.0.0": { + "sha512": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==", + "type": "package", + "path": "system.security.cryptography.protecteddata/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Security.Cryptography.ProtectedData.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Security.Cryptography.ProtectedData.dll", + "lib/net461/System.Security.Cryptography.ProtectedData.xml", + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll", + "lib/net6.0/System.Security.Cryptography.ProtectedData.xml", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.xml", + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.xml", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "system.security.cryptography.protecteddata.6.0.0.nupkg.sha512", + "system.security.cryptography.protecteddata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Permissions/6.0.0": { + "sha512": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "type": "package", + "path": "system.security.permissions/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Security.Permissions.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Security.Permissions.dll", + "lib/net461/System.Security.Permissions.xml", + "lib/net5.0/System.Security.Permissions.dll", + "lib/net5.0/System.Security.Permissions.xml", + "lib/net6.0/System.Security.Permissions.dll", + "lib/net6.0/System.Security.Permissions.xml", + "lib/netcoreapp3.1/System.Security.Permissions.dll", + "lib/netcoreapp3.1/System.Security.Permissions.xml", + "lib/netstandard2.0/System.Security.Permissions.dll", + "lib/netstandard2.0/System.Security.Permissions.xml", + "runtimes/win/lib/net461/System.Security.Permissions.dll", + "runtimes/win/lib/net461/System.Security.Permissions.xml", + "system.security.permissions.6.0.0.nupkg.sha512", + "system.security.permissions.nuspec", + "useSharedDesignerContext.txt" ] }, "System.Security.Principal.Windows/5.0.0": { @@ -5965,6 +7484,29 @@ "useSharedDesignerContext.txt" ] }, + "System.Windows.Extensions/6.0.0": { + "sha512": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "type": "package", + "path": "system.windows.extensions/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net6.0/System.Windows.Extensions.dll", + "lib/net6.0/System.Windows.Extensions.xml", + "lib/netcoreapp3.1/System.Windows.Extensions.dll", + "lib/netcoreapp3.1/System.Windows.Extensions.xml", + "runtimes/win/lib/net6.0/System.Windows.Extensions.dll", + "runtimes/win/lib/net6.0/System.Windows.Extensions.xml", + "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.dll", + "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.xml", + "system.windows.extensions.6.0.0.nupkg.sha512", + "system.windows.extensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, "YamlDotNet/16.3.0": { "sha512": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA==", "type": "package", @@ -6147,16 +7689,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -6186,7 +7738,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -6195,8 +7747,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -6220,7 +7772,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -6229,7 +7781,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", diff --git a/BrokerApiCore/obj/project.nuget.cache b/BrokerApiCore/obj/project.nuget.cache index bfb229b..aaaee82 100644 --- a/BrokerApiCore/obj/project.nuget.cache +++ b/BrokerApiCore/obj/project.nuget.cache @@ -1,24 +1,39 @@ { "version": 2, - "dgSpecHash": "wxhyK1LthKY=", + "dgSpecHash": "1KN19Ey1X4g=", "success": true, "projectFilePath": "D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj", "expectedPackageFiles": [ "C:\\Users\\user\\.nuget\\packages\\asyncstatemachine\\1.3.2\\asyncstatemachine.1.3.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\autofac\\8.2.0\\autofac.8.2.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper\\14.0.0\\automapper.14.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.aspnetcore.odata.efcore\\7.0.1\\automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.collection\\11.0.0\\automapper.collection.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.collection.entityframeworkcore\\11.0.0\\automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.contrib.autofac.dependencyinjection\\9.0.0\\automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.data\\9.0.0\\automapper.data.9.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.ef6\\3.0.1\\automapper.ef6.3.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.enummapping\\4.1.0\\automapper.extensions.enummapping.4.1.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.expressionmapping\\8.0.0\\automapper.extensions.expressionmapping.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\aws.logger.core\\3.3.3\\aws.logger.core.3.3.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\aws.logger.nlog\\3.3.4\\aws.logger.nlog.3.3.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\awssdk.cloudwatchlogs\\3.7.305.15\\awssdk.cloudwatchlogs.3.7.305.15.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.core\\3.7.402.39\\awssdk.core.3.7.402.39.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.dynamodbv2\\3.7.406.21\\awssdk.dynamodbv2.3.7.406.21.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.core\\3.7.402.46\\awssdk.core.3.7.402.46.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.dynamodbv2\\3.7.407\\awssdk.dynamodbv2.3.7.407.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\awssdk.ec2\\3.7.330.4\\awssdk.ec2.3.7.330.4.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.opensearchservice\\3.7.404.75\\awssdk.opensearchservice.3.7.404.75.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.s3\\3.7.416.9\\awssdk.s3.3.7.416.9.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.opensearchservice\\3.7.404.81\\awssdk.opensearchservice.3.7.404.81.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.s3\\3.7.416.15\\awssdk.s3.3.7.416.15.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.securitytoken\\3.7.401.89\\awssdk.securitytoken.3.7.401.89.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\axion.concurrenthashset\\1.0.0\\axion.concurrenthashset.1.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\bouncycastle.cryptography\\2.4.0\\bouncycastle.cryptography.2.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\bouncycastle.cryptography\\2.5.1\\bouncycastle.cryptography.2.5.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\commandlineparser\\2.9.1\\commandlineparser.2.9.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler\\0.34.0\\delegatedecompiler.0.34.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler.entityframework\\0.34.0\\delegatedecompiler.entityframework.0.34.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dotnet.multimap\\2.2.1\\dotnet.multimap.2.2.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dumpextensions\\2.0.0\\dumpextensions.2.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\entityframework\\6.5.1\\entityframework.6.5.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\google.protobuf\\3.27.1\\google.protobuf.3.27.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore\\2.63.0\\grpc.aspnetcore.2.63.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore.server\\2.63.0\\grpc.aspnetcore.server.2.63.0.nupkg.sha512", @@ -31,31 +46,35 @@ "C:\\Users\\user\\.nuget\\packages\\grpc.reflection\\2.63.0\\grpc.reflection.2.63.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\jwt\\11.0.0\\jwt.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\logicbuilder.expressions.utils\\7.0.0\\logicbuilder.expressions.utils.7.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\logicbuilder.structures\\7.0.0\\logicbuilder.structures.7.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.2\\microsoft.aspnetcore.authentication.jwtbearer.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.odata\\9.1.1\\microsoft.aspnetcore.odata.9.1.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.memory\\9.0.0\\microsoft.bcl.memory.9.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.diagnostics.netcore.client\\0.2.621003\\microsoft.diagnostics.netcore.client.0.2.621003.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.2\\microsoft.entityframeworkcore.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.2\\microsoft.entityframeworkcore.abstractions.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.2\\microsoft.entityframeworkcore.analyzers.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\9.0.2\\microsoft.entityframeworkcore.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\9.0.2\\microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\9.0.2\\microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.2\\microsoft.entityframeworkcore.design.8.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.2\\microsoft.entityframeworkcore.relational.8.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.tools\\8.0.2\\microsoft.entityframeworkcore.tools.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.0\\microsoft.extensions.caching.memory.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\9.0.2\\microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\9.0.2\\microsoft.extensions.caching.memory.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\9.0.4\\microsoft.extensions.configuration.9.0.4.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.4\\microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.0\\microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.0\\microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.0\\microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.0\\microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.0\\microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.2\\microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.4\\microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.0\\microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.0\\microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", @@ -63,23 +82,29 @@ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.http\\8.0.0\\microsoft.extensions.http.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\8.0.0\\microsoft.extensions.logging.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\9.0.2\\microsoft.extensions.logging.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.2\\microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.objectpool\\6.0.3\\microsoft.extensions.objectpool.6.0.3.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\9.0.4\\microsoft.extensions.options.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.8.0\\microsoft.identitymodel.abstractions.8.8.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.8.0\\microsoft.identitymodel.jsonwebtokens.8.8.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.logging\\8.8.0\\microsoft.identitymodel.logging.8.8.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.4\\microsoft.extensions.primitives.9.0.4.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.9.0\\microsoft.identitymodel.abstractions.8.9.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.9.0\\microsoft.identitymodel.jsonwebtokens.8.9.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.logging\\8.9.0\\microsoft.identitymodel.logging.8.9.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.8.0\\microsoft.identitymodel.tokens.8.8.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.9.0\\microsoft.identitymodel.tokens.8.9.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.core\\8.2.2\\microsoft.odata.core.8.2.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.edm\\8.2.2\\microsoft.odata.edm.8.2.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.modelbuilder\\2.0.0\\microsoft.odata.modelbuilder.2.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.openapi\\1.6.22\\microsoft.openapi.1.6.22.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.spatial\\8.2.2\\microsoft.spatial.8.2.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.win32.systemevents\\6.0.0\\microsoft.win32.systemevents.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.analyzer\\1.5.0\\mongodb.analyzer.1.5.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.bson\\3.3.0\\mongodb.bson.3.3.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.driver\\3.3.0\\mongodb.driver.3.3.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\mono.reflection\\2.0.0\\mono.reflection.2.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mysqlconnector\\2.4.0\\mysqlconnector.2.4.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\neosmart.asynclock\\3.2.1\\neosmart.asynclock.3.2.1.nupkg.sha512", @@ -100,9 +125,13 @@ "C:\\Users\\user\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\rabbitmq.client\\6.8.1\\rabbitmq.client.6.8.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\ssh.net\\2024.2.0\\ssh.net.2024.2.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\ssh.net\\2025.0.0\\ssh.net.2025.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis\\2.8.31\\stackexchange.redis.2.8.31.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis.extensions.core\\11.0.0\\stackexchange.redis.extensions.core.11.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis.extensions.newtonsoft\\11.0.0\\stackexchange.redis.extensions.newtonsoft.11.0.0.nupkg.sha512", @@ -111,27 +140,35 @@ "C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\7.2.0\\swashbuckle.aspnetcore.swagger.7.2.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\7.2.0\\swashbuckle.aspnetcore.swaggergen.7.2.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.0\\system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.8.0\\system.identitymodel.tokens.jwt.8.8.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.configuration.configurationmanager\\6.0.1\\system.configuration.configurationmanager.6.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.data.sqlclient\\4.8.6\\system.data.sqlclient.4.8.6.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\9.0.2\\system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.9.0\\system.identitymodel.tokens.jwt.8.9.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.reactive\\6.0.0\\system.reactive.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\6.0.0\\system.security.accesscontrol.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.cryptography.protecteddata\\6.0.0\\system.security.cryptography.protecteddata.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.permissions\\6.0.0\\system.security.permissions.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.threading.channels\\7.0.0\\system.threading.channels.7.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512" ], diff --git a/BrokerApiCore/obj/project.packagespec.json b/BrokerApiCore/obj/project.packagespec.json index 5afe095..62d9947 100644 --- a/BrokerApiCore/obj/project.packagespec.json +++ b/BrokerApiCore/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","projectName":"BrokerApiCore","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Tools":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"NLog.Web.AspNetCore":{"target":"Package","version":"[5.3.11, )","versionCentrallyManaged":true},"Pomelo.EntityFrameworkCore.MySql":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[7.2.0, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.39","AWSSDK.DynamoDBv2":"3.7.406.21","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.75","AWSSDK.S3":"3.7.416.9","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.4.0","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"8.0.0","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"8.0.1","Microsoft.Extensions.Options":"8.0.2","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2024.2.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.8.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","projectName":"BrokerApiCore","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Tools":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"NLog.Web.AspNetCore":{"target":"Package","version":"[5.3.11, )","versionCentrallyManaged":true},"Pomelo.EntityFrameworkCore.MySql":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[7.2.0, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"14.0.0","AutoMapper.AspNetCore.OData.EFCore":"7.0.1","AutoMapper.Collection":"11.0.0","AutoMapper.Collection.EntityFrameworkCore":"11.0.0","AutoMapper.Contrib.Autofac.DependencyInjection":"9.0.0","AutoMapper.Data":"9.0.0","AutoMapper.EF6":"3.0.1","AutoMapper.Extensions.EnumMapping":"4.1.0","AutoMapper.Extensions.ExpressionMapping":"8.0.0","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"9.0.4","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"9.0.4","Microsoft.Extensions.Options":"9.0.4","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/BrokerApiCore/obj/rider.project.restore.info b/BrokerApiCore/obj/rider.project.restore.info index 7b67913..de1d89a 100644 --- a/BrokerApiCore/obj/rider.project.restore.info +++ b/BrokerApiCore/obj/rider.project.restore.info @@ -1 +1 @@ -17455459552361144 \ No newline at end of file +17460517968336276 \ No newline at end of file diff --git a/BrokerApiServer/Common/ApiControllerBase.cs b/BrokerApiServer/Common/ApiControllerBase.cs index 3a3338e..870697b 100644 --- a/BrokerApiServer/Common/ApiControllerBase.cs +++ b/BrokerApiServer/Common/ApiControllerBase.cs @@ -1,7 +1,6 @@ -namespace BrokerApiServer.Common; - -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; +namespace BrokerApiServer; public class ApiControllerBase: ControllerBase { protected string PlanetId => HttpContext.Items["planet_id"]?.ToString() ?? string.Empty; diff --git a/BrokerApiServer/Common/CommandLineOption.cs b/BrokerApiServer/Common/CommandLineOption.cs index 05ba410..3ebd587 100644 --- a/BrokerApiServer/Common/CommandLineOption.cs +++ b/BrokerApiServer/Common/CommandLineOption.cs @@ -1,6 +1,6 @@ using CommandLine; -namespace BrokerApiServer.Common; +namespace BrokerApiServer; public class CommandLineOption { @@ -9,7 +9,4 @@ public class CommandLineOption [Option('s', "swagger", Default = false, Required = false, HelpText = "Show Swagger Mode")] public bool UseSwagger { get; init; } = false; - - [Option('n', "named-pipe", Default = false, Required = false, HelpText = "User Named Pipe")] - public bool UseNamedPipe { get; init; } = false; } diff --git a/BrokerApiServer/Common/Const.cs b/BrokerApiServer/Common/Const.cs index 05cdc09..e729d46 100644 --- a/BrokerApiServer/Common/Const.cs +++ b/BrokerApiServer/Common/Const.cs @@ -1,4 +1,4 @@ -namespace BrokerApiServer.Common; +namespace BrokerApiServer; public static class Const { diff --git a/BrokerApiServer/Common/PlanetAuthControllerBase.cs b/BrokerApiServer/Common/PlanetAuthControllerBase.cs index 9a5dab3..f1c75de 100644 --- a/BrokerApiServer/Common/PlanetAuthControllerBase.cs +++ b/BrokerApiServer/Common/PlanetAuthControllerBase.cs @@ -1,4 +1,4 @@ -namespace BrokerApiServer.Common; +namespace BrokerApiServer; using Microsoft.AspNetCore.Mvc; diff --git a/BrokerApiServer/Common/RequireAdminAuthAttribute.cs b/BrokerApiServer/Common/RequireAdminAuthAttribute.cs index 47a8163..f0b84c1 100644 --- a/BrokerApiServer/Common/RequireAdminAuthAttribute.cs +++ b/BrokerApiServer/Common/RequireAdminAuthAttribute.cs @@ -1,18 +1,17 @@ using Microsoft.AspNetCore.Mvc.Filters; -namespace BrokerCore.Common; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; -using BrokerApiServer.Common; - using Microsoft.IdentityModel.Tokens; -using ServerCore; using ServerBase; +using ServerCore; -using Services; +namespace BrokerApiServer; + +using BrokerApiCore; /// /// 엑세스 토큰 인증이 필요한 컨트롤러를 지정하는 애노테이션(Attribute) 정의 diff --git a/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs b/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs index 2507ff0..fd61d87 100644 --- a/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs +++ b/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs @@ -1,10 +1,7 @@ using Microsoft.AspNetCore.Mvc.Filters; +using BrokerApiCore; -namespace BrokerCore.Common; - -using BrokerApiServer.Common; - -using Services; +namespace BrokerApiServer; /// /// 엑세스 토큰 인증이 필요한 컨트롤러를 지정하는 애노테이션(Attribute) 정의 diff --git a/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs b/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs index fa7e3f1..9432403 100644 --- a/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs +++ b/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs @@ -1,8 +1,8 @@ -namespace BrokerCore.Common; +using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.AspNetCore.Mvc.Filters; +using BrokerApiCore; -using Services; +namespace BrokerApiServer; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class RequireUserJwtAuthAttribute : System.Attribute, IAsyncActionFilter diff --git a/BrokerApiServer/Common/ResultExceptionFilter.cs b/BrokerApiServer/Common/ResultExceptionFilter.cs index 93501c3..9fff12d 100644 --- a/BrokerApiServer/Common/ResultExceptionFilter.cs +++ b/BrokerApiServer/Common/ResultExceptionFilter.cs @@ -1,15 +1,10 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; -using BrokerApiServer.Common; +using ServerCore; +using BrokerApiCore; -using BrokerCore.ApiModels; -using BrokerCore.Common; - -namespace CaliGameApi.Middlewares; - -using ServerCore; -using ServerBase; +namespace BrokerApiServer; public class ResultExceptionFilter : IExceptionFilter { diff --git a/BrokerApiServer/Common/ResultLoggingMiddleware.cs b/BrokerApiServer/Common/ResultLoggingMiddleware.cs index 081d2ac..b3ba8b5 100644 --- a/BrokerApiServer/Common/ResultLoggingMiddleware.cs +++ b/BrokerApiServer/Common/ResultLoggingMiddleware.cs @@ -1,6 +1,6 @@ -namespace BrokerApiServer.Common; +namespace BrokerApiServer; -using ServerCore; using ServerBase; +using ServerCore; public class ResultLoggingMiddleware : IMiddleware { diff --git a/BrokerApiServer/Common/SwaggerSettingHelper.cs b/BrokerApiServer/Common/SwaggerSettingHelper.cs index 5eaa95e..80a5312 100644 --- a/BrokerApiServer/Common/SwaggerSettingHelper.cs +++ b/BrokerApiServer/Common/SwaggerSettingHelper.cs @@ -2,7 +2,7 @@ using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; -namespace BrokerApiServer.Common; +namespace BrokerApiServer; using Microsoft.OpenApi.Any; diff --git a/BrokerApiServer/Controllers/AdminController.cs b/BrokerApiServer/Controllers/AdminController.cs index 3528974..0dc8b19 100644 --- a/BrokerApiServer/Controllers/AdminController.cs +++ b/BrokerApiServer/Controllers/AdminController.cs @@ -1,17 +1,13 @@ -using Microsoft.AspNetCore.Mvc; -using ServerCommon; -using BrokerCore.ApiModels; -using BrokerCore.Services; - -namespace BrokerApiServer.Controllers; - -using BrokerCore.Common; -using BrokerCore.DbEntity; - -using Common; +using BrokerApiServer; +using Microsoft.AspNetCore.Mvc; using ServerBase; +using ServerCommon; using Swashbuckle.AspNetCore.Annotations; + +using BrokerApiCore; +namespace BrokerApiServer.Controllers; + [Route("api/v1/admin")] [ApiController] // 운영자만 접근 가능한 컨트롤러 diff --git a/BrokerApiServer/Controllers/PlanetController.cs b/BrokerApiServer/Controllers/PlanetController.cs index 5b043e1..6f6a744 100644 --- a/BrokerApiServer/Controllers/PlanetController.cs +++ b/BrokerApiServer/Controllers/PlanetController.cs @@ -1,14 +1,9 @@ -using BrokerCore.ApiModels; -using BrokerCore.Services; - -using Microsoft.AspNetCore.Mvc; - +using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; +using BrokerApiCore; namespace BrokerApiServer.Controllers; -using BrokerCore.Common; - [Route("api/v1/planet")] [ApiController, SwaggerTag("플래닛의 인증 처리")] // 플래닛 인증 컨트롤러 diff --git a/BrokerApiServer/Controllers/PlanetUserController.cs b/BrokerApiServer/Controllers/PlanetUserController.cs index 9c78bbb..f777463 100644 --- a/BrokerApiServer/Controllers/PlanetUserController.cs +++ b/BrokerApiServer/Controllers/PlanetUserController.cs @@ -1,17 +1,10 @@ -using Microsoft.AspNetCore.Mvc; - +using System.ComponentModel; +using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; -namespace BrokerApiServer.Controllers; +using BrokerApiCore; -using System.ComponentModel; - -using BrokerCore.ApiModels; -using BrokerCore.Common; -using BrokerCore.DbEntity; -using BrokerCore.Services; - -using Common; +namespace BrokerApiServer; [Route("api/v1/planet/user")] [ApiController, SwaggerTag("**플래닛 유저의 로그인 및 교환 처리**
- /api/v1/planet/auth를 통해 accessToken을 발급받은 후 사용
- Bearer 형식 Hearder로 인증")] diff --git a/BrokerApiServer/Extensions/AppBuilderExtensions.cs b/BrokerApiServer/Extensions/AppBuilderExtensions.cs index 262d6c8..267c5e4 100644 --- a/BrokerApiServer/Extensions/AppBuilderExtensions.cs +++ b/BrokerApiServer/Extensions/AppBuilderExtensions.cs @@ -1,27 +1,13 @@ -using Microsoft.EntityFrameworkCore; +using System.Text; using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; -using System.Text; - -using ServerCore; using ServerBase; -using ServerCommon; +using ServerCore; +using BrokerApiCore; - -using BrokerCore; -using BrokerCore.Repository; -using BrokerCore.Repository.Context; -using BrokerCore.Services; -using BrokerCore.Common; - -namespace BrokerApiServer.Extensions; - -using BrokerCore.Meta; - -using Common; - -using NLog.Config; +namespace BrokerApiServer; public static class AppBuilderExtensions { diff --git a/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs b/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs index 28bb91a..9a2f16a 100644 --- a/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs +++ b/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs @@ -1,24 +1,16 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ControlCenter.NamedPipe; +using ControlCenter.NamedPipe; using ControlCenter.NamedPipeHost.Manager; using ServerControlCenter; using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; -namespace BrokerApiServer.NamedPipePacketHandler; +namespace BrokerApiServer; public class ForceStopServerMessageReceiver : NamedPipeReceiver { private readonly ServerInfoManager m_info_manager; - + public ForceStopServerMessageReceiver(ServerInfoManager infoManager) { m_info_manager = infoManager; @@ -32,8 +24,8 @@ public class ForceStopServerMessageReceiver : NamedPipeReceiver { private readonly ServerInfoManager m_info_manager; - + public StopServerMessageReceiver(ServerInfoManager infoManager) { m_info_manager = infoManager; @@ -19,11 +19,11 @@ public class StopServerMessageReceiver : NamedPipeReceiver Log.getLogger().debug($"{nameof(StopServerMessageReceiver)}: Receive - message_id[{message_id}] / message[{message}]"); m_info_manager.setServerStatus(ServerStatus.Stop); - + // 정보 전달 대기 await Task.Delay(1_000); - + // process 종료 Environment.Exit(0); } -} \ No newline at end of file +} diff --git a/BrokerApiServer/Program.cs b/BrokerApiServer/Program.cs index b7fe774..5e1435d 100644 --- a/BrokerApiServer/Program.cs +++ b/BrokerApiServer/Program.cs @@ -1,27 +1,19 @@ using System.Reflection; - -using ServerCore; -using ServerBase; -using ServerCommon; - -using BrokerApiServer.Common; -using BrokerApiServer.Extensions; -using CaliGameApi.Middlewares; +using BrokerApiServer; using CommandLine; using ControlCenter.NamedPipeHost.Extensions; +using ServerCore; //============================================================================= // 인자 설정 //============================================================================= var port = 12000; var use_swagger = false; -var use_named_pipe = false; var parsed_arguments = Parser.Default.ParseArguments(args); if (parsed_arguments is Parsed parsed) { port = parsed.Value.Port; use_swagger = parsed.Value.UseSwagger ? true : false; - use_named_pipe = parsed.Value.UseNamedPipe ? true : false; } var cmd_options = new string[] { "--urls", $"http://*:{port}" }; @@ -35,11 +27,8 @@ builder.Services.AddHealthChecks(); builder.Services.AddSwaggerGen(SwaggerSettingHelper.setSwaggerGen); var assemblies = new List(AppDomain.CurrentDomain.GetAssemblies()); -if (use_named_pipe) -{ - builder.Services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi, - ServiceCategory.Caliverse.ToString(), NetworkHelper.getEthernetLocalIPv4(), port); -} +builder.Services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi, + ServiceCategory.Caliverse.ToString(), NetworkHelper.getEthernetLocalIPv4(), port); var app = builder.Build(); app.UseCors("Everything"); @@ -69,9 +58,6 @@ app.Services.GetRequiredService().ApplicationStarted.R }); app.Services.GetRequiredService().ApplicationStopped.Register(Log.shutdown); -if (use_named_pipe) -{ - app.UseNamedPipelineClientManager(); -} +app.UseNamedPipelineClientManager(); app.Run(); diff --git a/BrokerApiServer/Properties/launchSettings.json b/BrokerApiServer/Properties/launchSettings.json index 93f56cf..d16a905 100644 --- a/BrokerApiServer/Properties/launchSettings.json +++ b/BrokerApiServer/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "http": { "commandName": "Project", - "commandLineArgs": "-p 12000 -s", + "commandLineArgs": "-p 12000 -s --named-pipe true", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { diff --git a/BrokerApiTest/ControllerTests/AccontControllerTests.cs b/BrokerApiTest/ControllerTests/AccontControllerTests.cs deleted file mode 100644 index 6342285..0000000 --- a/BrokerApiTest/ControllerTests/AccontControllerTests.cs +++ /dev/null @@ -1,163 +0,0 @@ -namespace BrokerTest.Controllers; - -using System.Net; -using System.Net.Http.Json; -using System.Text.Json; - -using BrokerCore.ApiModels; -using Helper; -using Xunit; - -public class AccountControllerTests -{ - private readonly BrokerTestServer m_server = new BrokerTestServer(); - - [Fact] - public async Task initializeAsync() - { - await Task.CompletedTask; - } - - [Fact] - public async Task Login_ValidRequest_ReturnsOkWithLoginResponse() - { - // Arrange - const string validToken = "valid_web_portal_token"; - const string userGuid = "test_user_guid"; - const string nickname = "test_nickname"; - - var client = m_server.getTestClient(); - Assert.NotNull(client); - var request = new LoginRequest { WebPortalToken = validToken }; - // Act - var response = await client.PostAsJsonAsync("/api/v1/account/login", request); - - // Assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - - // ReadFromJsonAsync 사용 시, 올바른 options 주입 - var login_response = await response.Content.ReadFromJsonAsync(); - - Assert.NotNull(login_response); - Assert.Equal(userGuid, login_response.UserGuid); - Assert.Equal(nickname, login_response.Nickname); - - // mockUserAuthService.Verify(m => m.authByWebPortalToken(validToken), Times.Once); //정확히 한번 호출되었는지 확인 - // mockUserAuthService.VerifyGet(x=>x.UserGuid, Times.AtLeastOnce); //최소 한번 호출되었는지 확인 - // mockUserAuthService.VerifyGet(x=>x.Nickname, Times.AtLeastOnce); - } - - // [Fact] - // public async Task Login_InvalidRequest_EmptyToken_ReturnsBadRequest() - // { - // // Arrange - // var client = _factory.CreateClient(); - // var request = new LoginRequest { WebPortalToken = "" }; // Empty token - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/account/login", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // - // //응답 내용 확인 (선택) - // var errorResponse = await response.Content.ReadFromJsonAsync(_jsonOptions); - // Assert.NotNull(errorResponse); - // Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code); - // Assert.Contains("WebPortalToken does not exist", errorResponse.Message); - // - // } - // - // [Fact] - // public async Task Login_InvalidRequest_NullToken_ReturnsBadRequest() - // { - // // Arrange - // var client = _factory.CreateClient(); - // var request = new LoginRequest { WebPortalToken = null }; // null token - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/account/login", request); - // - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // - // //응답 내용 확인 (선택) - // var errorResponse = await response.Content.ReadFromJsonAsync(_jsonOptions); - // Assert.NotNull(errorResponse); - // Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code); - // Assert.Contains("WebPortalToken does not exist", errorResponse.Message); - // } - // [Fact] - // public async Task Login_InvalidRequest_NullRequest_ReturnsBadRequest() - // { - // // Arrange - // var client = _factory.CreateClient(); - // LoginRequest? request = null; // Null request - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/account/login", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // - // //응답 내용 확인 (선택) - // var errorResponse = await response.Content.ReadFromJsonAsync(_jsonOptions); - // Assert.NotNull(errorResponse); - // Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code); - // Assert.Contains("Request is empty", errorResponse.Message); - // } - // - // [Fact] - // public async Task Login_AuthServiceReturnsFail_ReturnsBadRequest() - // { - // // Arrange - // const string invalidToken = "invalid_token"; - // - // // Mock UserAuthService - // var mockUserAuthService = new Mock(MockBehavior.Strict, null, null,null,null,null); - // mockUserAuthService.Setup(m => m.authByWebPortalToken(invalidToken)) - // .ReturnsAsync(Result.Fail(ServerErrorCode.InvalidToken, "Invalid token")); - // - // - // var client = _factory.WithWebHostBuilder(builder => - // { - // builder.ConfigureTestServices(services => - // { - // services.AddScoped(_ => mockUserAuthService.Object); - // }); - // }).CreateClient(); - // - // - // var request = new LoginRequest { WebPortalToken = invalidToken }; - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/account/login", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // var errorResponse = await response.Content.ReadFromJsonAsync(_jsonOptions); - // Assert.NotNull(errorResponse); - // Assert.Equal((int)ServerErrorCode.InvalidToken, errorResponse.Code); - // Assert.Equal("Invalid token", errorResponse.Message); - // - // mockUserAuthService.Verify(m=>m.authByWebPortalToken(invalidToken), Times.Once); - // } - // - // [Fact] - // public async Task Dummy_ValidRequest_ReturnsOk() - // { - // // Arrange - // var client = _factory.CreateClient(); - // var request = new DummyRequest { Dummy = "test" }; - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/account/dummy", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.OK, response.StatusCode); - // var dummyResponse = await response.Content.ReadFromJsonAsync(); - // Assert.NotNull(dummyResponse); - // Assert.Equal("test", dummyResponse.Dummy); - // } -} diff --git a/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs b/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs index 7443022..91ebeeb 100644 --- a/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs +++ b/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs @@ -1,17 +1,8 @@ -using System.IdentityModel.Tokens.Jwt; -using System.Net.Http.Json; -using System.Security.Claims; -using System.Text.Json; - -using BrokerCore.ApiModels; -using BrokerCore.Common; -using BrokerCore.DbEntity; -using BrokerCore.Services; - +using System.Net.Http.Json; +using BrokerApiCore; using BrokerTest.Helper; namespace BrokerTest.Controllers; - public class CurrencyControllerTests { private readonly BrokerTestServer m_server = new BrokerTestServer(); diff --git a/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs b/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs index 5b086b7..3cd1431 100644 --- a/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs +++ b/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs @@ -1,16 +1,10 @@ -using System.IdentityModel.Tokens.Jwt; -using System.Net.Http.Json; -using System.Security.Claims; -using System.Text.Json; +using System.Net.Http.Json; -using BrokerCore.ApiModels; -using BrokerCore.Common; -using BrokerCore.DbEntity; -using BrokerCore.Services; +using BrokerApiCore; -using BrokerTest.Helper; +using BrokerApiServer; -namespace BrokerTest.Controllers; +namespace BrokerTest; public class DevCurrencyControllerTests { diff --git a/BrokerApiTest/ControllerTests/Dev_PlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/Dev_PlanetUserControllerTests.cs deleted file mode 100644 index afde523..0000000 --- a/BrokerApiTest/ControllerTests/Dev_PlanetUserControllerTests.cs +++ /dev/null @@ -1,179 +0,0 @@ -// using System.Net; -// using System.Net.Http.Json; -// -// using BrokerCore.ApiModels; -// using BrokerCore.DbEntity; -// -// using BrokerTest.Helper; -// -// using ServerCommon; -// -// using Xunit.Abstractions; -// -// namespace BrokerTest.Controllers; -// -// public class DevPlanetUserControllerTests : IAsyncLifetime -// { -// private readonly ITestOutputHelper m_test_output_helper; -// const string m_planet_id = "new_earth"; -// const string m_planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv"; -// const string m_user_guid = "1052b08b52ef4d69a27ee1f40911a72f"; -// private string m_planet_token = string.Empty; -// const string m_remote_server_url = "https://dev.planethub.caliverse.io:12000"; -// private readonly MetaTableTestHelper m_meta_table_test_helper = new(); -// -// private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer(m_remote_server_url); -// -// public DevPlanetUserControllerTests(ITestOutputHelper testOutputHelper) -// { -// m_test_output_helper = testOutputHelper; -// } -// -// private HttpClient getTestClient() -// { -// var client = m_server.getTestClient(); -// if (m_planet_token != string.Empty) -// { -// client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}"); -// } -// -// return client; -// } -// -// private HttpClient getTestClientWithBearer() -// { -// var client = m_server.getTestClient(); -// if (m_planet_token != string.Empty) -// { -// client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}"); -// } -// -// return client; -// } -// -// public async Task InitializeAsync() -// { -// m_meta_table_test_helper.load(); -// -// // Arrange -// var client = getTestClient(); -// var request = new PlanetAuthRequest { PlanetId = m_planet_id, PlanetSecretKey = m_planet_secret_key }; -// -// // Act -// var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request); -// -// // Assert -// response.EnsureSuccessStatusCode(); -// var response_body = await response.Content.ReadFromJsonAsync(); -// Assert.NotNull(response_body); -// Assert.NotEmpty(response_body.AccessToken); -// m_planet_token = response_body.AccessToken; -// } -// -// public async Task DisposeAsync() -// { -// await Task.CompletedTask; -// } -// -// private bool checkError(HttpResponseMessage responseMessage) -// { -// if (responseMessage.StatusCode != HttpStatusCode.OK) -// { -// var error_body = responseMessage.Content.ReadFromJsonAsync().Result; -// Assert.NotNull(error_body); -// m_test_output_helper.WriteLine(error_body.ErrorMessage ?? string.Empty); -// Assert.True(false); -// } -// -// return true; -// } -// -// [Fact(DisplayName = "아이템 교환 주문 컨트롤러 테스트 모든 Meta")] -// public async Task allMetaTests() -// { -// var meta = m_meta_table_test_helper.getMetaTableRef(); -// var meta_tuples = meta.MetaTable.PlanetItemExchangePolicyMetaTable.PlanetItemExchangePolicyDataList -// .Select(x => -// string.Equals(x.CaliverseItemType, CaliverseItemType.Currency.ToString(), -// StringComparison.CurrentCultureIgnoreCase) -// ? (x.ID, Random.Shared.Next(10, 201)) -// : (x.ID, 1)); -// foreach (var meta_tuple in meta_tuples) -// { -// await orderTest(meta_tuple.Item1, meta_tuple.Item2); -// } -// } -// -// private async Task orderTest(string metaId, int metaAmount) -// { -// string order_id; -// { -// // Arrange -// var request_uri = "/api/v1/planet/user/exchange/order/create"; -// var client = getTestClientWithBearer(); -// var exchange_request = new PlanetItemExchangeRequest -// { -// SeasonId = "TEST_SEASON_ID", -// UserGuid = m_user_guid, ExchangeMetaId = metaId, ExchangeMetaAmount = metaAmount, -// }; -// -// // Act -// var exchange_response = await client.PostAsJsonAsync(request_uri, exchange_request); -// -// // Assert -// checkError(exchange_response); -// var exchange_response_body = -// await exchange_response.Content.ReadFromJsonAsync(); -// Assert.NotNull(exchange_response_body); -// Assert.NotNull(exchange_response_body.ExchangeOrder.OrderId); -// order_id = exchange_response_body.ExchangeOrder.OrderId; -// } -// { -// // Arrange -// var request_uri = "/api/v1/planet/user/exchange/order/list"; -// var client = getTestClientWithBearer(); -// var list_request = new PlanetItemExchangeOrderListRequest -// { -// UserGuid = m_user_guid, Option = FindOption.All, ExchangeMetaId = metaId, -// }; -// -// // Act -// var list_response = await client.PostAsJsonAsync(request_uri, list_request); -// checkError(list_response); -// -// // Assert -// list_response.EnsureSuccessStatusCode(); -// var list_response_body = -// await list_response.Content.ReadFromJsonAsync(); -// Assert.NotNull(list_response_body); -// Assert.NotNull(list_response_body.Orders); -// -// var order = list_response_body.Orders.FirstOrDefault(x => x.OrderId == order_id); -// Assert.NotNull(order); -// Assert.Equal(ExchangeOrderStatus.Pending, order.OrderStatus); -// } -// { -// // Arrange -// var request_uri = "/api/v1/planet/user/exchange/order/complete"; -// var client = getTestClientWithBearer(); -// -// // Act -// var complete_request = new PlanetItemExchangeCompleteRequest -// { -// UserGuid = m_user_guid, ExchangeOrderId = order_id -// }; -// var complete_response = -// await client.PostAsJsonAsync(request_uri, complete_request); -// checkError(complete_response); -// -// // Assert -// complete_response.EnsureSuccessStatusCode(); -// var complete_response_body = -// await complete_response.Content.ReadFromJsonAsync(); -// Assert.NotNull(complete_response_body); -// Assert.NotNull(complete_response_body.ExchangeOrder); -// Assert.Equal(order_id, complete_response_body.ExchangeOrder.OrderId); -// Assert.Equal(ExchangeOrderStatus.Completed, complete_response_body.ExchangeOrder.OrderStatus); -// } -// } -// } diff --git a/BrokerApiTest/ControllerTests/PlanetControllerTests.cs b/BrokerApiTest/ControllerTests/PlanetControllerTests.cs index 8ee591f..df3f1e4 100644 --- a/BrokerApiTest/ControllerTests/PlanetControllerTests.cs +++ b/BrokerApiTest/ControllerTests/PlanetControllerTests.cs @@ -1,16 +1,14 @@ -namespace BrokerTest.Controllers; - -using System.IdentityModel.Tokens.Jwt; -using System.Net; +using System.IdentityModel.Tokens.Jwt; using System.Net.Http.Json; using System.Security.Claims; using System.Text.Json; -using BrokerCore.ApiModels; -using BrokerCore.Common; -using BrokerCore.Services; -using Helper; -using Xunit; +using BrokerApiCore; + +using BrokerApiServer; +using BrokerTest.Helper; + +namespace BrokerTest; public class PlanetControllerTests { private readonly BrokerTestServer m_server = new(); @@ -49,40 +47,4 @@ public class PlanetControllerTests Assert.NotNull(auth_response.AccessToken); Assert.NotEqual(auth_response.AccessToken, string.Empty); } - - // [Fact] - // public async Task Auth_InvalidRequest_EmptyPlanetId_ReturnsBadRequest() - // { - // // Arrange - // var client = m_server.getTestClient(); - // var request = new PlanetAuthRequest { PlanetId = "", PlanetSecretKey = "test_secret_key" }; - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // var error_response = await response.Content.ReadFromJsonAsync(m_json_options); - // Assert.NotNull(error_response); - // Assert.Equal((int)ServerErrorCode.InvalidRequest, error_response.Code); - // Assert.Contains("planet id is required", error_response.Message); - // } - // - // [Fact] - // public async Task Auth_InvalidRequest_NullPlanetSecretKey_ReturnsBadRequest() - // { - // // Arrange - // var client = m_server.getTestClient(); - // var request = new PlanetAuthRequest { PlanetId = "test_planet_id", PlanetSecretKey = null }; - // - // // Act - // var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request); - // - // // Assert - // Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - // var error_response = await response.Content.ReadFromJsonAsync(m_json_options); - // Assert.NotNull(error_response); - // Assert.Equal((int)ServerErrorCode.InvalidRequest, error_response.Code); - // Assert.Contains("planet access key is required", error_response.Message); - // } } diff --git a/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs index d201ea2..fa9c23e 100644 --- a/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs +++ b/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs @@ -1,8 +1,9 @@ using System.Net; using System.Net.Http.Json; -using BrokerCore.ApiModels; -using BrokerCore.DbEntity; +using BrokerApiCore; + +using BrokerApiServer; using BrokerTest.Helper; @@ -10,8 +11,7 @@ using ServerCommon; using Xunit.Abstractions; -namespace BrokerTest.Controllers; - +namespace BrokerTest; public class PlanetUserControllerTests : IAsyncLifetime { private readonly ITestOutputHelper m_test_output_helper; diff --git a/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs index 942cd71..0fdafe5 100644 --- a/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs +++ b/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs @@ -1,19 +1,16 @@ using System.Net; using System.Net.Http.Json; -using BrokerCore.ApiModels; -using BrokerCore.DbEntity; +using BrokerApiCore; -using BrokerTest.Helper; - -using Microsoft.IdentityModel.Tokens; +using Xunit.Abstractions; using ServerCommon; using ServerCore; -using Xunit.Abstractions; - -namespace BrokerTest.Controllers; +using BrokerApiServer; +using BrokerTest.Helper; +namespace BrokerTest; public class QaPlanetUserControllerTests : IAsyncLifetime { private readonly ITestOutputHelper m_test_output_helper; diff --git a/BrokerApiTest/ControllerTests/QaCurrencyControllerTests.cs b/BrokerApiTest/ControllerTests/QaCurrencyControllerTests.cs deleted file mode 100644 index 3f5c866..0000000 --- a/BrokerApiTest/ControllerTests/QaCurrencyControllerTests.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System.IdentityModel.Tokens.Jwt; -using System.Net; -using System.Net.Http.Json; -using System.Security.Claims; -using System.Text.Json; - -using BrokerCore.ApiModels; -using BrokerCore.Common; -using BrokerCore.DbEntity; -using BrokerCore.Services; - -using BrokerTest.Helper; - -using Xunit.Abstractions; - -namespace BrokerTest.Controllers; - -public class QaCurrencyControllerTests -{ - private readonly ITestOutputHelper m_test_output_helper; - - public QaCurrencyControllerTests(ITestOutputHelper testOutputHelper) - { - m_test_output_helper = testOutputHelper; - } - // private readonly BrokerTestServer m_server = new BrokerTestServer(); - - public HttpClient getTestClient() - { - return new HttpClient { BaseAddress = new Uri("https://qa.planethub.caliverse.io:12000") }; - } - - [Fact] - public async Task initializeAsync() - { - await Task.CompletedTask; - } - - [Fact] - public async Task Auth_ValidRequest_ReturnsOkWithAccessToken() - { - // Arrange - const string planet_id = "new_earth"; - const string planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv"; - var planet_token = string.Empty; - var order_id = string.Empty; - { - var client = getTestClient(); - var request = new PlanetAuthRequest { PlanetId = planet_id, PlanetSecretKey = planet_secret_key }; - - // Act - var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request); - - // Assert - response.EnsureSuccessStatusCode(); - var response_body = await response.Content.ReadFromJsonAsync(); - Assert.NotNull(response_body); - planet_token = response_body.AccessToken; - } - { - var client = getTestClient(); - var request = new ExchangeOrderRequest - { - UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Sapphire = 10, Emerald = 10 - }; - client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}"); - var response = await client.PostAsJsonAsync("/api/v1/exchange/order/create", request); - if (response.StatusCode == HttpStatusCode.BadRequest) - { - var response_body_error = await response.Content.ReadFromJsonAsync(); - Assert.NotNull(response_body_error); - m_test_output_helper.WriteLine(response_body_error.ErrorMessage); - // Assert.Contains("Insufficient balance", response_body_error); - return; - } - response.EnsureSuccessStatusCode(); - var response_body = await response.Content.ReadFromJsonAsync(); - Assert.NotNull(response_body); - Assert.NotNull(response_body.OrderId); - order_id = response_body.OrderId; - // Assert - } - - //UserGuid:1052b08b52ef4d69a27ee1f40911a72f - { - var client = getTestClient(); - var request = new ExchangeOrderListRequest - { - UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Option = FindOption.All - }; - client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}"); - var response = await client.PostAsJsonAsync("/api/v1/exchange/order/list", request); - response.EnsureSuccessStatusCode(); - var response_body = await response.Content.ReadFromJsonAsync(); - Assert.NotNull(response_body); - Assert.NotNull(response_body.Orders); - // Assert - } - - { - var client = getTestClient(); - var request = - new ExchangeOrderCompleteRequest { UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", OrderId = order_id }; - client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}"); - var response = await client.PostAsJsonAsync("/api/v1/exchange/order/complete", request); - response.EnsureSuccessStatusCode(); - var response_body = await response.Content.ReadFromJsonAsync(); - Assert.NotNull(response_body); - Assert.NotNull(response_body.OrderId); - Assert.Equal(order_id, response_body.OrderId); - Assert.Equal(ExchangeOrderStatus.Completed, response_body.Status); - // Assert - } - } -} diff --git a/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs index e9c6a32..6cb9783 100644 --- a/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs +++ b/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs @@ -1,19 +1,17 @@ using System.Net; using System.Net.Http.Json; -using BrokerCore.ApiModels; -using BrokerCore.DbEntity; +using BrokerApiCore; -using BrokerTest.Helper; - -using Microsoft.IdentityModel.Tokens; +using Xunit.Abstractions; using ServerCommon; using ServerCore; -using Xunit.Abstractions; -namespace BrokerTest.Controllers; +using BrokerApiServer; +using BrokerTest.Helper; +namespace BrokerTest; public class StagePlanetUserControllerTests : IAsyncLifetime { private readonly ITestOutputHelper m_test_output_helper; @@ -28,7 +26,7 @@ public class StagePlanetUserControllerTests : IAsyncLifetime private readonly MetaTableTestHelper m_meta_table_test_helper = new(); // private readonly IBrokerTestServer m_server = new BrokerTestServer(); - private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://qa.planethub.caliverse.io:12000"); + private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://stage.planethub.caliverse.io:12000"); public StagePlanetUserControllerTests(ITestOutputHelper testOutputHelper) { diff --git a/BrokerApiTest/DocQuery/DataExample.cs b/BrokerApiTest/DocQuery/DataExample.cs index 1a786a4..39e2780 100644 --- a/BrokerApiTest/DocQuery/DataExample.cs +++ b/BrokerApiTest/DocQuery/DataExample.cs @@ -1,123 +1,7 @@ -using PlatformTest.DbQuery; - -using ServerCommon; - + using ServerCore; using ServerBase; -using USER_GUID = System.String; - - -// public class DBQUserTest : QueryExecutorBase -// { -// private string m_combination_key_for_pk = string.Empty; -// private string m_combination_key_for_sk = string.Empty; -// private UserTestEntity? m_user_test; -// private DynamoDbClient m_dynamoDbClient; -// -// public DBQUserTest(string combinationKeyForPK, string combinationKeyForSK, DynamoDbClient dynamoDbClient) -// : base(nameof(DBQUserTest)) -// { -// m_combination_key_for_pk = combinationKeyForPK; -// m_combination_key_for_sk = combinationKeyForSK; -// m_dynamoDbClient = dynamoDbClient; -// } -// -// //=================================================================================================== -// // DB 쿼리 직전에 준비해야 할 로직들을 작성한다. -// //=================================================================================================== -// public override async Task onPrepareQuery() -// { -// var result = new Result(); -// -// var user_test = getOwner(); -// NullReferenceCheckHelper.throwIfNull(user_test, () => "user is null !!!"); -// -// var query_batch = getQueryBatch(); -// NullReferenceCheckHelper.throwIfNull(query_batch, -// () => $"query_batch is null !!! - {user_test.toBasicString()}"); -// -// var db_connector = query_batch.getDynamoDbConnector(); -// NullReferenceCheckHelper.throwIfNull(db_connector, -// () => $"db_connector is null !!! - {user_test.toBasicString()}"); -// -// await DynamoDBDocBaseHelper.makePrimaryKey(m_combination_key_for_pk, m_combination_key_for_sk); -// -// // var ctxs = new List(); -// // -// // (result, var user_doc) = await m_user_test.onCopyToDocument(); -// -// -// return Task.FromResult(result); -// } -// -// //=================================================================================================== -// // onPrepareQuery()를 성공할 경우 호출된다. -// //=================================================================================================== -// public override async Task onQuery() -// { -// var result = new Result(); -// var err_msg = string.Empty; -// -// var user = getOwner(); -// NullReferenceCheckHelper.throwIfNull(user, () => "user is null !!!"); -// -// var query_batch = getQueryBatch(); -// NullReferenceCheckHelper.throwIfNull(query_batch, () => $"query_batch is null !!! - {user.toBasicString()}"); -// -// var db_connector = query_batch.getDynamoDbConnector(); -// -// var user_doc = new UserTestDoc(m_combination_key_for_pk, m_combination_key_for_sk); -// var user_test_base = new UserTestEntity(EntityType.None); -// var user_test_base_attrib = user_test_base.getEntityAttribute(); -// NullReferenceCheckHelper.throwIfNull(user_test_base_attrib, () => $"user_test_base_attrib is null !!!"); -// -// user_test_base_attrib.UserId = m_combination_key_for_pk; -// user_test_base_attrib.Name = m_combination_key_for_sk; -// -// var user_test_base_action = user_test_base.getEntityAction(); -// NullReferenceCheckHelper.throwIfNull(user_test_base_action, () => $"user_test_base_action is null !!!"); -// -// result = await user_test_base_action.tryInsertUser(m_combination_key_for_pk, m_combination_key_for_sk); -// if (result.isFail()) -// { -// return result; -// } -// -// var query_context = new DynamoDbDocumentQueryContext(user_doc, QueryType.Insert); -// await query_batch.addQuery(new QueryExecutorBase("InsertUser") -// { -// onPrepareQuery = () => Task.FromResult(new Result()), -// onQuery = () => Task.FromResult(new Result()), -// onQueryResponseCommit = () => Task.CompletedTask, -// onQueryResponseRollback = (errorResult) => Task.CompletedTask -// }); -// -// var result = await QueryHelper.sendQueryAndBusinessLog(query_batch); -// if (result.isFail()) -// { -// return result; -// } -// -// return result; -// } -// -// //=================================================================================================== -// // DB 쿼리를 성공하고, doFnCommit()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //=================================================================================================== -// public override Task onQueryResponseCommit() -// { -// return Task.CompletedTask; -// } -// -// //=================================================================================================== -// // DB 쿼리를 실패하고, doFnRollback()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //=================================================================================================== -// public override Task onQueryResponseRollback(Result errorResult) -// { -// return Task.CompletedTask; -// } -// } - +namespace BrokerTest; public class UserTestActorLog : ILogActor { } diff --git a/BrokerApiTest/DocQuery/DynamoDbClientTests.cs b/BrokerApiTest/DocQuery/DynamoDbClientTests.cs index 5c827e2..db20e2f 100644 --- a/BrokerApiTest/DocQuery/DynamoDbClientTests.cs +++ b/BrokerApiTest/DocQuery/DynamoDbClientTests.cs @@ -1,4 +1,3 @@ -namespace PlatformTest.DbQuery; using System.Threading.Tasks; @@ -13,6 +12,7 @@ using ServerBase; using ServerCommon; +namespace BrokerTest; public class DynamoDbClientTests { private ServerConfig? m_config; diff --git a/BrokerApiTest/DocQuery/EntityBaseTests.cs b/BrokerApiTest/DocQuery/EntityBaseTests.cs index 1b6bbca..9f68a24 100644 --- a/BrokerApiTest/DocQuery/EntityBaseTests.cs +++ b/BrokerApiTest/DocQuery/EntityBaseTests.cs @@ -1,12 +1,7 @@ -namespace PlatformTest.DbQuery; - -using Amazon; -using Amazon.DynamoDBv2; - -using ServerCommon; - -using ServerCore; using ServerBase; +using ServerCore; +using ServerBase; +namespace BrokerTest; public class EntityBaseTests { private readonly DynamoDbClient m_dynamo_db_client; diff --git a/BrokerApiTest/DocQuery/UserTestAttrib.cs b/BrokerApiTest/DocQuery/UserTestAttrib.cs index 513cf6a..5e62470 100644 --- a/BrokerApiTest/DocQuery/UserTestAttrib.cs +++ b/BrokerApiTest/DocQuery/UserTestAttrib.cs @@ -3,6 +3,7 @@ using ServerBase; using ServerCommon; +namespace BrokerTest; public class UserTestAttrib : AttribBase { [JsonProperty("user_id")] diff --git a/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs b/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs index 55aa2f4..2844063 100644 --- a/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs +++ b/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs @@ -1,11 +1,10 @@ -namespace PlatformTest.DbQuery; - + using Microsoft.AspNetCore.Identity; using ServerCommon; using ServerCore; using ServerBase; - +namespace BrokerTest; public class UserTestDeleteOneAction : EntityActionBase { public UserTestDeleteOneAction(EntityBase owner) : base(owner) diff --git a/BrokerApiTest/DocQuery/UserTestDoc.cs b/BrokerApiTest/DocQuery/UserTestDoc.cs index 831b00b..fcfad34 100644 --- a/BrokerApiTest/DocQuery/UserTestDoc.cs +++ b/BrokerApiTest/DocQuery/UserTestDoc.cs @@ -1,9 +1,7 @@ using ServerCommon; using ServerCore; using ServerBase; - -// DynamoDbDocBase는 리파지토리로 이해하면 편할 듯 -// AttribBase: db에 저장될 데이터 +namespace BrokerTest; public sealed class UserTestDoc : DynamoDbDocBase { private const string m_prefix_of_pk = "user_test#"; diff --git a/BrokerApiTest/DocQuery/UserTestEntity.cs b/BrokerApiTest/DocQuery/UserTestEntity.cs index 5bf5f0f..e179914 100644 --- a/BrokerApiTest/DocQuery/UserTestEntity.cs +++ b/BrokerApiTest/DocQuery/UserTestEntity.cs @@ -1,9 +1,7 @@ -using PlatformTest.DbQuery; - -using ServerCommon; - -using ServerCore; using ServerBase; +using ServerCore; +using ServerBase; +namespace BrokerTest; // EntityBase: EntityAttribute와 EntityAction을 관리하는 컨테이너 public class UserTestEntity : EntityBase, IWithLogActor { diff --git a/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs b/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs index f0c6fd5..84e633f 100644 --- a/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs +++ b/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs @@ -4,6 +4,7 @@ using ServerCore; using ServerBase; using ThirdParty.Json.LitJson; +namespace BrokerTest; // EntityAttributeBase를 상속 받은 개체는 메모리에 사용될 내용임 // 스토리지에 저장은 UsrTestDoc:DynamoDbDocBase에서 처리함 public class UserTestEntityAttribute : EntityAttributeBase diff --git a/BrokerApiTest/DocQuery/UserTestFindOneAction.cs b/BrokerApiTest/DocQuery/UserTestFindOneAction.cs index 61019fd..cc3782c 100644 --- a/BrokerApiTest/DocQuery/UserTestFindOneAction.cs +++ b/BrokerApiTest/DocQuery/UserTestFindOneAction.cs @@ -1,7 +1,10 @@ -using ServerCommon; +using BrokerTest; + +using ServerCommon; using ServerCore; using ServerBase; +namespace BrokerTest; public class UserTestFindOneAction : EntityActionBase { public UserTestFindOneAction(UserTestEntity owner) : base(owner) diff --git a/BrokerApiTest/DocQuery/UserTestInsertAction.cs b/BrokerApiTest/DocQuery/UserTestInsertAction.cs index 007af7f..01c7364 100644 --- a/BrokerApiTest/DocQuery/UserTestInsertAction.cs +++ b/BrokerApiTest/DocQuery/UserTestInsertAction.cs @@ -2,6 +2,7 @@ using ServerCore; using ServerBase; +namespace BrokerTest; public class UserTestInsertAction : EntityActionBase { public UserTestInsertAction(EntityBase owner) : base(owner) diff --git a/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs b/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs index 3580862..4cc19e4 100644 --- a/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs +++ b/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs @@ -1,4 +1,6 @@ -using ServerCommon; +using BrokerTest; + +using ServerCommon; using ServerCore; using ServerBase; diff --git a/BrokerApiTest/EntityTests/EntityMailTests.cs b/BrokerApiTest/EntityTests/EntityMailTests.cs index 89efb75..50a3d85 100644 --- a/BrokerApiTest/EntityTests/EntityMailTests.cs +++ b/BrokerApiTest/EntityTests/EntityMailTests.cs @@ -1,8 +1,5 @@ -using BrokerCore.Common; -using BrokerCore.Entity; -using BrokerCore.Entity.Actions; - -using BrokerTest.Helper; + +using BrokerApiCore; using Microsoft.Extensions.DependencyInjection; @@ -10,10 +7,9 @@ using ServerCore; using ServerBase; using ServerCommon; -using BrokerApiServer.Extensions; - -namespace BrokerTest.Entity; - +using BrokerApiServer; +using BrokerTest.Helper; +namespace BrokerTest; public class EntityMailTests : IAsyncLifetime { private readonly IServiceCollection m_services; diff --git a/BrokerApiTest/EntityTests/EntityTests.cs b/BrokerApiTest/EntityTests/EntityTests.cs index 776a79e..d917a78 100644 --- a/BrokerApiTest/EntityTests/EntityTests.cs +++ b/BrokerApiTest/EntityTests/EntityTests.cs @@ -1,14 +1,11 @@ -namespace BrokerTest.Entity; +using BrokerApiCore; - -using BrokerCore; -using BrokerCore.Entity; - - -using ServerCore; using ServerBase; using ServerCommon; +using BrokerApiServer; + +namespace BrokerTest; public class EntityTests { private readonly BrokerServerLogic m_logic; @@ -34,26 +31,6 @@ public class EntityTests m_dynamo_db_client = m_logic.getDynamoDbClient(); } - [Fact] - public async Task userBaseTest() - { - // var server_logic = new BrokerServerLogic(); - // var user = new UserEntity(); - // var initializers = new Initializers(); - // initializers.appendInitializer(user); - // - // foreach (var user_entity in initializers.getInitializers().Cast()) - // { - // _ = user_entity?.onInit(); - // } - // - // var action = user.getEntityAction(); - // var result = await action.onInit(); - // result = await action.login("account_id"); - // Assert.True(result.isSuccess()); - await Task.CompletedTask; - } - [Fact] public async Task userAuthEntityTest() { diff --git a/BrokerApiTest/Etc/SecurityKeyTests.cs b/BrokerApiTest/Etc/SecurityKeyTests.cs index 7ad3c44..3eb9f66 100644 --- a/BrokerApiTest/Etc/SecurityKeyTests.cs +++ b/BrokerApiTest/Etc/SecurityKeyTests.cs @@ -1,20 +1,8 @@ -using BrokerCore.Common; - -using Microsoft.Extensions.Logging; - -namespace BrokerTest.Etc; +using BrokerApiCore; +namespace BrokerTest; public class SecurityKeyTests { - // Constructor - // public SecurityKeyTests(ILogger logger) - // { - // this.m_logger = logger; - // } - // - // private readonly ILogger m_logger; - - // Test method to check if the security key is generated correctly [Fact] public void testSecurityKeyGeneration() { @@ -23,13 +11,4 @@ public class SecurityKeyTests Assert.NotNull(result_hex); Assert.NotEmpty(result_base64); } - // - // // Test method to check if the security key is valid - // [Fact] - // public void testSecurityKey() - // { - // var result_key = Helpers.generateSecureKey(); - // Assert.NotNull(result_key); - // Assert.NotEmpty(result_key); - // } } diff --git a/BrokerApiTest/Helper/BrokerTestServer.cs b/BrokerApiTest/Helper/BrokerTestServer.cs index 483887a..cd1d2d5 100644 --- a/BrokerApiTest/Helper/BrokerTestServer.cs +++ b/BrokerApiTest/Helper/BrokerTestServer.cs @@ -2,22 +2,16 @@ using NLog.Extensions.Logging; -using ServerCore; using ServerBase; - -namespace BrokerTest.Helper; - -using System.Reflection; - -using BrokerApiServer.Common; -using BrokerApiServer.Controllers; -using BrokerApiServer.Extensions; - -using CaliGameApi.Middlewares; - using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using System.Reflection; + +using BrokerApiServer; +using BrokerApiServer.Controllers; + +namespace BrokerTest; public interface IBrokerTestServer { HttpClient getTestClient(); @@ -86,7 +80,7 @@ public class BrokerTestServer: IBrokerTestServerLocal var assembly = Assembly.GetAssembly(typeof(PlanetUserController)); Assert.NotNull(assembly); builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); }) - .AddApplicationPart(assembly); // 이유는 모르겠지만 이게 없으면 테스트에서 404 에러 발생 - 컨트롤러가 없음 + .AddApplicationPart(assembly); // 이게 없으면 테스트에서 404 에러 발생 - 컨트롤러가 없음 builder.Services.AddHealthChecks(); builder.Services.AddEndpointsApiExplorer(); diff --git a/BrokerApiTest/Helper/DocRepo/AccountDocRepo.cs b/BrokerApiTest/Helper/DocRepo/AccountDocRepo.cs deleted file mode 100644 index ab7fc2f..0000000 --- a/BrokerApiTest/Helper/DocRepo/AccountDocRepo.cs +++ /dev/null @@ -1,19 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// -// public class AccountDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public AccountDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, AccountBaseAttrib?)> findAccountBaseAttrib(string accountId) -// { -// var (result, doc) = await AccountBaseDoc.findUserGuidFromAccountId(m_dynamo_db_client, accountId); -// return (result, doc?.getAttrib()); -// } -// } diff --git a/BrokerApiTest/Helper/DocRepo/CaliumEventDocRepo.cs b/BrokerApiTest/Helper/DocRepo/CaliumEventDocRepo.cs deleted file mode 100644 index 09c1739..0000000 --- a/BrokerApiTest/Helper/DocRepo/CaliumEventDocRepo.cs +++ /dev/null @@ -1,53 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// using ServerCommon.EchoSystem.Models; -// -// using ServerCore; using ServerBase; -// -// public class CaliumEventDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumEventDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// // public async Task<(Result, CaliumEventAttrib?)> createOne(string userGuid) -// // { -// // var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// // if (result_pk.isFail() || primary_key_object == null) -// // { -// // return (result_pk, null); -// // } -// // -// // var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// // var (result, doc) = -// // await m_dynamo_db_client.simpleInsertDocument(config); -// // var attrib = doc?.getAttrib(); -// // return (result, attrib); -// // } -// public async Task createOne(string userGuid, CaliumEventRequest request, bool isRetry) -// { -// var doc = new CaliumEventDoc(request.m_event_id); -// var attrib = doc.getAttrib(); -// NullReferenceCheckHelper.throwIfNull(attrib, () => $"calium event attrib is null !!! - userGuid[{userGuid}]"); -// -// attrib.UserGuid = userGuid; -// attrib.EventData.m_server_type = request.m_server_type; -// attrib.EventData.m_event_type = request.m_event_type; -// attrib.EventData.m_sub_type = request.m_sub_type; -// attrib.EventData.m_div_type = request.m_div_type; -// attrib.EventData.m_div_id = request.m_div_id; -// attrib.EventData.m_calium_delta = request.m_calium_delta; -// attrib.EventData.m_sapphire_delta = request.m_sapphire_delta; -// attrib.EventData.m_current_epoch = request.m_current_epoch; -// attrib.EventData.m_current_inflation_rate = request.m_current_inflation_rate; -// attrib.Status = isRetry ? CaliumEventStatus.Regist : CaliumEventStatus.Failed; -// -// await m_dynamo_db_client.simpleInsertDocumentWithDocType(doc); -// return request.m_event_id; -// } -// -// } diff --git a/BrokerApiTest/Helper/DocRepo/CaliumStorageDocRepo.cs b/BrokerApiTest/Helper/DocRepo/CaliumStorageDocRepo.cs deleted file mode 100644 index 5cf6446..0000000 --- a/BrokerApiTest/Helper/DocRepo/CaliumStorageDocRepo.cs +++ /dev/null @@ -1,28 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// -// public class CaliumStorageDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumStorageDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, CaliumStorageAttrib?)> findOne(string userGuid) -// { -// var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result_pk.isFail() || primary_key_object == null) -// { -// return (result_pk, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// var (result, doc) = -// await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// var attrib = doc?.getAttrib(); -// return (result, attrib); -// } -// } diff --git a/BrokerApiTest/Helper/DocRepo/CaliumStorageRepo.cs b/BrokerApiTest/Helper/DocRepo/CaliumStorageRepo.cs deleted file mode 100644 index 0804d4b..0000000 --- a/BrokerApiTest/Helper/DocRepo/CaliumStorageRepo.cs +++ /dev/null @@ -1,30 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using Common; -// -// using ServerCommon; -// -// public class CaliumStorageRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumStorageRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, CaliumStorageAttrib?)> findOne(string userGuid) -// { -// var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result_pk.isFail() || primary_key_object == null) -// { -// return (result_pk, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// var (result, doc) = -// await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// var attrib = doc?.getAttrib(); -// return (result, attrib); -// } -// } diff --git a/BrokerApiTest/Helper/DocRepo/MoneyDocRepo.cs b/BrokerApiTest/Helper/DocRepo/MoneyDocRepo.cs deleted file mode 100644 index caddd1a..0000000 --- a/BrokerApiTest/Helper/DocRepo/MoneyDocRepo.cs +++ /dev/null @@ -1,445 +0,0 @@ -// using Amazon.DynamoDBv2; -// using Amazon.DynamoDBv2.Model; -// -// using ServerCommon; -// -// using ServerCore; using ServerBase; -// -// namespace BrokerCore.Repository; -// -// using BrokerApiServer.Common; -// -// public class BrokerApiLogActor : ILogActor -// { -// public string getActorGuid() => "broker"; -// } -// -// public class BrokerApiWithLogActor : EntityBase, IWithLogActor -// { -// public readonly EntityType m_entity_type = EntityType.Money; -// -// public BrokerApiWithLogActor() : base(EntityType.Money) -// { -// } -// -// //public BrokerApiWithLogActor(string masterGuid) : base(EntityType.Money, masterGuid) -// //{ -// //} -// -// public ILogActor toLogActor() -// { -// return new BrokerApiLogActor(); -// } -// } -// -// public class DbqChangeSapphire : QueryExecutorBase -// { -// private readonly double m_delta; -// private PrimaryKey? m_primary_key; -// private readonly string m_user_guid; -// -// public DbqChangeSapphire(string userGuid, double delta) : base(nameof(DbqChangeSapphire)) -// { -// m_delta = delta; -// m_user_guid = userGuid; -// } -// -// public override async Task onPrepareQuery() -// { -// (var result, m_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey(m_user_guid); -// return result; -// } -// -// public override async Task onQuery() -// { -// var owner = getOwner(); -// -// // 부모 인스턴스의 정보를 사용하여 필요한 데이터를 가져온다. (여기서는 ...) -// var query_batch = getQueryBatch() as QueryBatch; -// NullReferenceCheckHelper.throwIfNull(query_batch, () => $"query_batch is null !!! - {owner.toBasicString()}"); -// -// var query_runner_with_item_request = query_batch.getQueryRunner(); -// NullReferenceCheckHelper.throwIfNull(query_runner_with_item_request, -// () => $"query_runner_with_item_request is null !!! - {owner.toBasicString()}"); -// -// var db_connector = query_batch.getDynamoDbConnector(); -// var (result, update_request) = makeUpdateItemRequest(); -// if (result.isFail()) -// { -// return result; -// } -// -// NullReferenceCheckHelper.throwIfNull(update_request, -// () => $"update_request is null !!! - {owner.toBasicString()}"); -// -// var exception_handler = new DynamoDbQueryExceptionNotifier.ExceptionHandler( -// DynamoDbQueryExceptionNotifier.ConditionalCheckFailed, ServerErrorCode.LackOfTotalCalium); -// -// var query_context = update_request.createItemRequestQueryContext(QueryType.Update, exception_handler); -// return await query_runner_with_item_request.tryRegisterQueryContext(query_context); -// } -// -// //===================================================================================== -// // DB 쿼리를 성공하고, doFnCommit()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //===================================================================================== -// public override Task onQueryResponseCommit() -// { -// return Task.CompletedTask; -// } -// -// //===================================================================================== -// // DB 쿼리를 실패하고, doFnRollback()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //===================================================================================== -// public override Task onQueryResponseRollback(Result errorResult) -// { -// return Task.CompletedTask; -// } -// -// private (Result, UpdateItemRequest?) makeUpdateItemRequest() -// { -// Guard.Against.isNull(m_primary_key, (BrokerApiErrorCode)ServerErrorCode.DynamoDbPrimaryKeyNotFound, "primary key is null"); -// var attribute_value_with_primary_key = m_primary_key.toKeyWithAttributeValue(); -// -// var currency_name = MoneyAttribExtensions.getKeyNameFromType(CurrencyType.Sapphire); -// var result = new Result(); -// var dynamo_db_client = getQueryBatch()?.getDynamoDbConnector(); -// NullReferenceCheckHelper.throwIfNull(dynamo_db_client, () => $"dynamo_db_client is null !!!"); -// -// var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(dynamo_db_client.getTableName()); -// query_builder.withKeys(attribute_value_with_primary_key); -// -// var target_doc = new MoneyDoc(); -// var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// var target_key = JsonHelper.getJsonPropertyName(currency_name); -// var (is_success, attribute_expression) = -// DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// if (false == is_success) -// { -// var err_msg = -// $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// Log.getLogger().error(result.toBasicString()); -// -// return (result, null); -// } -// -// query_builder.withExpressionAttributeNames( -// DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// -// var update_expression = (m_delta >= 0) -// ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// query_builder.withUpdateExpression(update_expression); -// -// var expression_attribute_values = new Dictionary -// { -// { ":changeValue", new AttributeValue { N = Math.Abs(m_delta).ToString() } }, -// { ":start", new AttributeValue { N = "0" } } -// }; -// query_builder.withExpressionAttributeValues(expression_attribute_values); -// query_builder.withReturnValues(ReturnValue.ALL_NEW); -// return query_builder.build(); -// } -// } -// -// public class MoneyDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public MoneyDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, MoneyDoc?)> findMoneyDoc(string userGuid) -// { -// var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result.isFail() || primary_key_object == null) -// { -// return (result, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// } -// -// public async Task<(Result, MoneyAttrib?)> findMoneyAttrib(string userGuid, CancellationToken cancellationToken) -// { -// var (result, doc) = await findMoneyDoc(userGuid); -// return (result, doc?.getAttrib()); -// } -// -// public async Task<(Result, MoneyAttrib?)> changeSapphire(string userGuid, double delta) -// { -// var (result, make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// // 프라이머리 키 생성 실패 -// if (result.isFail() || make_primary_key == null) -// { -// return (result, null); -// } -// -// (result, var request) = makeUpdateItemRequest( -// make_primary_key.toKeyWithAttributeValue(), -// MoneyAttribExtensions.getKeyNameFromType(CurrencyType.Sapphire), -// delta); -// // 업데이트 쿼리 생성 실패 -// if (result.isFail() || request == null) -// { -// return (result, null); -// } -// -// (result, var update_doc) = await m_dynamo_db_client.simpleQueryDocTypesWithUpdateItemRequest(request); -// // 업데이트 쿼리 실패 -// if (result.isFail() || update_doc == null) return (result, null); -// -// var attrib = update_doc.getAttrib(); -// // 업데이트 된 문서에서 MoneyAttrib을 찾을 수 없음 -// if (attrib == null) -// { -// result.setFail(ServerErrorCode.AttribNotFound, $"attrib is null !!!"); -// return (result, null); -// } -// return (result, attrib); -// } -// -// private async Task sendQuery(QueryBatchBase batch) -// { -// var result = new Result(); -// var err_msg = string.Empty; -// -// if (batch == null) -// { -// err_msg = $"Failed to sendQuery !!!, QueryBatchBase is null"; -// result.setFail(ServerErrorCode.FunctionInvalidParam, err_msg); -// return result; -// } -// -// if (false == batch.hasQuery()) -// { -// err_msg = $"Not has DBQuery !!!"; -// result.setFail(ServerErrorCode.DynamoDbQueryNoRequested, err_msg); -// return result; -// } -// -// result = await batch.prepareQueryWithStopwatch(); -// if (result.isFail()) -// { -// return result; -// } -// -// result = await batch.doQueryWithStopwatch(); -// if (result.isFail()) -// { -// return result; -// } -// -// return result; -// } -// -// private (Result, UpdateItemRequest?) makeUpdateItemRequest( -// Dictionary attributeValueWithPrimaryKey -// , string targetAttribName -// , double deltaCount) -// { -// var result = new Result(); -// var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(m_dynamo_db_client.getTableName()); -// query_builder.withKeys(attributeValueWithPrimaryKey); -// -// var target_doc = new MoneyDoc(); -// var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// var target_key = JsonHelper.getJsonPropertyName(targetAttribName); -// var (is_success, attribute_expression) = -// DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// if (false == is_success) -// { -// var err_msg = -// $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// Log.getLogger().error(result.toBasicString()); -// return (result, null); -// } -// -// query_builder.withExpressionAttributeNames( -// DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// -// var update_expression = (deltaCount >= 0) -// ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// query_builder.withUpdateExpression(update_expression); -// -// var expression_attribute_values = new Dictionary -// { -// { ":changeValue", new AttributeValue { N = Math.Abs(deltaCount).ToString() } }, -// { ":start", new AttributeValue { N = "0" } } -// }; -// query_builder.withExpressionAttributeValues(expression_attribute_values); -// query_builder.withReturnValues(ReturnValue.ALL_NEW); -// return query_builder.build(); -// } -// -// // //============================================================================================= -// // // delta 만큼 금전을 변경(음수, 양수) 한다. -// // //============================================================================================= -// // public async Task changeMoney(CurrencyType currencyType, double delta, bool isTrimExcess = false, -// // bool useCaliumEvent = true) -// // { -// // var result = new Result(); -// // -// // // var owner = getOwner() as Player; -// // // NullReferenceCheckHelper.throwIfNull(owner, () => $"player is null !!!"); -// // -// // // if (currencyType == CurrencyType.Beam) -// // // { -// // // var found_transaction_runner = owner.findTransactionRunner(TransactionIdType.PrivateContents); -// // // found_transaction_runner?.addRemoteChargeAIPoint(this, delta); -// // // return result; -// // // } -// // -// // result = changeMoneyFromCurrencyType(currencyType, delta, isTrimExcess); -// // if (result.isSuccess() && useCaliumEvent) -// // { -// // var found_transaction_runner = owner.findTransactionRunner(TransactionIdType.PrivateContents); -// // var event_name = found_transaction_runner?.getTransactionName() ?? "None"; -// // found_transaction_runner?.addNotifyCaliumEvent(this, event_name, currencyType, delta); -// // } -// // -// // return await Task.FromResult(result); -// // } -// // -// // private Result changeMoneyFromCurrencyType(CurrencyType type, double delta, bool isTrimExcess = false) -// // { -// // var result = new Result(); -// // var err_msg = string.Empty; -// // -// // // var owner = getOwner() as Player; -// // // NullReferenceCheckHelper.throwIfNull(owner, () => $"player is null !!!"); -// // -// // if (MetaData.Instance._CurrencyMetaTableByCurrencyType.TryGetValue(type, out var currencyMetaData) == false) -// // { -// // // err_msg = $"Not found CurrencyMetaData !!! : currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.CurrencyMetaDataNotFound, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // // var money_attribute = owner.getEntityAttribute(); -// // // NullReferenceCheckHelper.throwIfNull(money_attribute, -// // // () => $"money_attribute is null !!! - {owner.toBasicString()}"); -// // -// // var currency = money_attribute.getCurrencyFromType(type); -// // var change = currency + delta; -// // if (change < 0) -// // { -// // err_msg = -// // $"Failed to change getCurrencyFromType() !!!, not enough Money : deltaMoney:{delta}, changeCurrency:{change}, currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.MoneyNotEnough, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // if (change >= currencyMetaData.MaxCount) -// // { -// // MoneyNotifyHelper.send_GS2C_NTF_CURRENCY_MAX_ALERT(owner, type, currencyMetaData.MaxCount); -// // -// // if (change > currencyMetaData.MaxCount -// // && false == isTrimExcess) -// // { -// // err_msg = -// // $"Money exceeded Max Count !!! : toDelta:{delta}, toChange:{change} <= MaxCount:{currencyMetaData.MaxCount}, currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.MoneyMaxCountExceeded, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // var trim_money = change - currencyMetaData.MaxCount; -// // change = double.Min(change, currencyMetaData.MaxCount); -// // -// // err_msg = -// // $"Exceeded MaxCount of Money !!!, Trimming Money : currencyType:{type}, changeMoney:{change}, trimMoney:{trim_money}, deltaMoney:{delta}, maxMoney:{currencyMetaData.MaxCount} - {owner.toBasicString()}"; -// // Log.getLogger().info(err_msg); -// // } -// // -// // money_attribute.setCurrencyFromType(type, change); -// // -// // money_attribute.modifiedEntityAttribute(); -// // -// // return result; -// // } -// // -// // -// // public TransactionRunner? findTransactionRunner(TransactionIdType transactionIdType) -// // { -// // TransactionRunner? found_transaction_runner = null; -// // -// // var err_msg = string.Empty; -// // -// // if (true == hasMasterGuid()) -// // { -// // var master_guid = getMasterGuid(); -// // var found_master_entity = onGetMasterEntity(); -// // if(null == found_master_entity) -// // { -// // return null; -// // } -// // -// // found_transaction_runner = found_master_entity.findTransactionRunner(transactionIdType); -// // } -// // else -// // { -// // if (false == m_transaction_runners.TryGetValue(transactionIdType, out found_transaction_runner)) -// // { -// // return null; -// // } -// // } -// // -// // return found_transaction_runner; -// // } -// -// // private (Result, UpdateItemRequest?) makeUpdateItemRequest( -// // Dictionary attributeValueWithPrimaryKey -// // , string targetAttribName -// // , double deltaCount) -// // { -// // var result = new Result(); -// // -// // var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(m_dynamo_db_client.getTableName()); -// // query_builder.withKeys(attributeValueWithPrimaryKey); -// // -// // var target_doc = new MoneyDoc(); -// // var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// // var target_key = JsonHelper.getJsonPropertyName(targetAttribName); -// // (var is_success, var attribute_expression) = -// // DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// // if (false == is_success) -// // { -// // var err_msg = -// // $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// // result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return (result, null); -// // } -// // -// // query_builder.withExpressionAttributeNames( -// // DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// // -// // var update_expression = (deltaCount >= 0) -// // ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// // : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// // query_builder.withUpdateExpression(update_expression); -// // -// // var expression_attribute_values = new Dictionary -// // { -// // { ":changeValue", new AttributeValue { N = Math.Abs(deltaCount).ToString() } }, -// // { ":start", new AttributeValue { N = "0" } } -// // }; -// // query_builder.withExpressionAttributeValues(expression_attribute_values); -// // -// // query_builder.withReturnValues(ReturnValue.ALL_NEW); -// // -// // return query_builder.build(); -// // } -// } diff --git a/BrokerApiTest/Helper/DocRepo/PlanetInfoCache.cs b/BrokerApiTest/Helper/DocRepo/PlanetInfoCache.cs deleted file mode 100644 index efaaba9..0000000 --- a/BrokerApiTest/Helper/DocRepo/PlanetInfoCache.cs +++ /dev/null @@ -1,71 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using DbEntity; -// -// using Microsoft.Extensions.DependencyInjection; -// using Microsoft.Extensions.Hosting; -// -// using ServerCommon; -// -// using ServerCore; using ServerBase; -// -// //================================================== -// // 행성 정보 캐시를 갱신한다. -// //================================================== -// public class PlanetInfoCache : BackgroundService -// { -// private readonly object m_lock = new(); -// private IEnumerable m_planets = []; -// private readonly IServiceScopeFactory m_scope_factory; -// -// public PlanetInfoCache(IServiceScopeFactory scopeFactory, IHostApplicationLifetime lifetime) -// { -// m_scope_factory = scopeFactory; -// } -// -// public IEnumerable Planets -// { -// get -// { -// lock (m_planets) -// { -// return m_planets; -// } -// } -// } -// -// protected override async Task ExecuteAsync(CancellationToken stoppingToken) -// { -// while (!stoppingToken.IsCancellationRequested) -// { -// try -// { -// await updateData(); -// } -// catch (Exception e) -// { -// Console.WriteLine(e); -// throw; -// } -// -// await Task.Delay(TimeSpan.FromSeconds(120), stoppingToken); // 120초마다 데이터 갱신 -// } -// } -// -// private async Task updateData() -// { -// using var scope = m_scope_factory.CreateScope(); -// var planet_info_repo = scope.ServiceProvider.GetRequiredService(); -// var (result, planet_infos) = await planet_info_repo.findAll(); -// if (result.isFail() || planet_infos == null) -// { -// Log.getLogger().error("Failed to find planet infos"); -// return; -// } -// -// lock (m_lock) -// { -// m_planets = planet_infos; -// } -// } -// } diff --git a/BrokerApiTest/Helper/DocRepo/UserBaseDocRepo.cs b/BrokerApiTest/Helper/DocRepo/UserBaseDocRepo.cs deleted file mode 100644 index a1b2236..0000000 --- a/BrokerApiTest/Helper/DocRepo/UserBaseDocRepo.cs +++ /dev/null @@ -1,67 +0,0 @@ -// using ServerCommon; -// -// namespace BrokerCore.Repository; -// -// using ServerCore; using ServerBase; -// -// public class UserBaseDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public UserBaseDocRepo(DynamoDbClient dynamoDbClient) -// { -// this.m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, UserBaseDoc?)> findUserBaseDoc(string userGuid) -// { -// var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result.isFail() || primary_key_object == null) -// { -// return (result, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// // var (result, user_doc) = await m_dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig(config); -// return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// } -// -// public async Task<(Result, UserBaseAttrib?)> findUserBaseAttrib(string userGuid) -// { -// var (result, doc) = await findUserBaseDoc(userGuid); -// return (result, doc?.getAttrib()); -// } -// -// public async Task<(Result, string)> findNickname(string userGuid) -// { -// var (result, found_nickname_attrib) = await NicknameDoc.findNicknameFromGuid(m_dynamo_db_client, userGuid); -// if(result.isFail()) -// { -// return (result, string.Empty); -// } -// NullReferenceCheckHelper.throwIfNull(found_nickname_attrib, () => $"found_nickname_attrib is null !!!, userGuid:{userGuid}"); -// return (result, found_nickname_attrib.Nickname); -// } -// -// //=================================================================================================== -// // 로그아웃 여부만 체크 -// // TODO: 레디스 캐시를 이용하여 로그인 여부를 체크하는 것이 더 효율적일 수 있음 -// //=================================================================================================== -// public bool isUserLoggedIn(UserBaseAttrib userAttrib) -// { -// return userAttrib.GameLoginDateTime > userAttrib.GameLogoutDateTime; -// } -// -// // public async Task insertUserBaseDoc(UserBaseAttrib userAttrib) -// // { -// // var user_doc = new UserBaseDoc(userAttrib.UserGuid); -// // var user_attrib = user_doc.getAttrib(); -// // NullReferenceCheckHelper.throwIfNull(user_attrib, () => $"insertUserBaseDoc : user_attrib is null !!! - {userAttrib.UserGuid}"); -// // user_attrib.UserGuid = userAttrib.UserGuid; -// // user_attrib.AccountId = userAttrib.AccountId; -// // user_attrib.EOA = userAttrib.EOA; -// // user_attrib.SelectedCharacterGuid = userAttrib.SelectedCharacterGuid; -// // user_attrib.IsIntroCompleted = userAttrib.IsIntroCompleted; -// // return await m_dynamoDbClient.simpleInsertDocumentWithDocType(user_doc); -// // } -// } diff --git a/BrokerApiTest/Helper/MetaTableTestHelper.cs b/BrokerApiTest/Helper/MetaTableTestHelper.cs index 93cbf3f..2afa688 100644 --- a/BrokerApiTest/Helper/MetaTableTestHelper.cs +++ b/BrokerApiTest/Helper/MetaTableTestHelper.cs @@ -1,5 +1,6 @@ -namespace BrokerTest.Helper; +using BrokerApiCore; +namespace BrokerTest; public class MetaTableTestHelper { readonly BrokerApiMetaLoader m_meta_loader = new(); diff --git a/BrokerApiTest/Helper/TestUserHelper.cs b/BrokerApiTest/Helper/TestUserHelper.cs index cb7ab38..7c3f528 100644 --- a/BrokerApiTest/Helper/TestUserHelper.cs +++ b/BrokerApiTest/Helper/TestUserHelper.cs @@ -1,16 +1,12 @@ -using BrokerApiServer.Extensions; +using BrokerApiCore; -using BrokerCore; -using BrokerCore.Entity; -using BrokerCore.Repository; -using BrokerCore.Services; +using BrokerApiServer; +using ServerCore; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; - -namespace BrokerTest.Helper; - +namespace BrokerTest; public class TestUserHelper { readonly BrokerServerLogic m_server_logic; diff --git a/BrokerApiTest/Helper/ValueResult.cs b/BrokerApiTest/Helper/ValueResult.cs deleted file mode 100644 index bb5b44a..0000000 --- a/BrokerApiTest/Helper/ValueResult.cs +++ /dev/null @@ -1,18 +0,0 @@ -// namespace BrokerCore.Common; -// -// public class ValueResult -// { -// public Result Result { get; init; } -// public TValue? Value { get; set; } -// -// public ValueResult() -// { -// Result = new Result(); -// } -// -// public ValueResult(Result result, TValue? value) -// { -// Result = result; -// Value = value; -// } -// } diff --git a/BrokerApiTest/Jwt/JwtBasicTests.cs b/BrokerApiTest/Jwt/JwtBasicTests.cs index 1a3fc18..440dd6c 100644 --- a/BrokerApiTest/Jwt/JwtBasicTests.cs +++ b/BrokerApiTest/Jwt/JwtBasicTests.cs @@ -1,17 +1,17 @@ +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using BrokerApiCore; + +using Xunit.Abstractions; + +using BrokerApiServer; + +namespace BrokerTest.Jwt; //============================================================================================= // Jwt 토큰 생성 및 파싱 기본 라이브러리 사용 테스트 //============================================================================================= -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; -using Xunit.Abstractions; - -using BrokerCore.Common; -using BrokerCore.Services; - -namespace BrokerTest.Jwt; - public class JwtBasicTests { private readonly ITestOutputHelper m_test_output_helper; diff --git a/BrokerApiTest/Jwt/SSOTests.cs b/BrokerApiTest/Jwt/SSOTests.cs deleted file mode 100644 index 2892ea7..0000000 --- a/BrokerApiTest/Jwt/SSOTests.cs +++ /dev/null @@ -1,48 +0,0 @@ -// using ServerCommon; -// using ServerCore; using ServerBase; -// using Services; -// -// namespace BrokerTest.Jwt; -// public class SsoTests -// { -// private readonly ServerConfig m_server_config; -// private readonly string m_web_portal_token_secret; -// private readonly string m_account_db; -// -// public SsoTests() -// { -// Log.NLogFileName = "./TestConfig/nlog-BrokerApiServer.config"; -// Log.initLog("BrokerApiServerTest", "Developer"); -// var path = "./TestConfig/ServerConfig-Local.json"; -// var full_path = Path.GetFullPath(path); -// m_server_config = new ServerConfig(); -// m_server_config.setConfigFilePath(full_path); -// m_server_config.loadConfig(); -// m_account_db = m_server_config.AccountNftDb; -// m_web_portal_token_secret = m_server_config.SsoAccountAuthJwtSecretKey; -// } -// -// private async Task findTestAccount() -// { -// var sso_account_auth = new WebPortalTokenAuthService(m_account_db, m_web_portal_token_secret); -// var result = await sso_account_auth.mysqlAuthWithEmail("tenafter71@gmail.com", 1); -// Assert.True(result.isSuccess()); -// // m_account_id = result.getAccountId(); -// } -// -// [Fact] -// public async Task ssoFailTest() -// { -// var sso_account_auth = new WebPortalTokenAuthService(m_account_db, m_web_portal_token_secret); -// var result = await sso_account_auth.mysqlAuthWithEmail("test", 1); -// Assert.True(result.isFail()); -// } -// -// [Fact] -// public async Task ssoSuccessTest() -// { -// var sso_account_auth = new WebPortalTokenAuthService(m_account_db, m_web_portal_token_secret); -// var result = await sso_account_auth.mysqlAuthWithEmail("test@test.com", 1); -// Assert.True(result.isSuccess()); -// } -// } diff --git a/BrokerApiTest/Services/ExchangeServiceTests.cs b/BrokerApiTest/Services/ExchangeServiceTests.cs deleted file mode 100644 index 603d691..0000000 --- a/BrokerApiTest/Services/ExchangeServiceTests.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace BrokerTest.Services; - -public class ExchangeServiceTests -{ - -} diff --git a/BrokerApiTest/Services/UserAuthServiceTests.cs b/BrokerApiTest/Services/UserAuthServiceTests.cs deleted file mode 100644 index 5f28270..0000000 --- a/BrokerApiTest/Services/UserAuthServiceTests.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/BrokerApiTest/TestHelper/DocRepo/AccountDocRepo.cs b/BrokerApiTest/TestHelper/DocRepo/AccountDocRepo.cs deleted file mode 100644 index ab7fc2f..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/AccountDocRepo.cs +++ /dev/null @@ -1,19 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// -// public class AccountDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public AccountDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, AccountBaseAttrib?)> findAccountBaseAttrib(string accountId) -// { -// var (result, doc) = await AccountBaseDoc.findUserGuidFromAccountId(m_dynamo_db_client, accountId); -// return (result, doc?.getAttrib()); -// } -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/CaliumEventDocRepo.cs b/BrokerApiTest/TestHelper/DocRepo/CaliumEventDocRepo.cs deleted file mode 100644 index 09c1739..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/CaliumEventDocRepo.cs +++ /dev/null @@ -1,53 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// using ServerCommon.EchoSystem.Models; -// -// using ServerCore; using ServerBase; -// -// public class CaliumEventDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumEventDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// // public async Task<(Result, CaliumEventAttrib?)> createOne(string userGuid) -// // { -// // var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// // if (result_pk.isFail() || primary_key_object == null) -// // { -// // return (result_pk, null); -// // } -// // -// // var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// // var (result, doc) = -// // await m_dynamo_db_client.simpleInsertDocument(config); -// // var attrib = doc?.getAttrib(); -// // return (result, attrib); -// // } -// public async Task createOne(string userGuid, CaliumEventRequest request, bool isRetry) -// { -// var doc = new CaliumEventDoc(request.m_event_id); -// var attrib = doc.getAttrib(); -// NullReferenceCheckHelper.throwIfNull(attrib, () => $"calium event attrib is null !!! - userGuid[{userGuid}]"); -// -// attrib.UserGuid = userGuid; -// attrib.EventData.m_server_type = request.m_server_type; -// attrib.EventData.m_event_type = request.m_event_type; -// attrib.EventData.m_sub_type = request.m_sub_type; -// attrib.EventData.m_div_type = request.m_div_type; -// attrib.EventData.m_div_id = request.m_div_id; -// attrib.EventData.m_calium_delta = request.m_calium_delta; -// attrib.EventData.m_sapphire_delta = request.m_sapphire_delta; -// attrib.EventData.m_current_epoch = request.m_current_epoch; -// attrib.EventData.m_current_inflation_rate = request.m_current_inflation_rate; -// attrib.Status = isRetry ? CaliumEventStatus.Regist : CaliumEventStatus.Failed; -// -// await m_dynamo_db_client.simpleInsertDocumentWithDocType(doc); -// return request.m_event_id; -// } -// -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/CaliumStorageDocRepo.cs b/BrokerApiTest/TestHelper/DocRepo/CaliumStorageDocRepo.cs deleted file mode 100644 index 5cf6446..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/CaliumStorageDocRepo.cs +++ /dev/null @@ -1,28 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using ServerCommon; -// -// public class CaliumStorageDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumStorageDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, CaliumStorageAttrib?)> findOne(string userGuid) -// { -// var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result_pk.isFail() || primary_key_object == null) -// { -// return (result_pk, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// var (result, doc) = -// await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// var attrib = doc?.getAttrib(); -// return (result, attrib); -// } -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/CaliumStorageRepo.cs b/BrokerApiTest/TestHelper/DocRepo/CaliumStorageRepo.cs deleted file mode 100644 index 0804d4b..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/CaliumStorageRepo.cs +++ /dev/null @@ -1,30 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using Common; -// -// using ServerCommon; -// -// public class CaliumStorageRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public CaliumStorageRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, CaliumStorageAttrib?)> findOne(string userGuid) -// { -// var (result_pk, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result_pk.isFail() || primary_key_object == null) -// { -// return (result_pk, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// var (result, doc) = -// await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// var attrib = doc?.getAttrib(); -// return (result, attrib); -// } -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/MoneyDocRepo.cs b/BrokerApiTest/TestHelper/DocRepo/MoneyDocRepo.cs deleted file mode 100644 index caddd1a..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/MoneyDocRepo.cs +++ /dev/null @@ -1,445 +0,0 @@ -// using Amazon.DynamoDBv2; -// using Amazon.DynamoDBv2.Model; -// -// using ServerCommon; -// -// using ServerCore; using ServerBase; -// -// namespace BrokerCore.Repository; -// -// using BrokerApiServer.Common; -// -// public class BrokerApiLogActor : ILogActor -// { -// public string getActorGuid() => "broker"; -// } -// -// public class BrokerApiWithLogActor : EntityBase, IWithLogActor -// { -// public readonly EntityType m_entity_type = EntityType.Money; -// -// public BrokerApiWithLogActor() : base(EntityType.Money) -// { -// } -// -// //public BrokerApiWithLogActor(string masterGuid) : base(EntityType.Money, masterGuid) -// //{ -// //} -// -// public ILogActor toLogActor() -// { -// return new BrokerApiLogActor(); -// } -// } -// -// public class DbqChangeSapphire : QueryExecutorBase -// { -// private readonly double m_delta; -// private PrimaryKey? m_primary_key; -// private readonly string m_user_guid; -// -// public DbqChangeSapphire(string userGuid, double delta) : base(nameof(DbqChangeSapphire)) -// { -// m_delta = delta; -// m_user_guid = userGuid; -// } -// -// public override async Task onPrepareQuery() -// { -// (var result, m_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey(m_user_guid); -// return result; -// } -// -// public override async Task onQuery() -// { -// var owner = getOwner(); -// -// // 부모 인스턴스의 정보를 사용하여 필요한 데이터를 가져온다. (여기서는 ...) -// var query_batch = getQueryBatch() as QueryBatch; -// NullReferenceCheckHelper.throwIfNull(query_batch, () => $"query_batch is null !!! - {owner.toBasicString()}"); -// -// var query_runner_with_item_request = query_batch.getQueryRunner(); -// NullReferenceCheckHelper.throwIfNull(query_runner_with_item_request, -// () => $"query_runner_with_item_request is null !!! - {owner.toBasicString()}"); -// -// var db_connector = query_batch.getDynamoDbConnector(); -// var (result, update_request) = makeUpdateItemRequest(); -// if (result.isFail()) -// { -// return result; -// } -// -// NullReferenceCheckHelper.throwIfNull(update_request, -// () => $"update_request is null !!! - {owner.toBasicString()}"); -// -// var exception_handler = new DynamoDbQueryExceptionNotifier.ExceptionHandler( -// DynamoDbQueryExceptionNotifier.ConditionalCheckFailed, ServerErrorCode.LackOfTotalCalium); -// -// var query_context = update_request.createItemRequestQueryContext(QueryType.Update, exception_handler); -// return await query_runner_with_item_request.tryRegisterQueryContext(query_context); -// } -// -// //===================================================================================== -// // DB 쿼리를 성공하고, doFnCommit()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //===================================================================================== -// public override Task onQueryResponseCommit() -// { -// return Task.CompletedTask; -// } -// -// //===================================================================================== -// // DB 쿼리를 실패하고, doFnRollback()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. -// //===================================================================================== -// public override Task onQueryResponseRollback(Result errorResult) -// { -// return Task.CompletedTask; -// } -// -// private (Result, UpdateItemRequest?) makeUpdateItemRequest() -// { -// Guard.Against.isNull(m_primary_key, (BrokerApiErrorCode)ServerErrorCode.DynamoDbPrimaryKeyNotFound, "primary key is null"); -// var attribute_value_with_primary_key = m_primary_key.toKeyWithAttributeValue(); -// -// var currency_name = MoneyAttribExtensions.getKeyNameFromType(CurrencyType.Sapphire); -// var result = new Result(); -// var dynamo_db_client = getQueryBatch()?.getDynamoDbConnector(); -// NullReferenceCheckHelper.throwIfNull(dynamo_db_client, () => $"dynamo_db_client is null !!!"); -// -// var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(dynamo_db_client.getTableName()); -// query_builder.withKeys(attribute_value_with_primary_key); -// -// var target_doc = new MoneyDoc(); -// var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// var target_key = JsonHelper.getJsonPropertyName(currency_name); -// var (is_success, attribute_expression) = -// DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// if (false == is_success) -// { -// var err_msg = -// $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// Log.getLogger().error(result.toBasicString()); -// -// return (result, null); -// } -// -// query_builder.withExpressionAttributeNames( -// DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// -// var update_expression = (m_delta >= 0) -// ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// query_builder.withUpdateExpression(update_expression); -// -// var expression_attribute_values = new Dictionary -// { -// { ":changeValue", new AttributeValue { N = Math.Abs(m_delta).ToString() } }, -// { ":start", new AttributeValue { N = "0" } } -// }; -// query_builder.withExpressionAttributeValues(expression_attribute_values); -// query_builder.withReturnValues(ReturnValue.ALL_NEW); -// return query_builder.build(); -// } -// } -// -// public class MoneyDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public MoneyDocRepo(DynamoDbClient dynamoDbClient) -// { -// m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, MoneyDoc?)> findMoneyDoc(string userGuid) -// { -// var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result.isFail() || primary_key_object == null) -// { -// return (result, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// } -// -// public async Task<(Result, MoneyAttrib?)> findMoneyAttrib(string userGuid, CancellationToken cancellationToken) -// { -// var (result, doc) = await findMoneyDoc(userGuid); -// return (result, doc?.getAttrib()); -// } -// -// public async Task<(Result, MoneyAttrib?)> changeSapphire(string userGuid, double delta) -// { -// var (result, make_primary_key) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// // 프라이머리 키 생성 실패 -// if (result.isFail() || make_primary_key == null) -// { -// return (result, null); -// } -// -// (result, var request) = makeUpdateItemRequest( -// make_primary_key.toKeyWithAttributeValue(), -// MoneyAttribExtensions.getKeyNameFromType(CurrencyType.Sapphire), -// delta); -// // 업데이트 쿼리 생성 실패 -// if (result.isFail() || request == null) -// { -// return (result, null); -// } -// -// (result, var update_doc) = await m_dynamo_db_client.simpleQueryDocTypesWithUpdateItemRequest(request); -// // 업데이트 쿼리 실패 -// if (result.isFail() || update_doc == null) return (result, null); -// -// var attrib = update_doc.getAttrib(); -// // 업데이트 된 문서에서 MoneyAttrib을 찾을 수 없음 -// if (attrib == null) -// { -// result.setFail(ServerErrorCode.AttribNotFound, $"attrib is null !!!"); -// return (result, null); -// } -// return (result, attrib); -// } -// -// private async Task sendQuery(QueryBatchBase batch) -// { -// var result = new Result(); -// var err_msg = string.Empty; -// -// if (batch == null) -// { -// err_msg = $"Failed to sendQuery !!!, QueryBatchBase is null"; -// result.setFail(ServerErrorCode.FunctionInvalidParam, err_msg); -// return result; -// } -// -// if (false == batch.hasQuery()) -// { -// err_msg = $"Not has DBQuery !!!"; -// result.setFail(ServerErrorCode.DynamoDbQueryNoRequested, err_msg); -// return result; -// } -// -// result = await batch.prepareQueryWithStopwatch(); -// if (result.isFail()) -// { -// return result; -// } -// -// result = await batch.doQueryWithStopwatch(); -// if (result.isFail()) -// { -// return result; -// } -// -// return result; -// } -// -// private (Result, UpdateItemRequest?) makeUpdateItemRequest( -// Dictionary attributeValueWithPrimaryKey -// , string targetAttribName -// , double deltaCount) -// { -// var result = new Result(); -// var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(m_dynamo_db_client.getTableName()); -// query_builder.withKeys(attributeValueWithPrimaryKey); -// -// var target_doc = new MoneyDoc(); -// var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// var target_key = JsonHelper.getJsonPropertyName(targetAttribName); -// var (is_success, attribute_expression) = -// DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// if (false == is_success) -// { -// var err_msg = -// $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// Log.getLogger().error(result.toBasicString()); -// return (result, null); -// } -// -// query_builder.withExpressionAttributeNames( -// DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// -// var update_expression = (deltaCount >= 0) -// ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// query_builder.withUpdateExpression(update_expression); -// -// var expression_attribute_values = new Dictionary -// { -// { ":changeValue", new AttributeValue { N = Math.Abs(deltaCount).ToString() } }, -// { ":start", new AttributeValue { N = "0" } } -// }; -// query_builder.withExpressionAttributeValues(expression_attribute_values); -// query_builder.withReturnValues(ReturnValue.ALL_NEW); -// return query_builder.build(); -// } -// -// // //============================================================================================= -// // // delta 만큼 금전을 변경(음수, 양수) 한다. -// // //============================================================================================= -// // public async Task changeMoney(CurrencyType currencyType, double delta, bool isTrimExcess = false, -// // bool useCaliumEvent = true) -// // { -// // var result = new Result(); -// // -// // // var owner = getOwner() as Player; -// // // NullReferenceCheckHelper.throwIfNull(owner, () => $"player is null !!!"); -// // -// // // if (currencyType == CurrencyType.Beam) -// // // { -// // // var found_transaction_runner = owner.findTransactionRunner(TransactionIdType.PrivateContents); -// // // found_transaction_runner?.addRemoteChargeAIPoint(this, delta); -// // // return result; -// // // } -// // -// // result = changeMoneyFromCurrencyType(currencyType, delta, isTrimExcess); -// // if (result.isSuccess() && useCaliumEvent) -// // { -// // var found_transaction_runner = owner.findTransactionRunner(TransactionIdType.PrivateContents); -// // var event_name = found_transaction_runner?.getTransactionName() ?? "None"; -// // found_transaction_runner?.addNotifyCaliumEvent(this, event_name, currencyType, delta); -// // } -// // -// // return await Task.FromResult(result); -// // } -// // -// // private Result changeMoneyFromCurrencyType(CurrencyType type, double delta, bool isTrimExcess = false) -// // { -// // var result = new Result(); -// // var err_msg = string.Empty; -// // -// // // var owner = getOwner() as Player; -// // // NullReferenceCheckHelper.throwIfNull(owner, () => $"player is null !!!"); -// // -// // if (MetaData.Instance._CurrencyMetaTableByCurrencyType.TryGetValue(type, out var currencyMetaData) == false) -// // { -// // // err_msg = $"Not found CurrencyMetaData !!! : currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.CurrencyMetaDataNotFound, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // // var money_attribute = owner.getEntityAttribute(); -// // // NullReferenceCheckHelper.throwIfNull(money_attribute, -// // // () => $"money_attribute is null !!! - {owner.toBasicString()}"); -// // -// // var currency = money_attribute.getCurrencyFromType(type); -// // var change = currency + delta; -// // if (change < 0) -// // { -// // err_msg = -// // $"Failed to change getCurrencyFromType() !!!, not enough Money : deltaMoney:{delta}, changeCurrency:{change}, currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.MoneyNotEnough, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // if (change >= currencyMetaData.MaxCount) -// // { -// // MoneyNotifyHelper.send_GS2C_NTF_CURRENCY_MAX_ALERT(owner, type, currencyMetaData.MaxCount); -// // -// // if (change > currencyMetaData.MaxCount -// // && false == isTrimExcess) -// // { -// // err_msg = -// // $"Money exceeded Max Count !!! : toDelta:{delta}, toChange:{change} <= MaxCount:{currencyMetaData.MaxCount}, currencyType:{type} - {owner.toBasicString()}"; -// // result.setFail(ServerErrorCode.MoneyMaxCountExceeded, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return result; -// // } -// // -// // var trim_money = change - currencyMetaData.MaxCount; -// // change = double.Min(change, currencyMetaData.MaxCount); -// // -// // err_msg = -// // $"Exceeded MaxCount of Money !!!, Trimming Money : currencyType:{type}, changeMoney:{change}, trimMoney:{trim_money}, deltaMoney:{delta}, maxMoney:{currencyMetaData.MaxCount} - {owner.toBasicString()}"; -// // Log.getLogger().info(err_msg); -// // } -// // -// // money_attribute.setCurrencyFromType(type, change); -// // -// // money_attribute.modifiedEntityAttribute(); -// // -// // return result; -// // } -// // -// // -// // public TransactionRunner? findTransactionRunner(TransactionIdType transactionIdType) -// // { -// // TransactionRunner? found_transaction_runner = null; -// // -// // var err_msg = string.Empty; -// // -// // if (true == hasMasterGuid()) -// // { -// // var master_guid = getMasterGuid(); -// // var found_master_entity = onGetMasterEntity(); -// // if(null == found_master_entity) -// // { -// // return null; -// // } -// // -// // found_transaction_runner = found_master_entity.findTransactionRunner(transactionIdType); -// // } -// // else -// // { -// // if (false == m_transaction_runners.TryGetValue(transactionIdType, out found_transaction_runner)) -// // { -// // return null; -// // } -// // } -// // -// // return found_transaction_runner; -// // } -// -// // private (Result, UpdateItemRequest?) makeUpdateItemRequest( -// // Dictionary attributeValueWithPrimaryKey -// // , string targetAttribName -// // , double deltaCount) -// // { -// // var result = new Result(); -// // -// // var query_builder = new DynamoDbItemRequestHelper.UpdateItemRequestBuilder(m_dynamo_db_client.getTableName()); -// // query_builder.withKeys(attributeValueWithPrimaryKey); -// // -// // var target_doc = new MoneyDoc(); -// // var attrib_path_json_string = target_doc.toJsonStringOfAttribs(); -// // var target_key = JsonHelper.getJsonPropertyName(targetAttribName); -// // (var is_success, var attribute_expression) = -// // DynamoDbClientHelper.toAttributeExpressionFromJson(attrib_path_json_string, target_key); -// // if (false == is_success) -// // { -// // var err_msg = -// // $"Failed to DynamoDbClientHelper.toAttributeExpressionFromJson() !!! : attribPath:{attrib_path_json_string}, targetKey:{target_key}"; -// // result.setFail(ServerErrorCode.AttribPathMakeFailed, err_msg); -// // Log.getLogger().error(result.toBasicString()); -// // -// // return (result, null); -// // } -// // -// // query_builder.withExpressionAttributeNames( -// // DynamoDbClientHelper.toExpressionAttributeNamesFromJson(attrib_path_json_string, target_key)); -// // -// // var update_expression = (deltaCount >= 0) -// // ? $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) + :changeValue" -// // : $"SET {attribute_expression} = if_not_exists({attribute_expression}, :start) - :changeValue"; -// // query_builder.withUpdateExpression(update_expression); -// // -// // var expression_attribute_values = new Dictionary -// // { -// // { ":changeValue", new AttributeValue { N = Math.Abs(deltaCount).ToString() } }, -// // { ":start", new AttributeValue { N = "0" } } -// // }; -// // query_builder.withExpressionAttributeValues(expression_attribute_values); -// // -// // query_builder.withReturnValues(ReturnValue.ALL_NEW); -// // -// // return query_builder.build(); -// // } -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/PlanetInfoCache.cs b/BrokerApiTest/TestHelper/DocRepo/PlanetInfoCache.cs deleted file mode 100644 index efaaba9..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/PlanetInfoCache.cs +++ /dev/null @@ -1,71 +0,0 @@ -// namespace BrokerCore.Repository; -// -// using DbEntity; -// -// using Microsoft.Extensions.DependencyInjection; -// using Microsoft.Extensions.Hosting; -// -// using ServerCommon; -// -// using ServerCore; using ServerBase; -// -// //================================================== -// // 행성 정보 캐시를 갱신한다. -// //================================================== -// public class PlanetInfoCache : BackgroundService -// { -// private readonly object m_lock = new(); -// private IEnumerable m_planets = []; -// private readonly IServiceScopeFactory m_scope_factory; -// -// public PlanetInfoCache(IServiceScopeFactory scopeFactory, IHostApplicationLifetime lifetime) -// { -// m_scope_factory = scopeFactory; -// } -// -// public IEnumerable Planets -// { -// get -// { -// lock (m_planets) -// { -// return m_planets; -// } -// } -// } -// -// protected override async Task ExecuteAsync(CancellationToken stoppingToken) -// { -// while (!stoppingToken.IsCancellationRequested) -// { -// try -// { -// await updateData(); -// } -// catch (Exception e) -// { -// Console.WriteLine(e); -// throw; -// } -// -// await Task.Delay(TimeSpan.FromSeconds(120), stoppingToken); // 120초마다 데이터 갱신 -// } -// } -// -// private async Task updateData() -// { -// using var scope = m_scope_factory.CreateScope(); -// var planet_info_repo = scope.ServiceProvider.GetRequiredService(); -// var (result, planet_infos) = await planet_info_repo.findAll(); -// if (result.isFail() || planet_infos == null) -// { -// Log.getLogger().error("Failed to find planet infos"); -// return; -// } -// -// lock (m_lock) -// { -// m_planets = planet_infos; -// } -// } -// } diff --git a/BrokerApiTest/TestHelper/DocRepo/UserBaseDocRepo.cs b/BrokerApiTest/TestHelper/DocRepo/UserBaseDocRepo.cs deleted file mode 100644 index a1b2236..0000000 --- a/BrokerApiTest/TestHelper/DocRepo/UserBaseDocRepo.cs +++ /dev/null @@ -1,67 +0,0 @@ -// using ServerCommon; -// -// namespace BrokerCore.Repository; -// -// using ServerCore; using ServerBase; -// -// public class UserBaseDocRepo -// { -// private readonly DynamoDbClient m_dynamo_db_client; -// -// public UserBaseDocRepo(DynamoDbClient dynamoDbClient) -// { -// this.m_dynamo_db_client = dynamoDbClient; -// } -// -// public async Task<(Result, UserBaseDoc?)> findUserBaseDoc(string userGuid) -// { -// var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(userGuid); -// if (result.isFail() || primary_key_object == null) -// { -// return (result, null); -// } -// -// var config = m_dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); -// // var (result, user_doc) = await m_dynamoDbClient.simpleQueryDocTypeWithQueryOperationConfig(config); -// return await m_dynamo_db_client.simpleQueryDocTypeWithQueryOperationConfig(config); -// } -// -// public async Task<(Result, UserBaseAttrib?)> findUserBaseAttrib(string userGuid) -// { -// var (result, doc) = await findUserBaseDoc(userGuid); -// return (result, doc?.getAttrib()); -// } -// -// public async Task<(Result, string)> findNickname(string userGuid) -// { -// var (result, found_nickname_attrib) = await NicknameDoc.findNicknameFromGuid(m_dynamo_db_client, userGuid); -// if(result.isFail()) -// { -// return (result, string.Empty); -// } -// NullReferenceCheckHelper.throwIfNull(found_nickname_attrib, () => $"found_nickname_attrib is null !!!, userGuid:{userGuid}"); -// return (result, found_nickname_attrib.Nickname); -// } -// -// //=================================================================================================== -// // 로그아웃 여부만 체크 -// // TODO: 레디스 캐시를 이용하여 로그인 여부를 체크하는 것이 더 효율적일 수 있음 -// //=================================================================================================== -// public bool isUserLoggedIn(UserBaseAttrib userAttrib) -// { -// return userAttrib.GameLoginDateTime > userAttrib.GameLogoutDateTime; -// } -// -// // public async Task insertUserBaseDoc(UserBaseAttrib userAttrib) -// // { -// // var user_doc = new UserBaseDoc(userAttrib.UserGuid); -// // var user_attrib = user_doc.getAttrib(); -// // NullReferenceCheckHelper.throwIfNull(user_attrib, () => $"insertUserBaseDoc : user_attrib is null !!! - {userAttrib.UserGuid}"); -// // user_attrib.UserGuid = userAttrib.UserGuid; -// // user_attrib.AccountId = userAttrib.AccountId; -// // user_attrib.EOA = userAttrib.EOA; -// // user_attrib.SelectedCharacterGuid = userAttrib.SelectedCharacterGuid; -// // user_attrib.IsIntroCompleted = userAttrib.IsIntroCompleted; -// // return await m_dynamoDbClient.simpleInsertDocumentWithDocType(user_doc); -// // } -// } diff --git a/BrokerApiTest/TestHelper/Helpers.cs b/BrokerApiTest/TestHelper/Helpers.cs deleted file mode 100644 index 8a73e5f..0000000 --- a/BrokerApiTest/TestHelper/Helpers.cs +++ /dev/null @@ -1,93 +0,0 @@ -// -// using System.Globalization; -// using System.Security.Cryptography; -// using System.Text; -// -// namespace BrokerCore.Common; -// public static class Helpers -// { -// public static string generateAccessKey(string inputString, int keyLength = 24) -// { -// var salt = DateTime.Now.ToString(CultureInfo.InvariantCulture); -// using var pbkdf2 = -// new Rfc2898DeriveBytes(inputString, Encoding.UTF8.GetBytes(salt), 10000, HashAlgorithmName.SHA256); -// byte[] key_bytes = pbkdf2.GetBytes(keyLength); // 원하는 길이의 바이트 배열 생성 -// return BitConverter.ToString(key_bytes).Replace("-", "").ToLower()[..keyLength]; // 원하는 길이만큼 잘라서 반환 -// } -// -// public static string generateAccessToken(string inputString, string secret, int keyLength = 32) -// { -// var salt = DateTime.Now.ToString(CultureInfo.InvariantCulture); -// using var pbkdf2 = -// new Rfc2898DeriveBytes(inputString, Encoding.UTF8.GetBytes(salt), 10000, HashAlgorithmName.SHA256); -// byte[] key_bytes = pbkdf2.GetBytes(keyLength); // 원하는 길이의 바이트 배열 생성 -// return BitConverter.ToString(key_bytes).Replace("-", "").ToLower()[..keyLength]; // 원하는 길이만큼 잘라서 반환 -// } -// -// public static string generateAccessKeyTest() -// { -// var key = generateAccessKey("test"); -// return key; -// } -// -// public static string getErrorName(int errorCode) -// { -// try -// { -// var error_name = (BrokerApiErrorCode)errorCode; -// return error_name.ToString(); -// } -// catch (Exception) -// { -// return errorCode.ToString(); -// } -// } -// -// public static string encrypt(string plainText, string planetSecretKey, string tokenSecret) -// { -// var key = Encoding.UTF8.GetBytes(tokenSecret); -// var iv = Encoding.UTF8.GetBytes(planetSecretKey); -// using Aes aes_alg = Aes.Create(); -// aes_alg.Key = key; -// aes_alg.IV = iv; -// -// ICryptoTransform encryptor = aes_alg.CreateEncryptor(aes_alg.Key, aes_alg.IV); -// -// using (MemoryStream ms_encrypt = new MemoryStream()) -// { -// using (CryptoStream cs_encrypt = new CryptoStream(ms_encrypt, encryptor, CryptoStreamMode.Write)) -// { -// using (StreamWriter sw_encrypt = new StreamWriter(cs_encrypt)) -// { -// sw_encrypt.Write(plainText); -// } -// -// return Convert.ToBase64String(ms_encrypt.ToArray()); -// } -// } -// } -// -// public static string decrypt(string cipherText, string planetSecretKey, string tokenSecret) -// { -// var key = Encoding.UTF8.GetBytes(tokenSecret); -// var iv = Encoding.UTF8.GetBytes(planetSecretKey); -// -// byte[] buffer = Convert.FromBase64String(cipherText); -// using Aes aes_alg = Aes.Create(); -// aes_alg.Key = key; -// aes_alg.IV = iv; -// -// ICryptoTransform decryptor = aes_alg.CreateDecryptor(aes_alg.Key, aes_alg.IV); -// -// using (MemoryStream ms_decrypt = new MemoryStream(buffer)) -// { -// using (CryptoStream cs_decrypt = new CryptoStream(ms_decrypt, decryptor, CryptoStreamMode.Read)) -// { -// using (StreamReader sr_decrypt = new StreamReader(cs_decrypt)) -// { -// return sr_decrypt.ReadToEnd(); -// } -// } -// } -// } -// } diff --git a/BrokerApiTest/TestHelper/ValueResult.cs b/BrokerApiTest/TestHelper/ValueResult.cs deleted file mode 100644 index bb5b44a..0000000 --- a/BrokerApiTest/TestHelper/ValueResult.cs +++ /dev/null @@ -1,18 +0,0 @@ -// namespace BrokerCore.Common; -// -// public class ValueResult -// { -// public Result Result { get; init; } -// public TValue? Value { get; set; } -// -// public ValueResult() -// { -// Result = new Result(); -// } -// -// public ValueResult(Result result, TValue? value) -// { -// Result = result; -// Value = value; -// } -// } diff --git a/BrokerApiTest/User/UserDocRepoTests.cs b/BrokerApiTest/User/UserDocRepoTests.cs deleted file mode 100644 index bbe44f8..0000000 --- a/BrokerApiTest/User/UserDocRepoTests.cs +++ /dev/null @@ -1,133 +0,0 @@ -using ServerCore; -using ServerBase; -using ServerCommon; - - -using MODULE_ID = System.UInt32; - - -namespace BrokerTest.User; - -public class TestServerLogic : IServerLogic -{ - private DynamoDbClient m_dynamo_db_client; - private ServerConfig m_server_config; - - public TestServerLogic(DynamoDbClient dynamoDbClient, ServerConfig serverConfig) - { - m_dynamo_db_client = dynamoDbClient; - m_server_config = serverConfig; - } - - public DynamoDbClient getDynamoDbClient() => m_dynamo_db_client; - - public RedisConnector getRedisConnector() - { - throw new NotImplementedException(); - } - - public ServerConfig getServerConfig() => m_server_config; - - public string getServerName() => "TestServer"; - - public string getServerType() => "BrokerApi"; - - public string toBasicString() => "TestServerLogic"; - - public IModule getModule(MODULE_ID moduleId) { throw new NullReferenceException(); } - - public Result registerEntityTicker(EntityTicker entityTicker) { throw new NullReferenceException(); } -} - -// public class UserDocRepoTests -// { -// private readonly ServerConfig m_server_config = new ServerConfig(); -// private DynamoDbClient? m_dynamo_db_client; -// private bool m_is_init = false; -// private TestServerLogic? m_server_logic; -// -// // public UserDocRepoTests() -// // { -// // // var user = new UserEntity(); -// // // user.OnInit(); -// // } -// -// private async Task init() -// { -// if (m_is_init) return; -// Log.NLogFileName = "./Config/nlog-BrokerApiServer.config"; -// Log.initLog("BrokerApiServerTest", "Developer"); -// var path = "./Config/ServerConfig-Local.json"; -// var full_path = Path.GetFullPath(path); -// m_server_config.setConfigFilePath(full_path); -// var result =m_server_config.loadConfig(); -// Assert.True(result.isSuccess()); -// Assert.NotNull(m_dynamo_db_client); -// m_server_logic = new TestServerLogic(m_dynamo_db_client, m_server_config); -// ServerLogicApp.setServerLogicApp(m_server_logic); -// -// m_dynamo_db_client = new DynamoDbClient(); -// var connection_result = m_dynamo_db_client.connectToDb(m_server_config); -// await m_dynamo_db_client.createDBIfNotExists(false); -// Assert.True(connection_result.isSuccess()); -// -// m_is_init = true; -// } -// -// [Fact] -// public async Task findTests() -// { -// await init(); -// -// //============================================================================================= -// // db에 "heon3" 계정이 존재한다는 전제로 테스트 진행 -// //============================================================================================= -// -// // TODO: 계정을 생성하는 절차를 추가할 것 -// -// var account_id = "heon3"; -// Assert.NotNull(m_dynamo_db_client); -// var account_repo = new AccountDocRepo(m_dynamo_db_client); -// var (result_account, account_attrib) = await account_repo.findAccountBaseAttrib(account_id); -// Assert.True(result_account.isSuccess()); -// Assert.NotNull(account_attrib); -// -// var user_guid = account_attrib.UserGuid; -// Assert.NotNull(user_guid); -// -// var user_doc_repo = new UserBaseDocRepo(m_dynamo_db_client); -// var (result_user, user_attrib) = await user_doc_repo.findUserBaseAttrib(user_guid); -// Assert.True(result_user.isSuccess()); -// Assert.NotNull(user_attrib); -// Assert.True(user_attrib.UserGuid == user_guid); -// Assert.True(user_attrib.AccountId == account_id); -// -// // var money_doc_repo = new MoneyDocRepo(m_dynamo_db_client); -// // var (result_money, money_attrib) = await money_doc_repo.findMoneyAttrib(user_guid, CancellationToken.None); -// // Assert.True(result_money.isSuccess()); -// // Assert.NotNull(money_attrib); -// // Assert.True(money_attrib.Sapphire >= 0); -// // Assert.True(money_attrib.Gold >= 0); -// // Assert.True(money_attrib.Ruby >= 0); -// // Assert.True(money_attrib.Calium >= 0); -// } -// -// private async Task findUser(string accountId) -// { -// await init(); -// Assert.NotNull(m_dynamo_db_client); -// var account_repo = new AccountDocRepo(m_dynamo_db_client); -// var (result_account, account_attrib) = await account_repo.findAccountBaseAttrib(accountId); -// Assert.True(result_account.isSuccess()); -// Assert.NotNull(account_attrib); -// -// var user_guid = account_attrib.UserGuid; -// Assert.NotNull(user_guid); -// -// var user_doc_repo = new UserBaseDocRepo(m_dynamo_db_client); -// var (result_user, user_attrib) = await user_doc_repo.findUserBaseAttrib(user_guid); -// Assert.True(result_user.isSuccess()); -// Assert.NotNull(user_attrib); -// return user_attrib.UserGuid; -// } -// } diff --git a/BrokerApiTest/bin/Debug/net8.0/.msCoverageSourceRootsMapping_BrokerApiTest b/BrokerApiTest/bin/Debug/net8.0/.msCoverageSourceRootsMapping_BrokerApiTest index 5925da8..fca25bf 100644 Binary files a/BrokerApiTest/bin/Debug/net8.0/.msCoverageSourceRootsMapping_BrokerApiTest and b/BrokerApiTest/bin/Debug/net8.0/.msCoverageSourceRootsMapping_BrokerApiTest differ diff --git a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json index ba02a07..7ab429c 100644 --- a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json +++ b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json @@ -90,16 +90,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -129,7 +139,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -138,8 +148,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -163,7 +173,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -172,7 +182,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -289,16 +299,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -328,7 +348,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -337,8 +357,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -362,7 +382,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -371,7 +391,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -479,16 +499,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -518,7 +548,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -527,8 +557,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -552,7 +582,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -561,7 +591,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -651,16 +681,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -690,7 +730,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -699,8 +739,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -724,7 +764,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -733,7 +773,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -816,16 +856,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -855,7 +905,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -864,8 +914,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -889,7 +939,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -898,7 +948,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -987,16 +1037,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1026,7 +1086,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1035,8 +1095,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1060,7 +1120,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1069,7 +1129,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1145,22 +1205,27 @@ }, "AWSSDK.Core": { "target": "Package", - "version": "[3.7.402.39, )", + "version": "[3.7.402.46, )", "versionCentrallyManaged": true }, "AWSSDK.DynamoDBv2": { "target": "Package", - "version": "[3.7.406.21, )", + "version": "[3.7.407, )", "versionCentrallyManaged": true }, "AWSSDK.OpenSearchService": { "target": "Package", - "version": "[3.7.404.75, )", + "version": "[3.7.404.81, )", "versionCentrallyManaged": true }, "AWSSDK.S3": { "target": "Package", - "version": "[3.7.416.9, )", + "version": "[3.7.416.15, )", + "versionCentrallyManaged": true + }, + "AWSSDK.SecurityToken": { + "target": "Package", + "version": "[3.7.401.89, )", "versionCentrallyManaged": true }, "AsyncStateMachine": { @@ -1168,11 +1233,66 @@ "version": "[1.3.2, )", "versionCentrallyManaged": true }, + "AutoMapper": { + "target": "Package", + "version": "[14.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.AspNetCore.OData.EFCore": { + "target": "Package", + "version": "[7.0.1, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Collection": { + "target": "Package", + "version": "[11.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Collection.EntityFrameworkCore": { + "target": "Package", + "version": "[11.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Contrib.Autofac.DependencyInjection": { + "target": "Package", + "version": "[9.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Data": { + "target": "Package", + "version": "[9.0.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.EF6": { + "target": "Package", + "version": "[3.0.1, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Extensions.EnumMapping": { + "target": "Package", + "version": "[4.1.0, )", + "versionCentrallyManaged": true + }, + "AutoMapper.Extensions.ExpressionMapping": { + "target": "Package", + "version": "[8.0.0, )", + "versionCentrallyManaged": true + }, "Axion.ConcurrentHashSet": { "target": "Package", "version": "[1.0.0, )", "versionCentrallyManaged": true }, + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.0.3, )", + "versionCentrallyManaged": true + }, + "BouncyCastle.Cryptography": { + "target": "Package", + "version": "[2.5.1, )", + "versionCentrallyManaged": true + }, "CommandLineParser": { "target": "Package", "version": "[2.9.1, )", @@ -1203,6 +1323,16 @@ "version": "[0.2.621003, )", "versionCentrallyManaged": true }, + "Microsoft.Extensions.Configuration": { + "target": "Package", + "version": "[9.0.4, )", + "versionCentrallyManaged": true + }, + "Microsoft.Extensions.Options": { + "target": "Package", + "version": "[9.0.4, )", + "versionCentrallyManaged": true + }, "MongoDB.Analyzer": { "target": "Package", "version": "[1.5.0, )", @@ -1255,7 +1385,7 @@ }, "SSH.NET": { "target": "Package", - "version": "[2024.2.0, )", + "version": "[2025.0.0, )", "versionCentrallyManaged": true }, "StackExchange.Redis": { @@ -1280,7 +1410,7 @@ }, "System.IdentityModel.Tokens.Jwt": { "target": "Package", - "version": "[8.8.0, )", + "version": "[8.9.0, )", "versionCentrallyManaged": true }, "YamlDotNet": { @@ -1294,16 +1424,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1333,7 +1473,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1342,8 +1482,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1367,7 +1507,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1376,7 +1516,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1459,16 +1599,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1498,7 +1648,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1507,8 +1657,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1532,7 +1682,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1541,7 +1691,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1638,16 +1788,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1677,7 +1837,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1686,8 +1846,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1711,7 +1871,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1720,7 +1880,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1810,16 +1970,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -1849,7 +2019,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -1858,8 +2028,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -1883,7 +2053,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -1892,7 +2062,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -1979,16 +2149,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -2018,7 +2198,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -2027,8 +2207,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -2052,7 +2232,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -2061,7 +2241,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -2170,16 +2350,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -2209,7 +2399,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -2218,8 +2408,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -2243,7 +2433,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -2252,7 +2442,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", @@ -2352,16 +2542,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -2391,7 +2591,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -2400,8 +2600,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -2425,7 +2625,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -2434,7 +2634,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", diff --git a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.props b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.props index 9df8a81..52c07e3 100644 --- a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.props +++ b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.props @@ -16,7 +16,8 @@ - + + @@ -24,10 +25,12 @@ C:\Users\user\.nuget\packages\xunit.analyzers\1.18.0 C:\Users\user\.nuget\packages\mongodb.analyzer\1.5.0 - C:\Users\user\.nuget\packages\awssdk.core\3.7.402.39 - C:\Users\user\.nuget\packages\awssdk.s3\3.7.416.9 - C:\Users\user\.nuget\packages\awssdk.opensearchservice\3.7.404.75 - C:\Users\user\.nuget\packages\awssdk.dynamodbv2\3.7.406.21 + C:\Users\user\.nuget\packages\entityframework\6.5.1 + C:\Users\user\.nuget\packages\awssdk.core\3.7.402.46 + C:\Users\user\.nuget\packages\awssdk.securitytoken\3.7.401.89 + C:\Users\user\.nuget\packages\awssdk.s3\3.7.416.15 + C:\Users\user\.nuget\packages\awssdk.opensearchservice\3.7.404.81 + C:\Users\user\.nuget\packages\awssdk.dynamodbv2\3.7.407 C:\Users\user\.nuget\packages\awssdk.cloudwatchlogs\3.7.305.15 C:\Users\user\.nuget\packages\awssdk.ec2\3.7.330.4 diff --git a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.targets b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.targets index f7b410a..6483626 100644 --- a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.targets +++ b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.g.targets @@ -4,8 +4,9 @@ - - + + + diff --git a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache index 92e2ced..4d3a90e 100644 Binary files a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache and b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache differ diff --git a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache index b52f46d..b01eccf 100644 Binary files a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache and b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache differ diff --git a/BrokerApiTest/obj/project.assets.json b/BrokerApiTest/obj/project.assets.json index a0d01e4..4e53e0c 100644 --- a/BrokerApiTest/obj/project.assets.json +++ b/BrokerApiTest/obj/project.assets.json @@ -66,6 +66,161 @@ "lib/net7.0/AsyncStateMachine.dll": {} } }, + "Autofac/8.2.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "8.0.1" + }, + "compile": { + "lib/net8.0/Autofac.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Autofac.dll": { + "related": ".xml" + } + } + }, + "AutoMapper/14.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/AutoMapper.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.AspNetCore.OData.EFCore/7.0.1": { + "type": "package", + "dependencies": { + "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)", + "LogicBuilder.Expressions.Utils": "7.0.0", + "Microsoft.AspNetCore.OData": "9.1.1", + "Microsoft.EntityFrameworkCore": "8.0.11" + }, + "compile": { + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "AutoMapper.Collection/11.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Collection.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.Collection.dll": {} + } + }, + "AutoMapper.Collection.EntityFrameworkCore/11.0.0": { + "type": "package", + "dependencies": { + "AutoMapper.Collection": "[11.0.0, 12.0.0)", + "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)", + "Microsoft.EntityFrameworkCore": "9.0.2" + }, + "compile": { + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {} + }, + "runtime": { + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {} + } + }, + "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "14.0.0", + "Autofac": "8.2.0" + }, + "compile": { + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": { + "related": ".pdb" + } + } + }, + "AutoMapper.Data/9.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Data.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Data.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.EF6/3.0.1": { + "type": "package", + "dependencies": { + "AutoMapper": "10.1.1", + "DelegateDecompiler.EntityFramework": "0.34.0", + "EntityFramework": "6.5.1" + }, + "compile": { + "lib/netstandard2.1/AutoMapper.EF6.dll": {} + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.EF6.dll": {} + } + }, + "AutoMapper.Extensions.EnumMapping/4.1.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.Extensions.ExpressionMapping/8.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "[14.0.0, 15.0.0)" + }, + "compile": { + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": { + "related": ".xml" + } + } + }, "AWS.Logger.Core/3.3.3": { "type": "package", "dependencies": { @@ -115,7 +270,7 @@ } } }, - "AWSSDK.Core/3.7.402.39": { + "AWSSDK.Core/3.7.402.46": { "type": "package", "compile": { "lib/net8.0/AWSSDK.Core.dll": { @@ -128,10 +283,10 @@ } } }, - "AWSSDK.DynamoDBv2/3.7.406.21": { + "AWSSDK.DynamoDBv2/3.7.407": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.DynamoDBv2.dll": { @@ -160,10 +315,10 @@ } } }, - "AWSSDK.OpenSearchService/3.7.404.75": { + "AWSSDK.OpenSearchService/3.7.404.81": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.OpenSearchService.dll": { @@ -176,10 +331,10 @@ } } }, - "AWSSDK.S3/3.7.416.9": { + "AWSSDK.S3/3.7.416.15": { "type": "package", "dependencies": { - "AWSSDK.Core": "[3.7.402.39, 4.0.0)" + "AWSSDK.Core": "[3.7.402.45, 4.0.0)" }, "compile": { "lib/net8.0/AWSSDK.S3.dll": { @@ -192,6 +347,22 @@ } } }, + "AWSSDK.SecurityToken/3.7.401.89": { + "type": "package", + "dependencies": { + "AWSSDK.Core": "[3.7.402.46, 4.0.0)" + }, + "compile": { + "lib/net8.0/AWSSDK.SecurityToken.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/AWSSDK.SecurityToken.dll": { + "related": ".pdb;.xml" + } + } + }, "Axion.ConcurrentHashSet/1.0.0": { "type": "package", "compile": { @@ -205,7 +376,20 @@ } } }, - "BouncyCastle.Cryptography/2.4.0": { + "BCrypt.Net-Next/4.0.3": { + "type": "package", + "compile": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + } + }, + "BouncyCastle.Cryptography/2.5.1": { "type": "package", "compile": { "lib/net6.0/BouncyCastle.Cryptography.dll": { @@ -260,6 +444,31 @@ } } }, + "DelegateDecompiler/0.34.0": { + "type": "package", + "dependencies": { + "Mono.Reflection": "2.0.0" + }, + "compile": { + "lib/netstandard2.1/DelegateDecompiler.dll": {} + }, + "runtime": { + "lib/netstandard2.1/DelegateDecompiler.dll": {} + } + }, + "DelegateDecompiler.EntityFramework/0.34.0": { + "type": "package", + "dependencies": { + "DelegateDecompiler": "0.34.0", + "EntityFramework": "6.3.0" + }, + "compile": { + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {} + }, + "runtime": { + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {} + } + }, "DnsClient/1.6.1": { "type": "package", "dependencies": { @@ -298,6 +507,36 @@ "lib/netcoreapp2.0/DumpExtensions.dll": {} } }, + "EntityFramework/6.5.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.CodeDom": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.6" + }, + "compile": { + "lib/netstandard2.1/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/netstandard2.1/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "runtime": { + "lib/netstandard2.1/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/netstandard2.1/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "build": { + "buildTransitive/net6.0/EntityFramework.props": {}, + "buildTransitive/net6.0/EntityFramework.targets": {} + } + }, "Google.Protobuf/3.27.1": { "type": "package", "compile": { @@ -481,6 +720,29 @@ } } }, + "LogicBuilder.Expressions.Utils/7.0.0": { + "type": "package", + "dependencies": { + "LogicBuilder.Structures": "7.0.0", + "Microsoft.CSharp": "4.7.0", + "System.Reflection.Emit": "4.7.0" + }, + "compile": { + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {} + }, + "runtime": { + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {} + } + }, + "LogicBuilder.Structures/7.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/LogicBuilder.Structures.dll": {} + }, + "runtime": { + "lib/netstandard2.0/LogicBuilder.Structures.dll": {} + } + }, "MediatR/12.3.0": { "type": "package", "dependencies": { @@ -554,6 +816,25 @@ "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets": {} } }, + "Microsoft.AspNetCore.OData/9.1.1": { + "type": "package", + "dependencies": { + "Microsoft.OData.Core": "[8.2.2, 9.0.0)", + "Microsoft.OData.Edm": "[8.2.2, 9.0.0)", + "Microsoft.OData.ModelBuilder": "[2.0.0, 3.0.0)", + "Microsoft.Spatial": "[8.2.2, 9.0.0)" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.OData.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.OData.dll": { + "related": ".xml" + } + } + }, "Microsoft.AspNetCore.TestHost/8.0.2": { "type": "package", "dependencies": { @@ -573,6 +854,19 @@ "Microsoft.AspNetCore.App" ] }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, "Microsoft.Bcl.Memory/9.0.0": { "type": "package", "compile": { @@ -602,6 +896,15 @@ "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} } }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, "Microsoft.Diagnostics.NETCore.Client/0.2.621003": { "type": "package", "dependencies": { @@ -618,13 +921,13 @@ } } }, - "Microsoft.EntityFrameworkCore/8.0.2": { + "Microsoft.EntityFrameworkCore/9.0.2": { "type": "package", "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.2", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.2", - "Microsoft.Extensions.Caching.Memory": "8.0.0", - "Microsoft.Extensions.Logging": "8.0.0" + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.2", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.2", + "Microsoft.Extensions.Caching.Memory": "9.0.2", + "Microsoft.Extensions.Logging": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { @@ -640,7 +943,7 @@ "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} } }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { + "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": { "type": "package", "compile": { "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { @@ -653,14 +956,8 @@ } } }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/_._": {} - } + "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": { + "type": "package" }, "Microsoft.EntityFrameworkCore.Relational/8.0.2": { "type": "package", @@ -679,10 +976,10 @@ } } }, - "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "Microsoft.Extensions.Caching.Abstractions/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Primitives": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { @@ -695,17 +992,17 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Caching.Memory/8.0.0": { + "Microsoft.Extensions.Caching.Memory/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Caching.Abstractions": "9.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.2", + "Microsoft.Extensions.Options": "9.0.2", + "Microsoft.Extensions.Primitives": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { @@ -718,14 +1015,14 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Configuration/8.0.0": { + "Microsoft.Extensions.Configuration/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Configuration.dll": { @@ -738,13 +1035,13 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "Microsoft.Extensions.Configuration.Abstractions/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { @@ -757,7 +1054,7 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, "Microsoft.Extensions.Configuration.Binder/8.0.0": { @@ -888,10 +1185,10 @@ "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} } }, - "Microsoft.Extensions.DependencyInjection/8.0.0": { + "Microsoft.Extensions.DependencyInjection/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { @@ -904,10 +1201,10 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": { "type": "package", "compile": { "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { @@ -920,7 +1217,7 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, "Microsoft.Extensions.DependencyModel/8.0.0": { @@ -1128,12 +1425,12 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Logging/8.0.0": { + "Microsoft.Extensions.Logging/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0" + "Microsoft.Extensions.DependencyInjection": "9.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.2", + "Microsoft.Extensions.Options": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Logging.dll": { @@ -1146,13 +1443,14 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "Microsoft.Extensions.Logging.Abstractions/9.0.2": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2", + "System.Diagnostics.DiagnosticSource": "9.0.2" }, "compile": { "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { @@ -1165,7 +1463,7 @@ } }, "build": { - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} } }, "Microsoft.Extensions.Logging.Configuration/8.0.0": { @@ -1286,11 +1584,24 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Options/8.0.0": { + "Microsoft.Extensions.ObjectPool/6.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Options/9.0.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" }, "compile": { "lib/net8.0/Microsoft.Extensions.Options.dll": { @@ -1303,7 +1614,7 @@ } }, "build": { - "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} } }, "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { @@ -1329,7 +1640,7 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Primitives/8.0.0": { + "Microsoft.Extensions.Primitives/9.0.4": { "type": "package", "compile": { "lib/net8.0/Microsoft.Extensions.Primitives.dll": { @@ -1342,10 +1653,10 @@ } }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, - "Microsoft.IdentityModel.Abstractions/8.8.0": { + "Microsoft.IdentityModel.Abstractions/8.9.0": { "type": "package", "compile": { "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { @@ -1358,10 +1669,10 @@ } } }, - "Microsoft.IdentityModel.JsonWebTokens/8.8.0": { + "Microsoft.IdentityModel.JsonWebTokens/8.9.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.8.0" + "Microsoft.IdentityModel.Tokens": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { @@ -1374,10 +1685,10 @@ } } }, - "Microsoft.IdentityModel.Logging/8.8.0": { + "Microsoft.IdentityModel.Logging/8.9.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.8.0" + "Microsoft.IdentityModel.Abstractions": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { @@ -1424,12 +1735,12 @@ } } }, - "Microsoft.IdentityModel.Tokens/8.8.0": { + "Microsoft.IdentityModel.Tokens/8.9.0": { "type": "package", "dependencies": { "Microsoft.Bcl.Memory": "9.0.0", "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.8.0" + "Microsoft.IdentityModel.Logging": "8.9.0" }, "compile": { "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { @@ -1462,13 +1773,59 @@ "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} } }, - "Microsoft.NETCore.Platforms/5.0.0": { + "Microsoft.OData.Core/8.2.2": { "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "Microsoft.Extensions.ObjectPool": "6.0.3", + "Microsoft.OData.Edm": "[8.2.2]", + "Microsoft.Spatial": "[8.2.2]" + }, "compile": { - "lib/netstandard1.0/_._": {} + "lib/net8.0/Microsoft.OData.Core.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard1.0/_._": {} + "lib/net8.0/Microsoft.OData.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OData.Edm/8.2.2": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.6.0", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.OData.Edm.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.OData.Edm.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OData.ModelBuilder/2.0.0": { + "type": "package", + "dependencies": { + "Microsoft.OData.Edm": "[8.0.0, 9.0.0)", + "Microsoft.Spatial": "[8.0.0, 9.0.0)", + "System.ComponentModel.Annotations": "4.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.OData.ModelBuilder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.OData.ModelBuilder.dll": { + "related": ".xml" + } } }, "Microsoft.OpenApi/1.6.22": { @@ -1484,6 +1841,19 @@ } } }, + "Microsoft.Spatial/8.2.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Spatial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Spatial.dll": { + "related": ".xml" + } + } + }, "Microsoft.TestPlatform.ObjectModel/17.12.0": { "type": "package", "dependencies": { @@ -1756,6 +2126,28 @@ } } }, + "Microsoft.Win32.SystemEvents/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, "MongoDB.Analyzer/1.5.0": { "type": "package" }, @@ -1798,6 +2190,19 @@ } } }, + "Mono.Reflection/2.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Mono.Reflection.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/netstandard2.0/Mono.Reflection.dll": { + "related": ".pdb" + } + } + }, "Moq/4.20.72": { "type": "package", "dependencies": { @@ -2095,6 +2500,41 @@ } } }, + "runtime.native.System.Data.SqlClient.sni/4.7.0": { + "type": "package", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-arm64/native/sni.dll": { + "assetType": "native", + "rid": "win-arm64" + } + } + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-x64/native/sni.dll": { + "assetType": "native", + "rid": "win-x64" + } + } + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "type": "package", + "runtimeTargets": { + "runtimes/win-x86/native/sni.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, "SharpCompress/0.30.1": { "type": "package", "compile": { @@ -2117,10 +2557,11 @@ } } }, - "SSH.NET/2024.2.0": { + "SSH.NET/2025.0.0": { "type": "package", "dependencies": { - "BouncyCastle.Cryptography": "2.4.0" + "BouncyCastle.Cryptography": "2.5.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.3" }, "compile": { "lib/net8.0/Renci.SshNet.dll": { @@ -2264,6 +2705,22 @@ "lib/netcoreapp2.0/_._": {} } }, + "System.CodeDom/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.CodeDom.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.CodeDom.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, "System.Collections.Immutable/1.7.1": { "type": "package", "compile": { @@ -2277,7 +2734,68 @@ } } }, - "System.Diagnostics.DiagnosticSource/8.0.0": { + "System.ComponentModel.Annotations/5.0.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + } + }, + "System.Configuration.ConfigurationManager/6.0.1": { + "type": "package", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Configuration.ConfigurationManager.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Configuration.ConfigurationManager.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Data.SqlClient/4.8.6": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "System.Security.Principal.Windows": "4.7.0", + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + }, + "compile": { + "ref/netcoreapp2.1/System.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.DiagnosticSource/9.0.2": { "type": "package", "compile": { "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { @@ -2289,8 +2807,15 @@ "related": ".xml" } }, + "contentFiles": { + "contentFiles/any/any/_._": { + "buildAction": "None", + "codeLanguage": "any", + "copyToOutput": false + } + }, "build": { - "buildTransitive/net6.0/_._": {} + "buildTransitive/net8.0/_._": {} } }, "System.Diagnostics.EventLog/8.0.0": { @@ -2319,11 +2844,40 @@ } } }, - "System.IdentityModel.Tokens.Jwt/8.8.0": { + "System.Drawing.Common/6.0.0": { "type": "package", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.8.0", - "Microsoft.IdentityModel.Tokens": "8.8.0" + "Microsoft.Win32.SystemEvents": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Drawing.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Drawing.Common.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/net6.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net6.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IdentityModel.Tokens.Jwt/8.9.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.9.0", + "Microsoft.IdentityModel.Tokens": "8.9.0" }, "compile": { "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { @@ -2377,6 +2931,15 @@ "buildTransitive/net6.0/_._": {} } }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, "System.Reflection.Metadata/1.6.0": { "type": "package", "compile": { @@ -2403,29 +2966,70 @@ } } }, - "System.Security.AccessControl/5.0.0": { + "System.Security.AccessControl/6.0.0": { "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - }, "compile": { - "ref/netstandard2.0/System.Security.AccessControl.dll": { + "lib/net6.0/System.Security.AccessControl.dll": { "related": ".xml" } }, "runtime": { - "lib/netstandard2.0/System.Security.AccessControl.dll": { + "lib/net6.0/System.Security.AccessControl.dll": { "related": ".xml" } }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { + "runtimes/win/lib/net6.0/System.Security.AccessControl.dll": { "assetType": "runtime", "rid": "win" } } }, + "System.Security.Cryptography.ProtectedData/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Permissions/6.0.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "6.0.0", + "System.Windows.Extensions": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Security.Permissions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Security.Permissions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, "System.Security.Principal.Windows/5.0.0": { "type": "package", "compile": { @@ -2506,6 +3110,28 @@ "buildTransitive/net6.0/_._": {} } }, + "System.Windows.Extensions/6.0.0": { + "type": "package", + "dependencies": { + "System.Drawing.Common": "6.0.0" + }, + "compile": { + "lib/net6.0/System.Windows.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Windows.Extensions.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Windows.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, "xunit/2.9.3": { "type": "package", "dependencies": { @@ -2797,18 +3423,32 @@ "framework": ".NETCoreApp,Version=v8.0", "dependencies": { "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "Axion.ConcurrentHashSet": "1.0.0", + "BCrypt.Net-Next": "4.0.3", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "DotNet.MultiMap": "2.2.1", "DumpExtensions": "2.0.0", "Google.Protobuf": "3.27.1", "JWT": "11.0.0", "Microsoft.Diagnostics.NETCore.Client": "0.2.621003", + "Microsoft.Extensions.Configuration": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "MongoDB.Analyzer": "1.5.0", "MongoDB.Bson": "3.3.0", "MongoDB.Driver": "3.3.0", @@ -2819,12 +3459,12 @@ "Nito.AsyncEx": "5.1.2", "Otp.NET": "1.4.0", "RabbitMQ.Client": "6.8.1", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", "StackExchange.Redis.MultiplexerPool": "2.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "YamlDotNet": "16.3.0" }, "compile": { @@ -2919,6 +3559,156 @@ "lib/netstandard2.0/AsyncStateMachine.dll" ] }, + "Autofac/8.2.0": { + "sha512": "T+4+W4byzyUOarCbIcFRbxpYKC+cndfQm/+VeWpB60P2MCN0JMsewUhZqvH5Ooe936HQjn5uHvEY9tq6BfbiIw==", + "type": "package", + "path": "autofac/8.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "autofac.8.2.0.nupkg.sha512", + "autofac.nuspec", + "icon.png", + "lib/net6.0/Autofac.dll", + "lib/net6.0/Autofac.xml", + "lib/net7.0/Autofac.dll", + "lib/net7.0/Autofac.xml", + "lib/net8.0/Autofac.dll", + "lib/net8.0/Autofac.xml", + "lib/netstandard2.0/Autofac.dll", + "lib/netstandard2.0/Autofac.xml", + "lib/netstandard2.1/Autofac.dll", + "lib/netstandard2.1/Autofac.xml" + ] + }, + "AutoMapper/14.0.0": { + "sha512": "OC+1neAPM4oCCqQj3g2GJ2shziNNhOkxmNB9cVS8jtx4JbgmRzLcUOxB9Tsz6cVPHugdkHgCaCrTjjSI0Z5sCQ==", + "type": "package", + "path": "automapper/14.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.14.0.0.nupkg.sha512", + "automapper.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.dll", + "lib/net8.0/AutoMapper.xml" + ] + }, + "AutoMapper.AspNetCore.OData.EFCore/7.0.1": { + "sha512": "VfJFmLdPjdKX1gOlUx9+n1hdi9tFadsEDd28iSsTy26SdOe8AuV9fWozVMXg6663qBbw/7LiaPP19VgRlfFkOA==", + "type": "package", + "path": "automapper.aspnetcore.odata.efcore/7.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512", + "automapper.aspnetcore.odata.efcore.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll", + "lib/net9.0/AutoMapper.AspNetCore.OData.EFCore.dll" + ] + }, + "AutoMapper.Collection/11.0.0": { + "sha512": "26CXTuPsIbfk121na1sWt/QcJ4EkXtlWy6R+LJFvsxiF80d2srbUgL0WgZn9mDyrJo4Hvvyqr/WFwNrVOKMiHQ==", + "type": "package", + "path": "automapper.collection/11.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.collection.11.0.0.nupkg.sha512", + "automapper.collection.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Collection.dll" + ] + }, + "AutoMapper.Collection.EntityFrameworkCore/11.0.0": { + "sha512": "+IHCGSLfdc2pNXEUF2Kz8P1I1anCqPlEGWswMzTz1tZ2eRod9bY609TS55dg2NlS8e9CKebIoT3e/c4m90jCoQ==", + "type": "package", + "path": "automapper.collection.entityframeworkcore/11.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512", + "automapper.collection.entityframeworkcore.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll" + ] + }, + "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": { + "sha512": "vomQXQ4vqWUhl5tpbUbD3200BtlVJxdAUdCMa08a/vzRL6S9MJb2mN6EplaXXA3FLH1a3lPT1KpiHu6AlooQ/w==", + "type": "package", + "path": "automapper.contrib.autofac.dependencyinjection/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512", + "automapper.contrib.autofac.dependencyinjection.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll", + "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.pdb" + ] + }, + "AutoMapper.Data/9.0.0": { + "sha512": "OI0+nHZaVGZCys2Nz7YV1I5ZjKjuTM2NXlAUmd2Nx68s4qX5m8piUfSapVjxInoQDf5PJ7Mox7a1lEZHpSHYpg==", + "type": "package", + "path": "automapper.data/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.data.9.0.0.nupkg.sha512", + "automapper.data.nuspec", + "lib/net8.0/AutoMapper.Data.dll", + "lib/net8.0/AutoMapper.Data.xml" + ] + }, + "AutoMapper.EF6/3.0.1": { + "sha512": "4w8gqn6NixT69TmH5Iup2nFoC6bYtjwh/QozOvOEbnu6imnegZE2DE4EqEG6Fis1dKKJ6WT9NCbiWC4NZv7Abw==", + "type": "package", + "path": "automapper.ef6/3.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.ef6.3.0.1.nupkg.sha512", + "automapper.ef6.nuspec", + "lib/net462/AutoMapper.EF6.dll", + "lib/netstandard2.1/AutoMapper.EF6.dll" + ] + }, + "AutoMapper.Extensions.EnumMapping/4.1.0": { + "sha512": "4i6FVLOequZNLgU6CRFbT900tBHb6JxyJty7Q8Rf7wMiwIBy/PkjsOT7Vz6svacFykghEy7PURSxpO9Fl2OUsA==", + "type": "package", + "path": "automapper.extensions.enummapping/4.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.extensions.enummapping.4.1.0.nupkg.sha512", + "automapper.extensions.enummapping.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll", + "lib/net8.0/AutoMapper.Extensions.EnumMapping.xml" + ] + }, + "AutoMapper.Extensions.ExpressionMapping/8.0.0": { + "sha512": "fR55QEOt8GiaVQPuEpyWJAzZxFSInCIYg6E1EoqQByWnjzQnQ5zHwQvMMF3E+AdtvAzbG7Intm08/8pK8eUTvQ==", + "type": "package", + "path": "automapper.extensions.expressionmapping/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.extensions.expressionmapping.8.0.0.nupkg.sha512", + "automapper.extensions.expressionmapping.nuspec", + "icon.png", + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll", + "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.xml" + ] + }, "AWS.Logger.Core/3.3.3": { "sha512": "JEXjiwIwAws5YJZDVwSqUoZIjMxsAuaZOQFZfLk6lYTg9NLrFY1dHafy6qifz/8ZQSlBiuSs+MAAHlBqHF9Cfw==", "type": "package", @@ -2991,15 +3781,15 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.Core/3.7.402.39": { - "sha512": "tfhDM14yy3P/Hrrq6pxmG+DojJcghnCYpuEAHPgTPAcMlffL3nVIHRtzsUTnCrR1B6qwGtxHd6f3IOhL6m+fSA==", + "AWSSDK.Core/3.7.402.46": { + "sha512": "/W2Y/8PmNilP4qONoPJz5/AgHwvwblmE8wvf1nG+oqqd2fX88vUNRToHmdVxZUqjLtx64VryI7iGKRaPUDMkTA==", "type": "package", - "path": "awssdk.core/3.7.402.39", + "path": "awssdk.core/3.7.402.46", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", - "awssdk.core.3.7.402.39.nupkg.sha512", + "awssdk.core.3.7.402.46.nupkg.sha512", "awssdk.core.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.Core.dll", @@ -3020,17 +3810,17 @@ "tools/account-management.ps1" ] }, - "AWSSDK.DynamoDBv2/3.7.406.21": { - "sha512": "WMfkpnUTqXMfwbdsg2neC9ZEmueNAXjkbuITh9oVEe7TLVkE9O2+8jo/qZOfwa16dYsDgPigBGyO+pJAKfp8yg==", + "AWSSDK.DynamoDBv2/3.7.407": { + "sha512": "YhenYMRx4d//UI6oEzvOPx/z8lBpSYQDel+JcFTIyR1IuRq1S3Fj3EOKUkjO8Rc24tcW9iO7fwvQldCYm50AyQ==", "type": "package", - "path": "awssdk.dynamodbv2/3.7.406.21", + "path": "awssdk.dynamodbv2/3.7.407", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.DynamoDBv2.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.dynamodbv2.3.7.406.21.nupkg.sha512", + "awssdk.dynamodbv2.3.7.407.nupkg.sha512", "awssdk.dynamodbv2.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.DynamoDBv2.dll", @@ -3084,17 +3874,17 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.OpenSearchService/3.7.404.75": { - "sha512": "O4k6MR2SpKf/bplYdfTgAtm7x9oiI66gx32DaSTuTB6UY39sG9AddmSTNGWTqU6qI+3zgb3BJq4YIXhKHWdPXA==", + "AWSSDK.OpenSearchService/3.7.404.81": { + "sha512": "ozC9j1qTmCu+01U5aA2/tp2aPYDUvhtc94eGNq/Z4qp1ybjjxpH5mY00v7vL9xC4OY6NnxY2miLS/VvxsqsTsg==", "type": "package", - "path": "awssdk.opensearchservice/3.7.404.75", + "path": "awssdk.opensearchservice/3.7.404.81", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.OpenSearchService.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.opensearchservice.3.7.404.75.nupkg.sha512", + "awssdk.opensearchservice.3.7.404.81.nupkg.sha512", "awssdk.opensearchservice.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.OpenSearchService.dll", @@ -3116,17 +3906,17 @@ "tools/uninstall.ps1" ] }, - "AWSSDK.S3/3.7.416.9": { - "sha512": "o+Rnsn6mVVl/51FN8kIOvJqByXYm9ek545ZUV1zdkYqepAhKRJ1VUBeM3PxrlZmkoeW3Lrf6tMVcqHTU2onnpA==", + "AWSSDK.S3/3.7.416.15": { + "sha512": "jacDKz1W4udfELs1kUMh+joJfy3cxk5MTQ6V8KhN5U0UsdSigticS6p5/8xY3L1RpZrwNTdE4EFE5IV7I4tFDg==", "type": "package", - "path": "awssdk.s3/3.7.416.9", + "path": "awssdk.s3/3.7.416.15", "hasTools": true, "files": [ ".nupkg.metadata", ".signature.p7s", "analyzers/dotnet/cs/AWSSDK.S3.CodeAnalysis.dll", "analyzers/dotnet/cs/SharedAnalysisCode.dll", - "awssdk.s3.3.7.416.9.nupkg.sha512", + "awssdk.s3.3.7.416.15.nupkg.sha512", "awssdk.s3.nuspec", "images/AWSLogo.png", "lib/net35/AWSSDK.S3.dll", @@ -3148,6 +3938,38 @@ "tools/uninstall.ps1" ] }, + "AWSSDK.SecurityToken/3.7.401.89": { + "sha512": "HZ/tPaMoxKYlgTW7k0nLC/9QjyDXY3i+1yI7ptMKlZR378ikmFe4QgMf73MQeG+dIhAKf1SBTAXDytdlPtttcg==", + "type": "package", + "path": "awssdk.securitytoken/3.7.401.89", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "analyzers/dotnet/cs/AWSSDK.SecurityToken.CodeAnalysis.dll", + "analyzers/dotnet/cs/SharedAnalysisCode.dll", + "awssdk.securitytoken.3.7.401.89.nupkg.sha512", + "awssdk.securitytoken.nuspec", + "images/AWSLogo.png", + "lib/net35/AWSSDK.SecurityToken.dll", + "lib/net35/AWSSDK.SecurityToken.pdb", + "lib/net35/AWSSDK.SecurityToken.xml", + "lib/net45/AWSSDK.SecurityToken.dll", + "lib/net45/AWSSDK.SecurityToken.pdb", + "lib/net45/AWSSDK.SecurityToken.xml", + "lib/net8.0/AWSSDK.SecurityToken.dll", + "lib/net8.0/AWSSDK.SecurityToken.pdb", + "lib/net8.0/AWSSDK.SecurityToken.xml", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.dll", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.pdb", + "lib/netcoreapp3.1/AWSSDK.SecurityToken.xml", + "lib/netstandard2.0/AWSSDK.SecurityToken.dll", + "lib/netstandard2.0/AWSSDK.SecurityToken.pdb", + "lib/netstandard2.0/AWSSDK.SecurityToken.xml", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, "Axion.ConcurrentHashSet/1.0.0": { "sha512": "lpDLMEHO6chrdOWWojzEyGsnev/6jFjyL7Z0bcQXWYWupyTqz+3V7frzC/bonvMbZXEwyNzsKkUa3SdkIYBazA==", "type": "package", @@ -3163,16 +3985,47 @@ "lib/netstandard2.0/Axion.ConcurrentHashSet.xml" ] }, - "BouncyCastle.Cryptography/2.4.0": { - "sha512": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==", + "BCrypt.Net-Next/4.0.3": { + "sha512": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==", "type": "package", - "path": "bouncycastle.cryptography/2.4.0", + "path": "bcrypt.net-next/4.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.0.3.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net20/BCrypt.Net-Next.dll", + "lib/net20/BCrypt.Net-Next.xml", + "lib/net35/BCrypt.Net-Next.dll", + "lib/net35/BCrypt.Net-Next.xml", + "lib/net462/BCrypt.Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt.Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt.Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/net5.0/BCrypt.Net-Next.dll", + "lib/net5.0/BCrypt.Net-Next.xml", + "lib/net6.0/BCrypt.Net-Next.dll", + "lib/net6.0/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt.Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt.Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, + "BouncyCastle.Cryptography/2.5.1": { + "sha512": "zy8TMeTP+1FH2NrLaNZtdRbBdq7u5MI+NFZQOBSM69u5RFkciinwzV2eveY6Kjf5MzgsYvvl6kTStsj3JrXqkg==", + "type": "package", + "path": "bouncycastle.cryptography/2.5.1", "files": [ ".nupkg.metadata", ".signature.p7s", "LICENSE.md", "README.md", - "bouncycastle.cryptography.2.4.0.nupkg.sha512", + "bouncycastle.cryptography.2.5.1.nupkg.sha512", "bouncycastle.cryptography.nuspec", "lib/net461/BouncyCastle.Cryptography.dll", "lib/net461/BouncyCastle.Cryptography.xml", @@ -3252,6 +4105,36 @@ "lib/netstandard2.1/CommunityToolkit.Diagnostics.xml" ] }, + "DelegateDecompiler/0.34.0": { + "sha512": "blUx3XMP4lJynw2y34NrnHzrshF2YGOPirxVUhHnAT09L/LwQc8Q6szmNGFi9hLd9AcM4nVAmXIX2DDyqCfwLg==", + "type": "package", + "path": "delegatedecompiler/0.34.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "delegatedecompiler.0.34.0.nupkg.sha512", + "delegatedecompiler.nuspec", + "lib/net40/DelegateDecompiler.dll", + "lib/net45/DelegateDecompiler.dll", + "lib/netstandard2.0/DelegateDecompiler.dll", + "lib/netstandard2.1/DelegateDecompiler.dll" + ] + }, + "DelegateDecompiler.EntityFramework/0.34.0": { + "sha512": "U55TkUKhrAsssd+cgXsEZqYXdT20nJBlEOBdLInsCRt1UghtWhYNZqbnR9oPIV4phrtgmkqj/6kXhfdczYNn4g==", + "type": "package", + "path": "delegatedecompiler.entityframework/0.34.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "delegatedecompiler.entityframework.0.34.0.nupkg.sha512", + "delegatedecompiler.entityframework.nuspec", + "lib/net45/DelegateDecompiler.EntityFramework.dll", + "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll" + ] + }, "DnsClient/1.6.1": { "sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==", "type": "package", @@ -3303,6 +4186,68 @@ "lib/netstandard2.0/DumpExtensions.dll" ] }, + "EntityFramework/6.5.1": { + "sha512": "sQRP2lWg1i3aAGWqdliAM8zrGx7LHMUk+9/MoxUjwfTZYGMXvZ2JYZTlyTm1PqDxvn3c9E3U76TWDON7Y5+CVA==", + "type": "package", + "path": "entityframework/6.5.1", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "README.md", + "build/EntityFramework.DefaultItems.props", + "build/EntityFramework.props", + "build/EntityFramework.targets", + "build/Microsoft.Data.Entity.Build.Tasks.dll", + "build/net6.0/EntityFramework.props", + "build/net6.0/EntityFramework.targets", + "buildTransitive/EntityFramework.props", + "buildTransitive/EntityFramework.targets", + "buildTransitive/net6.0/EntityFramework.props", + "buildTransitive/net6.0/EntityFramework.targets", + "content/net40/App.config.install.xdt", + "content/net40/App.config.transform", + "content/net40/Web.config.install.xdt", + "content/net40/Web.config.transform", + "entityframework.6.5.1.nupkg.sha512", + "entityframework.nuspec", + "lib/net40/EntityFramework.SqlServer.dll", + "lib/net40/EntityFramework.SqlServer.xml", + "lib/net40/EntityFramework.dll", + "lib/net40/EntityFramework.xml", + "lib/net45/EntityFramework.SqlServer.dll", + "lib/net45/EntityFramework.SqlServer.xml", + "lib/net45/EntityFramework.dll", + "lib/net45/EntityFramework.xml", + "lib/netstandard2.1/EntityFramework.SqlServer.dll", + "lib/netstandard2.1/EntityFramework.SqlServer.xml", + "lib/netstandard2.1/EntityFramework.dll", + "lib/netstandard2.1/EntityFramework.xml", + "tools/EntityFramework6.PS2.psd1", + "tools/EntityFramework6.PS2.psm1", + "tools/EntityFramework6.psd1", + "tools/EntityFramework6.psm1", + "tools/about_EntityFramework6.help.txt", + "tools/init.ps1", + "tools/install.ps1", + "tools/net40/any/ef6.exe", + "tools/net40/any/ef6.pdb", + "tools/net40/win-arm64/ef6.exe", + "tools/net40/win-arm64/ef6.pdb", + "tools/net40/win-x86/ef6.exe", + "tools/net40/win-x86/ef6.pdb", + "tools/net45/any/ef6.exe", + "tools/net45/any/ef6.pdb", + "tools/net45/win-arm64/ef6.exe", + "tools/net45/win-arm64/ef6.pdb", + "tools/net45/win-x86/ef6.exe", + "tools/net45/win-x86/ef6.pdb", + "tools/net6.0/any/ef6.dll", + "tools/net6.0/any/ef6.pdb", + "tools/net6.0/any/ef6.runtimeconfig.json" + ] + }, "Google.Protobuf/3.27.1": { "sha512": "7IVz9TzhYCZ8qY0rPhXUnyJSXYdshUqmmxmTI763XmDDSJJFnyfKH43FFcMJu/CZgBcE98xlFztrKwhzcRkiPg==", "type": "package", @@ -3566,6 +4511,32 @@ "lib/netstandard2.0/JWT.xml" ] }, + "LogicBuilder.Expressions.Utils/7.0.0": { + "sha512": "nTlL/5nGPHZ0s987Kta4lFnzU79Px/9R9rFhJi6AxCMHZUz5BUX4Aab1A29iBTLmIMu2DKyQM8iN8q1NK3+CUA==", + "type": "package", + "path": "logicbuilder.expressions.utils/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll", + "logicbuilder.expressions.utils.7.0.0.nupkg.sha512", + "logicbuilder.expressions.utils.nuspec" + ] + }, + "LogicBuilder.Structures/7.0.0": { + "sha512": "KDfzBB7cYk2ras9Nb3xYXuUKs+rvje0vVyGzkXPQCpKsSbugFi2fXz+0MIQ108K+f/mOde7ZBECkkmYObyPf2Q==", + "type": "package", + "path": "logicbuilder.structures/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/LogicBuilder.Structures.dll", + "logicbuilder.structures.7.0.0.nupkg.sha512", + "logicbuilder.structures.nuspec" + ] + }, "MediatR/12.3.0": { "sha512": "DuXRw/qux2n7pTRPond4WK9XImO+30TZrGPCeOmjYIXDWokpjZQDFRsdZMoP0WqWU7inC4m0D+Zbu5dSc4z6NQ==", "type": "package", @@ -3630,6 +4601,20 @@ "tasks/netstandard2.0/Microsoft.AspNetCore.Mvc.Testing.Tasks.dll" ] }, + "Microsoft.AspNetCore.OData/9.1.1": { + "sha512": "if1N+q3dTgUbUZ4KjLXCHYDQLKEEv0gpx8dLaSRp2StrYuWcRVCKjncI7fPcndFkt/nEJcIYzNKxtws4L5OO8Q==", + "type": "package", + "path": "microsoft.aspnetcore.odata/9.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/odata.png", + "lib/net8.0/Microsoft.AspNetCore.OData.dll", + "lib/net8.0/Microsoft.AspNetCore.OData.xml", + "microsoft.aspnetcore.odata.9.1.1.nupkg.sha512", + "microsoft.aspnetcore.odata.nuspec" + ] + }, "Microsoft.AspNetCore.TestHost/8.0.2": { "sha512": "4omKCTKqoIQsJH7LgDPjD8itGoili1WcDghr2jxRS8dYBbFEaX3mkV8A02wH+BC0aHFLwpCkEqFdYSHh1LRrUA==", "type": "package", @@ -3645,6 +4630,30 @@ "microsoft.aspnetcore.testhost.nuspec" ] }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, "Microsoft.Bcl.Memory/9.0.0": { "sha512": "bTUtGfpGyJnohQzjdXbtc7MqNzkv7CWUSRz54+ucNm0i32rZiIU0VdVPHDBShOl1qhVKRjW8mnEBz3d2vH93tQ==", "type": "package", @@ -3741,6 +4750,75 @@ "microsoft.codecoverage.nuspec" ] }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "Microsoft.Diagnostics.NETCore.Client/0.2.621003": { "sha512": "22YdSeB53xk4Pd1Xz92HigUy8ySJMzd8hpEZHlFWeaefzYox4VJnW+gJEzGrxbSvl3oGCpiIFKqh8the0xhzSA==", "type": "package", @@ -3757,46 +4835,48 @@ "microsoft.diagnostics.netcore.client.nuspec" ] }, - "Microsoft.EntityFrameworkCore/8.0.2": { - "sha512": "6QlvBx4rdawW3AkkCsGVV+8qRLk34aknV5JD40s1hbVR18vKmT2KDl2DW83nHcPX7f4oebQ3BD1UMNCI/gkE0g==", + "Microsoft.EntityFrameworkCore/9.0.2": { + "sha512": "P90ZuybgcpW32y985eOYxSoZ9IiL0UTYQlY0y1Pt1iHAnpZj/dQHREpSpry1RNvk8YjAeoAkWFdem5conqB9zQ==", "type": "package", - "path": "microsoft.entityframeworkcore/8.0.2", + "path": "microsoft.entityframeworkcore/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", + "PACKAGE.md", "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", "lib/net8.0/Microsoft.EntityFrameworkCore.dll", "lib/net8.0/Microsoft.EntityFrameworkCore.xml", - "microsoft.entityframeworkcore.8.0.2.nupkg.sha512", + "microsoft.entityframeworkcore.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.nuspec" ] }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.2": { - "sha512": "DjDKp++BTKFZmX+xLTow7grQTY+pImKfhGW68Zf8myiL3zyJ3b8RZbnLsWGNCqKQIF6hJIz/zA/zmERobFwV0A==", + "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": { + "sha512": "oVSjNSIYHsk0N66eqAWgDcyo9etEFbUswbz7SmlYR6nGp05byHrJAYM5N8U2aGWJWJI6WvIC2e4TXJgH6GZ6HQ==", "type": "package", - "path": "microsoft.entityframeworkcore.abstractions/8.0.2", + "path": "microsoft.entityframeworkcore.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", + "PACKAGE.md", "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", - "microsoft.entityframeworkcore.abstractions.8.0.2.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.abstractions.nuspec" ] }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.2": { - "sha512": "LI7awhc0fiAKvcUemsqxXUWqzAH9ywTSyM1rpC1un4p5SE1bhr5nRLvyRVbKRzKakmnNNY3to8NPDnoySEkxVw==", + "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": { + "sha512": "w4jzX7XI+L3erVGzbHXpx64A3QaLXxqG3f1vPpGYYZGpxOIHkh7e4iLLD7cq4Ng1vjkwzWl5ZJp0Kj/nHsgFYg==", "type": "package", - "path": "microsoft.entityframeworkcore.analyzers/8.0.2", + "path": "microsoft.entityframeworkcore.analyzers/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", - "lib/netstandard2.0/_._", - "microsoft.entityframeworkcore.analyzers.8.0.2.nupkg.sha512", + "docs/PACKAGE.md", + "microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512", "microsoft.entityframeworkcore.analyzers.nuspec" ] }, @@ -3814,10 +4894,10 @@ "microsoft.entityframeworkcore.relational.nuspec" ] }, - "Microsoft.Extensions.Caching.Abstractions/8.0.0": { - "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "Microsoft.Extensions.Caching.Abstractions/9.0.2": { + "sha512": "a7QhA25n+BzSM5r5d7JznfyluMBGI7z3qyLlFviZ1Eiqv6DdiK27sLZdP/rpYirBM6UYAKxu5TbmfhIy13GN9A==", "type": "package", - "path": "microsoft.extensions.caching.abstractions/8.0.0", + "path": "microsoft.extensions.caching.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3827,27 +4907,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", - "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512", "microsoft.extensions.caching.abstractions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Caching.Memory/8.0.0": { - "sha512": "7pqivmrZDzo1ADPkRwjy+8jtRKWRCPag9qPI+p7sgu7Q4QreWhcvbiWXsbhP+yY8XSiDvZpu2/LWdBv7PnmOpQ==", + "Microsoft.Extensions.Caching.Memory/9.0.2": { + "sha512": "AlEfp0DMz8E1h1Exi8LBrUCNmCYcGDfSM4F/uK1D1cYx/R3w0LVvlmjICqxqXTsy7BEZaCf5leRZY2FuPEiFaw==", "type": "package", - "path": "microsoft.extensions.caching.memory/8.0.0", + "path": "microsoft.extensions.caching.memory/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3857,27 +4935,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", "lib/net462/Microsoft.Extensions.Caching.Memory.dll", "lib/net462/Microsoft.Extensions.Caching.Memory.xml", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net9.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net9.0/Microsoft.Extensions.Caching.Memory.xml", "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", - "microsoft.extensions.caching.memory.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.memory.9.0.2.nupkg.sha512", "microsoft.extensions.caching.memory.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Configuration/8.0.0": { - "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "Microsoft.Extensions.Configuration/9.0.4": { + "sha512": "KIVBrMbItnCJDd1RF4KEaE8jZwDJcDUJW5zXpbwQ05HNYTK1GveHxHK0B3SjgDJuR48GRACXAO+BLhL8h34S7g==", "type": "package", - "path": "microsoft.extensions.configuration/8.0.0", + "path": "microsoft.extensions.configuration/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3887,27 +4963,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", "lib/net462/Microsoft.Extensions.Configuration.dll", "lib/net462/Microsoft.Extensions.Configuration.xml", - "lib/net6.0/Microsoft.Extensions.Configuration.dll", - "lib/net6.0/Microsoft.Extensions.Configuration.xml", - "lib/net7.0/Microsoft.Extensions.Configuration.dll", - "lib/net7.0/Microsoft.Extensions.Configuration.xml", "lib/net8.0/Microsoft.Extensions.Configuration.dll", "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/net9.0/Microsoft.Extensions.Configuration.dll", + "lib/net9.0/Microsoft.Extensions.Configuration.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.9.0.4.nupkg.sha512", "microsoft.extensions.configuration.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "Microsoft.Extensions.Configuration.Abstractions/9.0.4": { + "sha512": "0LN/DiIKvBrkqp7gkF3qhGIeZk6/B63PthAHjQsxymJfIBcz0kbf4/p/t4lMgggVxZ+flRi5xvTwlpPOoZk8fg==", "type": "package", - "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "path": "microsoft.extensions.configuration.abstractions/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -3917,19 +4991,17 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512", "microsoft.extensions.configuration.abstractions.nuspec", "useSharedDesignerContext.txt" ] @@ -4131,10 +5203,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.DependencyInjection/8.0.0": { - "sha512": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "Microsoft.Extensions.DependencyInjection/9.0.2": { + "sha512": "ZffbJrskOZ40JTzcTyKwFHS5eACSWp2bUQBBApIgGV+es8RaTD4OxUG7XxFr3RIPLXtYQ1jQzF2DjKB5fZn7Qg==", "type": "package", - "path": "microsoft.extensions.dependencyinjection/8.0.0", + "path": "microsoft.extensions.dependencyinjection/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4144,29 +5216,27 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", "lib/net462/Microsoft.Extensions.DependencyInjection.dll", "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512", "microsoft.extensions.dependencyinjection.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { - "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": { + "sha512": "UI0TQPVkS78bFdjkTodmkH0Fe8lXv9LnhGFKgKrsgUJ5a5FVdFRcgjIkBVLbGgdRhxWirxH/8IXUtEyYJx6GQg==", "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "path": "microsoft.extensions.dependencyinjection.abstractions/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4176,21 +5246,19 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512", "microsoft.extensions.dependencyinjection.abstractions.nuspec", "useSharedDesignerContext.txt" ] @@ -4465,10 +5533,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging/8.0.0": { - "sha512": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "Microsoft.Extensions.Logging/9.0.2": { + "sha512": "loV/0UNpt2bD+6kCDzFALVE63CDtqzPeC0LAetkdhiEr/tTNbvOlQ7CBResH7BQBd3cikrwiBfaHdyHMFUlc2g==", "type": "package", - "path": "microsoft.extensions.logging/8.0.0", + "path": "microsoft.extensions.logging/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4478,29 +5546,27 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Logging.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", "lib/net462/Microsoft.Extensions.Logging.dll", "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net6.0/Microsoft.Extensions.Logging.dll", - "lib/net6.0/Microsoft.Extensions.Logging.xml", - "lib/net7.0/Microsoft.Extensions.Logging.dll", - "lib/net7.0/Microsoft.Extensions.Logging.xml", "lib/net8.0/Microsoft.Extensions.Logging.dll", "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/net9.0/Microsoft.Extensions.Logging.dll", + "lib/net9.0/Microsoft.Extensions.Logging.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.9.0.2.nupkg.sha512", "microsoft.extensions.logging.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging.Abstractions/8.0.2": { - "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "Microsoft.Extensions.Logging.Abstractions/9.0.2": { + "sha512": "dV9s2Lamc8jSaqhl2BQSPn/AryDIH2sSbQUyLitLXV0ROmsb+SROnn2cH939JFbsNrnf3mIM3GNRKT7P0ldwLg==", "type": "package", - "path": "microsoft.extensions.logging.abstractions/8.0.2", + "path": "microsoft.extensions.logging.abstractions/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4552,20 +5618,18 @@ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512", "microsoft.extensions.logging.abstractions.nuspec", "useSharedDesignerContext.txt" ] @@ -4717,10 +5781,29 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Options/8.0.0": { - "sha512": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "Microsoft.Extensions.ObjectPool/6.0.3": { + "sha512": "IbQUEZr/LxxpPxkXDmKaemMeQNPjdHfk87HtTsI18a3RVgad0NOJSRaJ20hcesqL45PLcpQHR8xrPP7wZKbFQQ==", "type": "package", - "path": "microsoft.extensions.options/8.0.0", + "path": "microsoft.extensions.objectpool/6.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Extensions.ObjectPool.dll", + "lib/net461/Microsoft.Extensions.ObjectPool.xml", + "lib/net6.0/Microsoft.Extensions.ObjectPool.dll", + "lib/net6.0/Microsoft.Extensions.ObjectPool.xml", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", + "microsoft.extensions.objectpool.6.0.3.nupkg.sha512", + "microsoft.extensions.objectpool.nuspec" + ] + }, + "Microsoft.Extensions.Options/9.0.4": { + "sha512": "fiFI2+58kicqVZyt/6obqoFwHiab7LC4FkQ3mmiBJ28Yy4fAvy2+v9MRnSvvlOO8chTOjKsdafFl/K9veCPo5g==", + "type": "package", + "path": "microsoft.extensions.options/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4744,22 +5827,20 @@ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", "buildTransitive/net461/Microsoft.Extensions.Options.targets", "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", "lib/net462/Microsoft.Extensions.Options.dll", "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net6.0/Microsoft.Extensions.Options.dll", - "lib/net6.0/Microsoft.Extensions.Options.xml", - "lib/net7.0/Microsoft.Extensions.Options.dll", - "lib/net7.0/Microsoft.Extensions.Options.xml", "lib/net8.0/Microsoft.Extensions.Options.dll", "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/net9.0/Microsoft.Extensions.Options.dll", + "lib/net9.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.0/Microsoft.Extensions.Options.dll", "lib/netstandard2.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.1/Microsoft.Extensions.Options.dll", "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.8.0.0.nupkg.sha512", + "microsoft.extensions.options.9.0.4.nupkg.sha512", "microsoft.extensions.options.nuspec", "useSharedDesignerContext.txt" ] @@ -4794,10 +5875,10 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Primitives/8.0.0": { - "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "Microsoft.Extensions.Primitives/9.0.4": { + "sha512": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA==", "type": "package", - "path": "microsoft.extensions.primitives/8.0.0", + "path": "microsoft.extensions.primitives/9.0.4", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4807,27 +5888,25 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", "lib/net462/Microsoft.Extensions.Primitives.dll", "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net6.0/Microsoft.Extensions.Primitives.dll", - "lib/net6.0/Microsoft.Extensions.Primitives.xml", - "lib/net7.0/Microsoft.Extensions.Primitives.dll", - "lib/net7.0/Microsoft.Extensions.Primitives.xml", "lib/net8.0/Microsoft.Extensions.Primitives.dll", "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/net9.0/Microsoft.Extensions.Primitives.dll", + "lib/net9.0/Microsoft.Extensions.Primitives.xml", "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.9.0.4.nupkg.sha512", "microsoft.extensions.primitives.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.IdentityModel.Abstractions/8.8.0": { - "sha512": "0lKw+f3vkmV9t3PLe6sY3xPrYrHYiMRFxuOse5CMkKPxhQYiabpfJsuk6wX2RrVQ86Dn+t/8poHpH0nbp6sFvA==", + "Microsoft.IdentityModel.Abstractions/8.9.0": { + "sha512": "b/87S+lb86U7Ns7xgTKnqql6XGNr8hBE+k0rj5sRWwXeJe6uA+3mSjvpZ9GoQo3cB9zlwzcbGBU8KM44qX0t1g==", "type": "package", - "path": "microsoft.identitymodel.abstractions/8.8.0", + "path": "microsoft.identitymodel.abstractions/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4844,14 +5923,14 @@ "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", - "microsoft.identitymodel.abstractions.8.8.0.nupkg.sha512", + "microsoft.identitymodel.abstractions.8.9.0.nupkg.sha512", "microsoft.identitymodel.abstractions.nuspec" ] }, - "Microsoft.IdentityModel.JsonWebTokens/8.8.0": { - "sha512": "lepOkZZTMfJCPSnWITXxV+4Wxb54g+9oIybs9YovlOzZWuR1i2DOpzaDgSe+piDJaGtnSrcUlcB9fZ5Swur7Uw==", + "Microsoft.IdentityModel.JsonWebTokens/8.9.0": { + "sha512": "QcNC57hJLc6LIcy2PTYlD8iRBQBm6bqPKbCjsRYWlp7QTyJisF0ImUWaa3mx6wWaS1upwYneYVPiIiNSlAy16g==", "type": "package", - "path": "microsoft.identitymodel.jsonwebtokens/8.8.0", + "path": "microsoft.identitymodel.jsonwebtokens/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4868,14 +5947,14 @@ "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "microsoft.identitymodel.jsonwebtokens.8.8.0.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.8.9.0.nupkg.sha512", "microsoft.identitymodel.jsonwebtokens.nuspec" ] }, - "Microsoft.IdentityModel.Logging/8.8.0": { - "sha512": "sUyoxzg/WBZobbFLJK8loT9IILKtS9ePmWu5B11ogQqhSHppE6SRZKw0fhI6Fd16X6ey52cbbWc2rvMBC98EQA==", + "Microsoft.IdentityModel.Logging/8.9.0": { + "sha512": "rswvH4ZANbFsJYEn+PGEOj7nkkBRjnsb7LcYGAS16VUJpSeKULLeYSy/7SK6jLO1WTT12xqdeL4mj3dYT7GdoQ==", "type": "package", - "path": "microsoft.identitymodel.logging/8.8.0", + "path": "microsoft.identitymodel.logging/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4892,7 +5971,7 @@ "lib/net9.0/Microsoft.IdentityModel.Logging.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", - "microsoft.identitymodel.logging.8.8.0.nupkg.sha512", + "microsoft.identitymodel.logging.8.9.0.nupkg.sha512", "microsoft.identitymodel.logging.nuspec" ] }, @@ -4942,10 +6021,10 @@ "microsoft.identitymodel.protocols.openidconnect.nuspec" ] }, - "Microsoft.IdentityModel.Tokens/8.8.0": { - "sha512": "09hnbUJh/18gUmu5nCVFMvyzAFC4l1qyc4bwSJaKzUBqHN7aNDwmSx8dE3/MMJImbvnKq9rEtkkgnrS/OUBtjA==", + "Microsoft.IdentityModel.Tokens/8.9.0": { + "sha512": "qK6kW5qZvDj7E5RLWQ9gzJxQe5GUz7+7bXrLQQydSDF9hTf5Ip2qHuAQW3Fg9GND6jkjTr7IXAZFmBHadNQi4Q==", "type": "package", - "path": "microsoft.identitymodel.tokens/8.8.0", + "path": "microsoft.identitymodel.tokens/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -4962,7 +6041,7 @@ "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", - "microsoft.identitymodel.tokens.8.8.0.nupkg.sha512", + "microsoft.identitymodel.tokens.8.9.0.nupkg.sha512", "microsoft.identitymodel.tokens.nuspec" ] }, @@ -4988,22 +6067,44 @@ "microsoft.net.test.sdk.nuspec" ] }, - "Microsoft.NETCore.Platforms/5.0.0": { - "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", + "Microsoft.OData.Core/8.2.2": { + "sha512": "VY3sZzBOxePvRuCeBlEiJ2LNxjr8ReOKj6YWXi5i8vG3TLWo+CmIc9fiE8WDoe90NcCaBnwK6Ub2fWnpNEbLxA==", "type": "package", - "path": "microsoft.netcore.platforms/5.0.0", + "path": "microsoft.odata.core/8.2.2", "files": [ ".nupkg.metadata", ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.5.0.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json", - "useSharedDesignerContext.txt", - "version.txt" + "lib/net8.0/Microsoft.OData.Core.dll", + "lib/net8.0/Microsoft.OData.Core.xml", + "microsoft.odata.core.8.2.2.nupkg.sha512", + "microsoft.odata.core.nuspec" + ] + }, + "Microsoft.OData.Edm/8.2.2": { + "sha512": "cHMsoV059EPNLD+SJFxIM8rKLUA3kKifflfUQy+7hWKZpmw+YhLi7qeWSSA9UDRVd0sqApFU8gdqHjordJoTIg==", + "type": "package", + "path": "microsoft.odata.edm/8.2.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Microsoft.OData.Edm.dll", + "lib/net8.0/Microsoft.OData.Edm.xml", + "microsoft.odata.edm.8.2.2.nupkg.sha512", + "microsoft.odata.edm.nuspec" + ] + }, + "Microsoft.OData.ModelBuilder/2.0.0": { + "sha512": "QzySAMGhLCMyLNHSTIYKFjJXetoDeGkRS/7JEjm7eMJlyu1Qv4MfL1CXQFg2uijizNu2jQojT0mdCpawXbyv8Q==", + "type": "package", + "path": "microsoft.odata.modelbuilder/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/odata.png", + "lib/net8.0/Microsoft.OData.ModelBuilder.dll", + "lib/net8.0/Microsoft.OData.ModelBuilder.xml", + "microsoft.odata.modelbuilder.2.0.0.nupkg.sha512", + "microsoft.odata.modelbuilder.nuspec" ] }, "Microsoft.OpenApi/1.6.22": { @@ -5021,6 +6122,19 @@ "microsoft.openapi.nuspec" ] }, + "Microsoft.Spatial/8.2.2": { + "sha512": "iG0pF7o7bR9/J+WcSNGEW0DzewO8Te/T+5FJ9EIuXcPkVE96cqc6Cf57ygqlQZj5jmf+D/gOtBJjPc4iyeI0Aw==", + "type": "package", + "path": "microsoft.spatial/8.2.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Microsoft.Spatial.dll", + "lib/net8.0/Microsoft.Spatial.xml", + "microsoft.spatial.8.2.2.nupkg.sha512", + "microsoft.spatial.nuspec" + ] + }, "Microsoft.TestPlatform.ObjectModel/17.12.0": { "sha512": "TDqkTKLfQuAaPcEb3pDDWnh7b3SyZF+/W9OZvWFp6eJCIiiYFdSB6taE2I6tWrFw5ywhzOb6sreoGJTI6m3rSQ==", "type": "package", @@ -5233,6 +6347,35 @@ "version.txt" ] }, + "Microsoft.Win32.SystemEvents/6.0.0": { + "sha512": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==", + "type": "package", + "path": "microsoft.win32.systemevents/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/Microsoft.Win32.SystemEvents.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/Microsoft.Win32.SystemEvents.dll", + "lib/net461/Microsoft.Win32.SystemEvents.xml", + "lib/net6.0/Microsoft.Win32.SystemEvents.dll", + "lib/net6.0/Microsoft.Win32.SystemEvents.xml", + "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll", + "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml", + "microsoft.win32.systemevents.6.0.0.nupkg.sha512", + "microsoft.win32.systemevents.nuspec", + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.xml", + "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml", + "useSharedDesignerContext.txt" + ] + }, "MongoDB.Analyzer/1.5.0": { "sha512": "ujrUe6NeLGW9q8ABseYY/NFx7pc1G/LshtVfLMONV02+fEy0jUDsXLHU7YvuARjJhJI7Mgz88tfvCncccUmerw==", "type": "package", @@ -5291,6 +6434,21 @@ "packageIcon.png" ] }, + "Mono.Reflection/2.0.0": { + "sha512": "gipqt3dO1NsgM9wfUsQeNVLYmSskDfaN+muNQHLJYkCuYxx2bIp6gAA8j2Rp+Ey6YNHloZv+BJY56r9fl3tfew==", + "type": "package", + "path": "mono.reflection/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/Mono.Reflection.dll", + "lib/net40/Mono.Reflection.pdb", + "lib/netstandard2.0/Mono.Reflection.dll", + "lib/netstandard2.0/Mono.Reflection.pdb", + "mono.reflection.2.0.0.nupkg.sha512", + "mono.reflection.nuspec" + ] + }, "Moq/4.20.72": { "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", "type": "package", @@ -5690,6 +6848,69 @@ "rabbitmq.client.nuspec" ] }, + "runtime.native.System.Data.SqlClient.sni/4.7.0": { + "sha512": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "type": "package", + "path": "runtime.native.system.data.sqlclient.sni/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512", + "runtime.native.system.data.sqlclient.sni.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==", + "type": "package", + "path": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-arm64/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==", + "type": "package", + "path": "runtime.win-x64.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-x64.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-x64/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": { + "sha512": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==", + "type": "package", + "path": "runtime.win-x86.runtime.native.system.data.sqlclient.sni/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "runtime.win-x86.runtime.native.system.data.sqlclient.sni.nuspec", + "runtimes/win-x86/native/sni.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "SharpCompress/0.30.1": { "sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==", "type": "package", @@ -5726,10 +6947,10 @@ "snappier.nuspec" ] }, - "SSH.NET/2024.2.0": { - "sha512": "9r+4UF2P51lTztpd+H7SJywk7WgmlWB//Cm2o96c6uGVZU5r58ys2/cD9pCgTk0zCdSkfflWL1WtqQ9I4IVO9Q==", + "SSH.NET/2025.0.0": { + "sha512": "AKYbB+q2zFkNQbBFx5gXdv+Wje0baBtADQ35WnMKi4bg1ka74wTQtWoPd+fOWcydohdfsD0nfT8ErMOAPxtSfA==", "type": "package", - "path": "ssh.net/2024.2.0", + "path": "ssh.net/2025.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -5737,17 +6958,15 @@ "SS-NET-icon-h500.png", "lib/net462/Renci.SshNet.dll", "lib/net462/Renci.SshNet.xml", - "lib/net6.0/Renci.SshNet.dll", - "lib/net6.0/Renci.SshNet.xml", - "lib/net7.0/Renci.SshNet.dll", - "lib/net7.0/Renci.SshNet.xml", "lib/net8.0/Renci.SshNet.dll", "lib/net8.0/Renci.SshNet.xml", + "lib/net9.0/Renci.SshNet.dll", + "lib/net9.0/Renci.SshNet.xml", "lib/netstandard2.0/Renci.SshNet.dll", "lib/netstandard2.0/Renci.SshNet.xml", "lib/netstandard2.1/Renci.SshNet.dll", "lib/netstandard2.1/Renci.SshNet.xml", - "ssh.net.2024.2.0.nupkg.sha512", + "ssh.net.2025.0.0.nupkg.sha512", "ssh.net.nuspec" ] }, @@ -5948,6 +7167,29 @@ "version.txt" ] }, + "System.CodeDom/6.0.0": { + "sha512": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==", + "type": "package", + "path": "system.codedom/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.CodeDom.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.CodeDom.dll", + "lib/net461/System.CodeDom.xml", + "lib/net6.0/System.CodeDom.dll", + "lib/net6.0/System.CodeDom.xml", + "lib/netstandard2.0/System.CodeDom.dll", + "lib/netstandard2.0/System.CodeDom.xml", + "system.codedom.6.0.0.nupkg.sha512", + "system.codedom.nuspec", + "useSharedDesignerContext.txt" + ] + }, "System.Collections.Immutable/1.7.1": { "sha512": "B43Zsz5EfMwyEbnObwRxW5u85fzJma3lrDeGcSAV1qkhSRTNY5uXAByTn9h9ddNdhM+4/YoLc/CI43umjwIl9Q==", "type": "package", @@ -5974,10 +7216,211 @@ "version.txt" ] }, - "System.Diagnostics.DiagnosticSource/8.0.0": { - "sha512": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "System.ComponentModel.Annotations/5.0.0": { + "sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==", "type": "package", - "path": "system.diagnostics.diagnosticsource/8.0.0", + "path": "system.componentmodel.annotations/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.5.0.0.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Configuration.ConfigurationManager/6.0.1": { + "sha512": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", + "type": "package", + "path": "system.configuration.configurationmanager/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Configuration.ConfigurationManager.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Configuration.ConfigurationManager.dll", + "lib/net461/System.Configuration.ConfigurationManager.xml", + "lib/net6.0/System.Configuration.ConfigurationManager.dll", + "lib/net6.0/System.Configuration.ConfigurationManager.xml", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.xml", + "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.dll", + "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.xml", + "system.configuration.configurationmanager.6.0.1.nupkg.sha512", + "system.configuration.configurationmanager.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Data.SqlClient/4.8.6": { + "sha512": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==", + "type": "package", + "path": "system.data.sqlclient/4.8.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/System.Data.SqlClient.dll", + "lib/net46/System.Data.SqlClient.dll", + "lib/net461/System.Data.SqlClient.dll", + "lib/net461/System.Data.SqlClient.xml", + "lib/netcoreapp2.1/System.Data.SqlClient.dll", + "lib/netcoreapp2.1/System.Data.SqlClient.xml", + "lib/netstandard1.2/System.Data.SqlClient.dll", + "lib/netstandard1.2/System.Data.SqlClient.xml", + "lib/netstandard1.3/System.Data.SqlClient.dll", + "lib/netstandard1.3/System.Data.SqlClient.xml", + "lib/netstandard2.0/System.Data.SqlClient.dll", + "lib/netstandard2.0/System.Data.SqlClient.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/System.Data.SqlClient.dll", + "ref/net46/System.Data.SqlClient.dll", + "ref/net461/System.Data.SqlClient.dll", + "ref/net461/System.Data.SqlClient.xml", + "ref/netcoreapp2.1/System.Data.SqlClient.dll", + "ref/netcoreapp2.1/System.Data.SqlClient.xml", + "ref/netstandard1.2/System.Data.SqlClient.dll", + "ref/netstandard1.2/System.Data.SqlClient.xml", + "ref/netstandard1.2/de/System.Data.SqlClient.xml", + "ref/netstandard1.2/es/System.Data.SqlClient.xml", + "ref/netstandard1.2/fr/System.Data.SqlClient.xml", + "ref/netstandard1.2/it/System.Data.SqlClient.xml", + "ref/netstandard1.2/ja/System.Data.SqlClient.xml", + "ref/netstandard1.2/ko/System.Data.SqlClient.xml", + "ref/netstandard1.2/ru/System.Data.SqlClient.xml", + "ref/netstandard1.2/zh-hans/System.Data.SqlClient.xml", + "ref/netstandard1.2/zh-hant/System.Data.SqlClient.xml", + "ref/netstandard1.3/System.Data.SqlClient.dll", + "ref/netstandard1.3/System.Data.SqlClient.xml", + "ref/netstandard1.3/de/System.Data.SqlClient.xml", + "ref/netstandard1.3/es/System.Data.SqlClient.xml", + "ref/netstandard1.3/fr/System.Data.SqlClient.xml", + "ref/netstandard1.3/it/System.Data.SqlClient.xml", + "ref/netstandard1.3/ja/System.Data.SqlClient.xml", + "ref/netstandard1.3/ko/System.Data.SqlClient.xml", + "ref/netstandard1.3/ru/System.Data.SqlClient.xml", + "ref/netstandard1.3/zh-hans/System.Data.SqlClient.xml", + "ref/netstandard1.3/zh-hant/System.Data.SqlClient.xml", + "ref/netstandard2.0/System.Data.SqlClient.dll", + "ref/netstandard2.0/System.Data.SqlClient.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll", + "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.xml", + "runtimes/unix/lib/netstandard1.3/System.Data.SqlClient.dll", + "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.dll", + "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.xml", + "runtimes/win/lib/net451/System.Data.SqlClient.dll", + "runtimes/win/lib/net46/System.Data.SqlClient.dll", + "runtimes/win/lib/net461/System.Data.SqlClient.dll", + "runtimes/win/lib/net461/System.Data.SqlClient.xml", + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll", + "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.xml", + "runtimes/win/lib/netstandard1.3/System.Data.SqlClient.dll", + "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.dll", + "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.xml", + "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.dll", + "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.xml", + "system.data.sqlclient.4.8.6.nupkg.sha512", + "system.data.sqlclient.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/9.0.2": { + "sha512": "z5CMQNLzk8UKnTEHRKb4nq03CCDWBMEF2gfP3oPKZn4F8wip6LFZCP5rF90DREHqdNddScIGAfszXJSjh4drSw==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/9.0.2", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -5986,19 +7429,22 @@ "THIRD-PARTY-NOTICES.TXT", "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", + "buildTransitive/net8.0/_._", "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "content/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net462/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net8.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/net9.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", + "contentFiles/any/netstandard2.0/ILLink/ILLink.Descriptors.LibraryBuild.xml", "lib/net462/System.Diagnostics.DiagnosticSource.dll", "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net6.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net6.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net7.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net7.0/System.Diagnostics.DiagnosticSource.xml", "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512", "system.diagnostics.diagnosticsource.nuspec", "useSharedDesignerContext.txt" ] @@ -6042,10 +7488,49 @@ "useSharedDesignerContext.txt" ] }, - "System.IdentityModel.Tokens.Jwt/8.8.0": { - "sha512": "/oIQ5jhVxpzutFOPYIxmvkVMCLLDwpN0CLcXjyxPflVRQGZRYi5x2IqHeJw+xJ2k2HUPmeTaM18La5wDbhJcQA==", + "System.Drawing.Common/6.0.0": { + "sha512": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", "type": "package", - "path": "system.identitymodel.tokens.jwt/8.8.0", + "path": "system.drawing.common/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Drawing.Common.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Drawing.Common.dll", + "lib/net461/System.Drawing.Common.xml", + "lib/net6.0/System.Drawing.Common.dll", + "lib/net6.0/System.Drawing.Common.xml", + "lib/netcoreapp3.1/System.Drawing.Common.dll", + "lib/netcoreapp3.1/System.Drawing.Common.xml", + "lib/netstandard2.0/System.Drawing.Common.dll", + "lib/netstandard2.0/System.Drawing.Common.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/unix/lib/net6.0/System.Drawing.Common.dll", + "runtimes/unix/lib/net6.0/System.Drawing.Common.xml", + "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.dll", + "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.xml", + "runtimes/win/lib/net6.0/System.Drawing.Common.dll", + "runtimes/win/lib/net6.0/System.Drawing.Common.xml", + "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.dll", + "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.xml", + "system.drawing.common.6.0.0.nupkg.sha512", + "system.drawing.common.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/8.9.0": { + "sha512": "7Pu9UjF1+so0s8zgzcIxSxbRQoiM2DMdwazVGmNptX3O6gDfMyeWZBd/Zn6VueDteN0ZTHw2acsf6+mAe8UpMw==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/8.9.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -6062,7 +7547,7 @@ "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", - "system.identitymodel.tokens.jwt.8.8.0.nupkg.sha512", + "system.identitymodel.tokens.jwt.8.9.0.nupkg.sha512", "system.identitymodel.tokens.jwt.nuspec" ] }, @@ -6146,6 +7631,60 @@ "system.reactive.nuspec" ] }, + "System.Reflection.Emit/4.7.0": { + "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "type": "package", + "path": "system.reflection.emit/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Reflection.Emit.dll", + "lib/netstandard1.1/System.Reflection.Emit.xml", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.xml", + "lib/netstandard2.1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/netstandard2.0/System.Reflection.Emit.dll", + "ref/netstandard2.0/System.Reflection.Emit.xml", + "ref/netstandard2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", + "system.reflection.emit.4.7.0.nupkg.sha512", + "system.reflection.emit.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "System.Reflection.Metadata/1.6.0": { "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", "type": "package", @@ -6199,51 +7738,97 @@ "version.txt" ] }, - "System.Security.AccessControl/5.0.0": { - "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "System.Security.AccessControl/6.0.0": { + "sha512": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==", "type": "package", - "path": "system.security.accesscontrol/5.0.0", + "path": "system.security.accesscontrol/6.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.AccessControl.dll", + "buildTransitive/netcoreapp2.0/System.Security.AccessControl.targets", + "buildTransitive/netcoreapp3.1/_._", "lib/net461/System.Security.AccessControl.dll", "lib/net461/System.Security.AccessControl.xml", - "lib/netstandard1.3/System.Security.AccessControl.dll", + "lib/net6.0/System.Security.AccessControl.dll", + "lib/net6.0/System.Security.AccessControl.xml", "lib/netstandard2.0/System.Security.AccessControl.dll", "lib/netstandard2.0/System.Security.AccessControl.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.xml", - "ref/netstandard1.3/System.Security.AccessControl.dll", - "ref/netstandard1.3/System.Security.AccessControl.xml", - "ref/netstandard1.3/de/System.Security.AccessControl.xml", - "ref/netstandard1.3/es/System.Security.AccessControl.xml", - "ref/netstandard1.3/fr/System.Security.AccessControl.xml", - "ref/netstandard1.3/it/System.Security.AccessControl.xml", - "ref/netstandard1.3/ja/System.Security.AccessControl.xml", - "ref/netstandard1.3/ko/System.Security.AccessControl.xml", - "ref/netstandard1.3/ru/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", - "ref/netstandard2.0/System.Security.AccessControl.dll", - "ref/netstandard2.0/System.Security.AccessControl.xml", - "ref/uap10.0.16299/_._", - "runtimes/win/lib/net46/System.Security.AccessControl.dll", "runtimes/win/lib/net461/System.Security.AccessControl.dll", "runtimes/win/lib/net461/System.Security.AccessControl.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.accesscontrol.5.0.0.nupkg.sha512", + "runtimes/win/lib/net6.0/System.Security.AccessControl.dll", + "runtimes/win/lib/net6.0/System.Security.AccessControl.xml", + "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.dll", + "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.xml", + "system.security.accesscontrol.6.0.0.nupkg.sha512", "system.security.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Cryptography.ProtectedData/6.0.0": { + "sha512": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==", + "type": "package", + "path": "system.security.cryptography.protecteddata/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Security.Cryptography.ProtectedData.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Security.Cryptography.ProtectedData.dll", + "lib/net461/System.Security.Cryptography.ProtectedData.xml", + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll", + "lib/net6.0/System.Security.Cryptography.ProtectedData.xml", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.xml", + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.xml", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "system.security.cryptography.protecteddata.6.0.0.nupkg.sha512", + "system.security.cryptography.protecteddata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Permissions/6.0.0": { + "sha512": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "type": "package", + "path": "system.security.permissions/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Security.Permissions.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Security.Permissions.dll", + "lib/net461/System.Security.Permissions.xml", + "lib/net5.0/System.Security.Permissions.dll", + "lib/net5.0/System.Security.Permissions.xml", + "lib/net6.0/System.Security.Permissions.dll", + "lib/net6.0/System.Security.Permissions.xml", + "lib/netcoreapp3.1/System.Security.Permissions.dll", + "lib/netcoreapp3.1/System.Security.Permissions.xml", + "lib/netstandard2.0/System.Security.Permissions.dll", + "lib/netstandard2.0/System.Security.Permissions.xml", + "runtimes/win/lib/net461/System.Security.Permissions.dll", + "runtimes/win/lib/net461/System.Security.Permissions.xml", + "system.security.permissions.6.0.0.nupkg.sha512", + "system.security.permissions.nuspec", + "useSharedDesignerContext.txt" ] }, "System.Security.Principal.Windows/5.0.0": { @@ -6438,6 +8023,29 @@ "useSharedDesignerContext.txt" ] }, + "System.Windows.Extensions/6.0.0": { + "sha512": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "type": "package", + "path": "system.windows.extensions/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net6.0/System.Windows.Extensions.dll", + "lib/net6.0/System.Windows.Extensions.xml", + "lib/netcoreapp3.1/System.Windows.Extensions.dll", + "lib/netcoreapp3.1/System.Windows.Extensions.xml", + "runtimes/win/lib/net6.0/System.Windows.Extensions.dll", + "runtimes/win/lib/net6.0/System.Windows.Extensions.xml", + "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.dll", + "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.xml", + "system.windows.extensions.6.0.0.nupkg.sha512", + "system.windows.extensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, "xunit/2.9.3": { "sha512": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", "type": "package", @@ -6772,16 +8380,26 @@ "Asp.Versioning.Mvc.ApiExplorer": "8.1.0", "AspNetCore.Swagger.Fluent.Annotations": "1.0.4", "AsyncStateMachine": "1.3.2", + "AutoMapper": "14.0.0", + "AutoMapper.AspNetCore.OData.EFCore": "7.0.1", + "AutoMapper.Collection": "11.0.0", + "AutoMapper.Collection.EntityFrameworkCore": "11.0.0", + "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0", + "AutoMapper.Data": "9.0.0", + "AutoMapper.EF6": "3.0.1", + "AutoMapper.Extensions.EnumMapping": "4.1.0", + "AutoMapper.Extensions.ExpressionMapping": "8.0.0", "AWS.Logger.NLog": "3.3.4", - "AWSSDK.Core": "3.7.402.39", - "AWSSDK.DynamoDBv2": "3.7.406.21", + "AWSSDK.Core": "3.7.402.46", + "AWSSDK.DynamoDBv2": "3.7.407", "AWSSDK.EC2": "3.7.330.4", "AWSSDK.ElasticLoadBalancingV2": "3.7.303.15", - "AWSSDK.OpenSearchService": "3.7.404.75", - "AWSSDK.S3": "3.7.416.9", + "AWSSDK.OpenSearchService": "3.7.404.81", + "AWSSDK.S3": "3.7.416.15", + "AWSSDK.SecurityToken": "3.7.401.89", "Axion.ConcurrentHashSet": "1.0.0", "BCrypt.Net-Next": "4.0.3", - "BouncyCastle.Cryptography": "2.4.0", + "BouncyCastle.Cryptography": "2.5.1", "CommandLineParser": "2.9.1", "CommunityToolkit.Diagnostics": "8.2.2", "CommunityToolkit.Mvvm": "8.2.2", @@ -6811,7 +8429,7 @@ "Microsoft.EntityFrameworkCore.Design": "8.0.2", "Microsoft.EntityFrameworkCore.Tools": "8.0.2", "Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6", - "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration": "9.0.4", "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", "Microsoft.Extensions.DependencyInjection": "8.0.0", @@ -6820,8 +8438,8 @@ "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", "Microsoft.Extensions.Http": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", "Microsoft.NET.Test.Sdk": "17.12.0", "Microsoft.OpenApi": "1.6.22", @@ -6845,7 +8463,7 @@ "RabbitMQ.Client": "6.8.1", "SharpSvn": "1.14003.272", "sqlite-net-pcl": "1.9.172", - "SSH.NET": "2024.2.0", + "SSH.NET": "2025.0.0", "StackExchange.Redis": "2.8.31", "StackExchange.Redis.Extensions.Core": "11.0.0", "StackExchange.Redis.Extensions.Newtonsoft": "11.0.0", @@ -6854,7 +8472,7 @@ "Swashbuckle.AspNetCore.Annotations": "7.2.0", "Swashbuckle.AspNetCore.Filters": "8.0.2", "Swashbuckle.AspNetCore.SwaggerUI": "7.2.0", - "System.IdentityModel.Tokens.Jwt": "8.8.0", + "System.IdentityModel.Tokens.Jwt": "8.9.0", "xunit": "2.9.3", "xunit.assert": "2.9.2", "xunit.runner.visualstudio": "3.0.1", diff --git a/BrokerApiTest/obj/project.nuget.cache b/BrokerApiTest/obj/project.nuget.cache index 6ad6801..222f2f7 100644 --- a/BrokerApiTest/obj/project.nuget.cache +++ b/BrokerApiTest/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "mcFSESevTrE=", + "dgSpecHash": "Q+hbkpSpm30=", "success": true, "projectFilePath": "D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj", "expectedPackageFiles": [ @@ -8,22 +8,37 @@ "C:\\Users\\user\\.nuget\\packages\\asp.versioning.http\\8.1.0\\asp.versioning.http.8.1.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\asp.versioning.mvc\\8.1.0\\asp.versioning.mvc.8.1.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\asyncstatemachine\\1.3.2\\asyncstatemachine.1.3.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\autofac\\8.2.0\\autofac.8.2.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper\\14.0.0\\automapper.14.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.aspnetcore.odata.efcore\\7.0.1\\automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.collection\\11.0.0\\automapper.collection.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.collection.entityframeworkcore\\11.0.0\\automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.contrib.autofac.dependencyinjection\\9.0.0\\automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.data\\9.0.0\\automapper.data.9.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.ef6\\3.0.1\\automapper.ef6.3.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.enummapping\\4.1.0\\automapper.extensions.enummapping.4.1.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.expressionmapping\\8.0.0\\automapper.extensions.expressionmapping.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\aws.logger.core\\3.3.3\\aws.logger.core.3.3.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\aws.logger.nlog\\3.3.4\\aws.logger.nlog.3.3.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\awssdk.cloudwatchlogs\\3.7.305.15\\awssdk.cloudwatchlogs.3.7.305.15.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.core\\3.7.402.39\\awssdk.core.3.7.402.39.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.dynamodbv2\\3.7.406.21\\awssdk.dynamodbv2.3.7.406.21.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.core\\3.7.402.46\\awssdk.core.3.7.402.46.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.dynamodbv2\\3.7.407\\awssdk.dynamodbv2.3.7.407.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\awssdk.ec2\\3.7.330.4\\awssdk.ec2.3.7.330.4.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.opensearchservice\\3.7.404.75\\awssdk.opensearchservice.3.7.404.75.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\awssdk.s3\\3.7.416.9\\awssdk.s3.3.7.416.9.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.opensearchservice\\3.7.404.81\\awssdk.opensearchservice.3.7.404.81.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.s3\\3.7.416.15\\awssdk.s3.3.7.416.15.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\awssdk.securitytoken\\3.7.401.89\\awssdk.securitytoken.3.7.401.89.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\axion.concurrenthashset\\1.0.0\\axion.concurrenthashset.1.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\bouncycastle.cryptography\\2.4.0\\bouncycastle.cryptography.2.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\bouncycastle.cryptography\\2.5.1\\bouncycastle.cryptography.2.5.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\commandlineparser\\2.9.1\\commandlineparser.2.9.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\communitytoolkit.diagnostics\\8.2.2\\communitytoolkit.diagnostics.8.2.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler\\0.34.0\\delegatedecompiler.0.34.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler.entityframework\\0.34.0\\delegatedecompiler.entityframework.0.34.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dotnet.multimap\\2.2.1\\dotnet.multimap.2.2.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\dumpextensions\\2.0.0\\dumpextensions.2.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\entityframework\\6.5.1\\entityframework.6.5.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\google.protobuf\\3.27.1\\google.protobuf.3.27.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore\\2.63.0\\grpc.aspnetcore.2.63.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore.server\\2.63.0\\grpc.aspnetcore.server.2.63.0.nupkg.sha512", @@ -35,30 +50,35 @@ "C:\\Users\\user\\.nuget\\packages\\grpc.net.common\\2.63.0\\grpc.net.common.2.63.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\grpc.reflection\\2.63.0\\grpc.reflection.2.63.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\jwt\\11.0.0\\jwt.11.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\logicbuilder.expressions.utils\\7.0.0\\logicbuilder.expressions.utils.7.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\logicbuilder.structures\\7.0.0\\logicbuilder.structures.7.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mediatr\\12.3.0\\mediatr.12.3.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mediatr.contracts\\2.0.1\\mediatr.contracts.2.0.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.2\\microsoft.aspnetcore.authentication.jwtbearer.8.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.mvc.testing\\8.0.2\\microsoft.aspnetcore.mvc.testing.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.odata\\9.1.1\\microsoft.aspnetcore.odata.9.1.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.testhost\\8.0.2\\microsoft.aspnetcore.testhost.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.memory\\9.0.0\\microsoft.bcl.memory.9.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.codecoverage\\17.12.0\\microsoft.codecoverage.17.12.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.diagnostics.netcore.client\\0.2.621003\\microsoft.diagnostics.netcore.client.0.2.621003.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.2\\microsoft.entityframeworkcore.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.2\\microsoft.entityframeworkcore.abstractions.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.2\\microsoft.entityframeworkcore.analyzers.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\9.0.2\\microsoft.entityframeworkcore.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\9.0.2\\microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\9.0.2\\microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.2\\microsoft.entityframeworkcore.relational.8.0.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.0\\microsoft.extensions.caching.memory.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\9.0.2\\microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\9.0.2\\microsoft.extensions.caching.memory.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\9.0.4\\microsoft.extensions.configuration.9.0.4.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.4\\microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.0\\microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.0\\microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.0\\microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.0\\microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.0\\microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.2\\microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.4\\microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.0\\microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.0\\microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", @@ -68,31 +88,37 @@ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.0\\microsoft.extensions.hosting.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.0\\microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.http\\8.0.0\\microsoft.extensions.http.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\8.0.0\\microsoft.extensions.logging.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\9.0.2\\microsoft.extensions.logging.9.0.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.2\\microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.0\\microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.0\\microsoft.extensions.logging.console.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.0\\microsoft.extensions.logging.debug.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.0\\microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.0\\microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.objectpool\\6.0.3\\microsoft.extensions.objectpool.6.0.3.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\9.0.4\\microsoft.extensions.options.9.0.4.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.8.0\\microsoft.identitymodel.abstractions.8.8.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.8.0\\microsoft.identitymodel.jsonwebtokens.8.8.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.logging\\8.8.0\\microsoft.identitymodel.logging.8.8.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.4\\microsoft.extensions.primitives.9.0.4.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.9.0\\microsoft.identitymodel.abstractions.8.9.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.9.0\\microsoft.identitymodel.jsonwebtokens.8.9.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.logging\\8.9.0\\microsoft.identitymodel.logging.8.9.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.8.0\\microsoft.identitymodel.tokens.8.8.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.9.0\\microsoft.identitymodel.tokens.8.9.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.net.test.sdk\\17.12.0\\microsoft.net.test.sdk.17.12.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.core\\8.2.2\\microsoft.odata.core.8.2.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.edm\\8.2.2\\microsoft.odata.edm.8.2.2.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.modelbuilder\\2.0.0\\microsoft.odata.modelbuilder.2.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.openapi\\1.6.22\\microsoft.openapi.1.6.22.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.spatial\\8.2.2\\microsoft.spatial.8.2.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.12.0\\microsoft.testplatform.objectmodel.17.12.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.testplatform.testhost\\17.12.0\\microsoft.testplatform.testhost.17.12.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\microsoft.win32.systemevents\\6.0.0\\microsoft.win32.systemevents.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.analyzer\\1.5.0\\mongodb.analyzer.1.5.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.bson\\3.3.0\\mongodb.bson.3.3.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mongodb.driver\\3.3.0\\mongodb.driver.3.3.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\mono.reflection\\2.0.0\\mono.reflection.2.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\mysqlconnector\\2.4.0\\mysqlconnector.2.4.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\neosmart.asynclock\\3.2.1\\neosmart.asynclock.3.2.1.nupkg.sha512", @@ -113,9 +139,13 @@ "C:\\Users\\user\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\rabbitmq.client\\6.8.1\\rabbitmq.client.6.8.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\ssh.net\\2024.2.0\\ssh.net.2024.2.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\ssh.net\\2025.0.0\\ssh.net.2025.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis\\2.8.31\\stackexchange.redis.2.8.31.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis.extensions.core\\11.0.0\\stackexchange.redis.extensions.core.11.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\stackexchange.redis.extensions.newtonsoft\\11.0.0\\stackexchange.redis.extensions.newtonsoft.11.0.0.nupkg.sha512", @@ -125,20 +155,29 @@ "C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\7.2.0\\swashbuckle.aspnetcore.swaggergen.7.2.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\7.2.0\\swashbuckle.aspnetcore.swaggerui.7.2.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.collections.immutable\\1.7.1\\system.collections.immutable.1.7.1.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.0\\system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.configuration.configurationmanager\\6.0.1\\system.configuration.configurationmanager.6.0.1.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.data.sqlclient\\4.8.6\\system.data.sqlclient.4.8.6.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\9.0.2\\system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.0\\system.diagnostics.eventlog.8.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.8.0\\system.identitymodel.tokens.jwt.8.8.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.9.0\\system.identitymodel.tokens.jwt.8.9.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.reactive\\6.0.0\\system.reactive.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512", - "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\6.0.0\\system.security.accesscontrol.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.cryptography.protecteddata\\6.0.0\\system.security.cryptography.protecteddata.6.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.security.permissions\\6.0.0\\system.security.permissions.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\system.threading.channels\\7.0.0\\system.threading.channels.7.0.0.nupkg.sha512", + "C:\\Users\\user\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", "C:\\Users\\user\\.nuget\\packages\\xunit.analyzers\\1.18.0\\xunit.analyzers.1.18.0.nupkg.sha512", diff --git a/BrokerApiTest/obj/project.packagespec.json b/BrokerApiTest/obj/project.packagespec.json index 494cb26..ce77971 100644 --- a/BrokerApiTest/obj/project.packagespec.json +++ b/BrokerApiTest/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","projectName":"BrokerApiTest","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Mvc.Testing":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.NET.Test.Sdk":{"target":"Package","version":"[17.12.0, )","versionCentrallyManaged":true},"Moq":{"target":"Package","version":"[4.20.72, )","versionCentrallyManaged":true},"xunit":{"target":"Package","version":"[2.9.3, )","versionCentrallyManaged":true},"xunit.runner.visualstudio":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[3.0.1, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.39","AWSSDK.DynamoDBv2":"3.7.406.21","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.75","AWSSDK.S3":"3.7.416.9","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.4.0","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"8.0.0","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"8.0.1","Microsoft.Extensions.Options":"8.0.2","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2024.2.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.8.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","projectName":"BrokerApiTest","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Mvc.Testing":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.NET.Test.Sdk":{"target":"Package","version":"[17.12.0, )","versionCentrallyManaged":true},"Moq":{"target":"Package","version":"[4.20.72, )","versionCentrallyManaged":true},"xunit":{"target":"Package","version":"[2.9.3, )","versionCentrallyManaged":true},"xunit.runner.visualstudio":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[3.0.1, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"14.0.0","AutoMapper.AspNetCore.OData.EFCore":"7.0.1","AutoMapper.Collection":"11.0.0","AutoMapper.Collection.EntityFrameworkCore":"11.0.0","AutoMapper.Contrib.Autofac.DependencyInjection":"9.0.0","AutoMapper.Data":"9.0.0","AutoMapper.EF6":"3.0.1","AutoMapper.Extensions.EnumMapping":"4.1.0","AutoMapper.Extensions.ExpressionMapping":"8.0.0","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"9.0.4","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"9.0.4","Microsoft.Extensions.Options":"9.0.4","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/BrokerApiTest/obj/rider.project.restore.info b/BrokerApiTest/obj/rider.project.restore.info index 7b67913..43b5b0b 100644 --- a/BrokerApiTest/obj/rider.project.restore.info +++ b/BrokerApiTest/obj/rider.project.restore.info @@ -1 +1 @@ -17455459552361144 \ No newline at end of file +17460517968346217 \ No newline at end of file diff --git a/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs b/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs index 6135dc4..548fac6 100644 --- a/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs +++ b/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs @@ -14,6 +14,7 @@ using META_ID = System.UInt32; using BEACON_GUID = System.String; using ITEM_GUID = System.String; using USER_GUID = System.String; +using Amazon.S3.Model; namespace GameServer; @@ -74,11 +75,6 @@ public class BeaconShopAction : EntityActionBase } } - public bool hasBeaconShopSoldRecord(BEACON_GUID beaconGuid) - { - return m_beacon_shop_sold_records.TryGetValue(beaconGuid, out var record); - } - public async Task AddBeaconShopSoldRecordsFromDocs(List beaconShopSoldRecordDocs) { var result = new Result(); @@ -174,6 +170,13 @@ public class BeaconShopAction : EntityActionBase return result; } + if (isRentalSafeTime(ugc_npc) == false) + { + err_msg = $"Rental Safe Time is over - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopOverRentalSafeTime, err_msg); + return result; + } + var fn_start_register_beacon_shop_item = async delegate () { var result = new Result(); @@ -280,7 +283,7 @@ public class BeaconShopAction : EntityActionBase ); if (result.isFail()) { return result; } - var task_log_data = BeaconShopBusinessLogHelper.toLogInfo(beaconShopMongoDoc); + var task_log_data = BeaconShopBusinessLogHelper.toLogInfo(beaconShopMongoDoc, beacon_shop_attribute.IsActiveSelling); invokers.Add(new BeaconShopBusinessLog(task_log_data)); result = await m_beacon_shop_repository.insert(beaconShopMongoDoc); @@ -317,7 +320,9 @@ public class BeaconShopAction : EntityActionBase return result; } - BeaconShopHelper.send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(player.getUserGuid(), BeaconGuid); + var hasBeaconShopItem = ugc_npc_beacon_shop_action.hasBeaconShopItem(); + + BeaconShopHelper.send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(player.getUserGuid(), BeaconGuid, hasBeaconShopItem); PacketHandler.BeaconShopRegisterItemPacketHandler.send_S2C_ACK_BEACON_SHOP_REGISTER_ITEM(player, result, beacon_shop_item, found_transaction_runner.getCommonResult()); return result; @@ -352,6 +357,31 @@ public class BeaconShopAction : EntityActionBase return result; } + var ugc_npc_beacon_shop_action = found_ugc_npc.getEntityAction(); + + //1. 아이템 찾기 + var found_item = ugc_npc_beacon_shop_action.getBeaconShopItem(itemGuid); + if (found_item == null) + { + err_msg = $"Failed to tryGetItemByItemGuid BeaconShopItem !!! : itemGuid : {itemGuid}, {player.toBasicString()}"; + result.setFail(ServerErrorCode.ItemNotFound, err_msg); + PacketHandler.BeaconShopReturnItemPacketHandler.send_S2C_ACK_BEACON_SHOP_RETURN_ITEM(player, result); + return result; + } + + //2. 판매 아이템 활성화 확인 + var beacon_shop_item_attribute = found_item.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_shop_item_attribute, () => $"beacon_shop_item_attribute is null !!! - {player.toBasicString()}"); + if (beacon_shop_item_attribute.IsActiveSelling == true) + { + if (isRentalSafeTime(found_ugc_npc) == false) + { + err_msg = $"Rental Safe Time is over - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopOverRentalSafeTime, err_msg); + return result; + } + } + var fn_start_return_item = async delegate () { using (var runner_with_scope = new EntityTransactionRunnerWithScopLock(found_ugc_npc)) @@ -455,7 +485,7 @@ public class BeaconShopAction : EntityActionBase { PacketHandler.BeaconShopReturnItemPacketHandler.send_S2C_ACK_BEACON_SHOP_RETURN_ITEM(player, result); ugc_npc_beacon_shop_action.setUpdateBeaconShopItem(); - player.send_S2C_NTF_BEACON_SHOP_REFRESH(beaconGuid); + player.send_S2C_NTF_BEACON_SHOP_REFRESH(beaconGuid, BoolType.True); return result; } @@ -493,6 +523,39 @@ public class BeaconShopAction : EntityActionBase return result; } + var ugc_npc_beacon_shop_action = found_ugc_npc.getEntityAction(); + var beacon_shop_item = ugc_npc_beacon_shop_action.getBeaconShopItem(itemGuid); + if (beacon_shop_item == null) + { + err_msg = $"Not found Beacon Shop Item !!! : itemGuid:{itemGuid} beaconOwner:{beaconOwnerGuid} - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopNotFoundItem, err_msg); + return result; + } + + // 판매 아이템 활성화 확인 + var beacon_shop_item_attribute = beacon_shop_item.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_shop_item_attribute, () => $"beacon_shop_item_attribute is null !!! - {player.toBasicString()}"); + if (beacon_shop_item_attribute.IsActiveSelling == false) + { + err_msg = $"Is Deactive Selling Item !! - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopDeactiveItemForSell, err_msg); + return result; + } + + if (isRentalMyhome(found_ugc_npc) == false) + { + err_msg = $"Beacon is not in myHome !!! - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopBeaconIsNotInRentalHome, err_msg); + return result; + } + + if (isRentalSafeTime(found_ugc_npc) == false) + { + err_msg = $"Rental Safe Time is over - {player.toBasicString()}"; + result.setFail(ServerErrorCode.BeaconShopOverRentalSafeTime, err_msg); + return result; + } + var fn_start_purchase_item = async delegate () { var result = new Result(); @@ -677,7 +740,7 @@ public class BeaconShopAction : EntityActionBase { PacketHandler.BeaconShopReturnItemPacketHandler.send_S2C_ACK_BEACON_SHOP_RETURN_ITEM(player, result); ugc_npc_beacon_shop_action.setUpdateBeaconShopItem(); - player.send_S2C_NTF_BEACON_SHOP_REFRESH(beaconGuid); + player.send_S2C_NTF_BEACON_SHOP_REFRESH(beaconGuid, BoolType.True); return result; } @@ -702,7 +765,9 @@ public class BeaconShopAction : EntityActionBase PacketHandler.BeaconShopPurchaseItemPacketHandler.send_S2C_ACK_BEACON_SHOP_PURCHASE_ITEM(player, result, itemGuid, beaconGuid, left_item_stack_count, found_transaction_runner.getCommonResult()); - BeaconShopHelper.send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(beacon_owner_guid, beaconGuid); + var hasBeaconShopItem = ugc_npc_beacon_shop_action.hasBeaconShopItem(); + + BeaconShopHelper.send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(beacon_owner_guid, beaconGuid, hasBeaconShopItem); var player_manager = server_logic.getPlayerManager(); if (player_manager.tryGetUserByPrimaryKey(beacon_owner_guid, out var found_user) == true) @@ -724,6 +789,91 @@ public class BeaconShopAction : EntityActionBase return result; } + private bool isRentalMyhome(UgcNpc ugcNpc) + { + var player = getOwner() as Player; + NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); + + var beacon_attribute = ugcNpc.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!"); + + var rental_agent_action = player.getEntityAction(); + + if (beacon_attribute.State != EntityStateType.UsingByMyHome || + rental_agent_action.isRentalMyhome(beacon_attribute.LocatedInstanceGuid) == false) + { + return false; + } + + return true; + } + + // 랜탈 기간이 안전한 시간 내 인지 확인 + private bool isRentalSafeTime(UgcNpc ugcNpc) + { + var player = getOwner() as Player; + NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); + + var beacon_attribute = ugcNpc.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!"); + + var rental_agent_action = player.getEntityAction(); + + var rental_finish_time = rental_agent_action.getRentalMyhomeFinishTime(beacon_attribute.LocatedInstanceGuid); + if (rental_finish_time.HasValue == false) + { + return false; + } + + var now = DateTime.UtcNow; + if (rental_finish_time.Value.AddSeconds(-5) < now) + { + return false; + } + + return true; + } + public async Task BeaconShopDeactiveItems(BEACON_GUID beaconGuid, USER_GUID beaconOwnerGuid, List invokers) + { + var result = new Result(); + var err_msg = string.Empty; + + var player = getOwner() as Player; + NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); + + // 1. 아이템 비활성화 + (result, var found_ugc_npc, var ugc_npc_owner) = await NpcHelper.findUgcNpc(beaconGuid, beaconOwnerGuid); + if (found_ugc_npc == null) + { + if (result.isSuccess()) + result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg); + err_msg = $"Not found Beacon !!! : beaconOwner:{beaconOwnerGuid} - {player.toBasicString()}"; + return result; + } + + var ugc_npc_attribute = found_ugc_npc.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(ugc_npc_attribute, () => $"ugc_npc_attribute is null !!! - {player.toBasicString()}"); + + var ugc_npc_beacon_shop_action = found_ugc_npc.getEntityAction(); + ugc_npc_beacon_shop_action.setDeactiveAllItems(); + + //2. mongo에서 제거 & 비지니스 로그 작성 + var beacon_shop_item_list = ugc_npc_beacon_shop_action.getHasBeaconShopItem(); + foreach (var beacon_shop_item in beacon_shop_item_list) + { + var beacon_shop_item_attribute = beacon_shop_item.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_shop_item_attribute, () => $"beacon_shop_item_attribute is null !!! - {toBasicString()}"); + + await m_beacon_shop_repository.delete(beacon_shop_item_attribute.ItemGuid); + + var task_log_data = BeaconShopBusinessLogHelper.toLogInfo(beacon_shop_item_attribute, ugc_npc_attribute, player.getUserGuid()); + invokers.Add(new BeaconShopBusinessLog(task_log_data)); + } + + return result; + } + + private (Result, DynamoDbItemRequestQueryContext?) BeaconShopSoldPriceUpdate(string combinationKeyForPK, string combinationKeyForSK, double givenPrice, double taxPrice, int numOfReceiptNotReceived) { var result = new Result(); @@ -1062,19 +1212,24 @@ public class BeaconShopAction : EntityActionBase return result; } - int numOfReceiptNotReceived = 0; - - if (m_beacon_shop_sold_price.TryGetValue(beaconGuid, out var beaconShopSoldPrice) == true) - { - var beacon_shop_sold_price_attribute = beaconShopSoldPrice.getEntityAttribute(); - NullReferenceCheckHelper.throwIfNull(beacon_shop_sold_price_attribute, () => $"beacon_shop_sold_price_attribute is null !!! - {player.toBasicString()}"); - numOfReceiptNotReceived = beacon_shop_sold_price_attribute.NumOfReceiptNotReceived; - } + int numOfReceiptNotReceived = getBeaconShopNumOfReceiptNotReceived(beaconGuid); PacketHandler.BeaconShopGetItemInfosPacketHandler.send_S2C_ACK_BEACON_SHOP_GET_ITEM_INFOS(player, result, beacon_shop_item_reload_data, beacon_shop_profile_attribute.DailyRegisterCount, numOfReceiptNotReceived); return result; } + public int getBeaconShopNumOfReceiptNotReceived(BEACON_GUID beaconGuid) + { + if (m_beacon_shop_sold_price.TryGetValue(beaconGuid, out var beaconShopSoldPrice) == true) + { + var beacon_shop_sold_price_attribute = beaconShopSoldPrice.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_shop_sold_price_attribute, () => $"beacon_shop_sold_price_attribute is null !!! - {getOwner().toBasicString()}"); + return beacon_shop_sold_price_attribute.NumOfReceiptNotReceived; + } + + return 0; + } + private async Task ProcessUpdateDailyRegisterCount(UgcNpc found_ugc_npc) { var result = new Result(); @@ -1134,10 +1289,7 @@ public class BeaconShopAction : EntityActionBase NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!"); // 1. 비컨 체크 - var rental_agent_action = player.getEntityAction(); - - if (beacon_attribute.State != EntityStateType.UsingByMyHome || - rental_agent_action.isRentalMyhome(beacon_attribute.LocatedInstanceGuid) == false) + if (isRentalMyhome(ugcNpc) == false) { err_msg = $"Beacon is not in myHome !!! : beacon State:{beacon_attribute.State} - {player.toBasicString()}"; result.setFail(ServerErrorCode.BeaconShopBeaconIsNotInRentalHome, err_msg); diff --git a/GameServer/Contents/BeaconShop/BeaconShopItem.cs b/GameServer/Contents/BeaconShop/BeaconShopItem.cs index 55d684f..80dc99d 100644 --- a/GameServer/Contents/BeaconShop/BeaconShopItem.cs +++ b/GameServer/Contents/BeaconShop/BeaconShopItem.cs @@ -89,12 +89,13 @@ namespace GameServer beacon_shop_attribute.BeaconGuid = beacon_guid; beacon_shop_attribute.SellingFinishTime = selling_finish_time; beacon_shop_attribute.PriceForUnit = price_for_unit; + beacon_shop_attribute.IsActiveSelling = true; beacon_shop_attribute.ItemMetaId = deleted_item_attribute.ItemMetaId; beacon_shop_attribute.ItemStackCount = amount; beacon_shop_attribute.Level = deleted_item_attribute.Level; beacon_shop_attribute.Attributes = deleted_item_attribute.Attributes.Select(x => x).ToList(); - beacon_shop_attribute.EquipedIvenType = deleted_item_attribute.EquipedIvenType; + beacon_shop_attribute.EquipedInvenType = deleted_item_attribute.EquipedInvenType; beacon_shop_attribute.EquipedPos = deleted_item_attribute.EquipedPos; beacon_shop_attribute.newEntityAttribute(); @@ -132,6 +133,7 @@ namespace GameServer beacon_shop_4_client.ItemMetaid = (int)beacon_shop_attribute.ItemMetaId; beacon_shop_4_client.SellingFinishTime = Timestamp.FromDateTime(beacon_shop_attribute.SellingFinishTime); beacon_shop_4_client.PriceForUnit = beacon_shop_attribute.PriceForUnit; + beacon_shop_4_client.IsActiveSelling = beacon_shop_attribute.IsActiveSelling == true ? BoolType.True : BoolType.False; beacon_shop_4_client.Amount = beacon_shop_attribute.ItemStackCount; return beacon_shop_4_client; diff --git a/GameServer/Contents/BeaconShop/Helper/BeaconShopHelper.cs b/GameServer/Contents/BeaconShop/Helper/BeaconShopHelper.cs index 167a812..5a96c70 100644 --- a/GameServer/Contents/BeaconShop/Helper/BeaconShopHelper.cs +++ b/GameServer/Contents/BeaconShop/Helper/BeaconShopHelper.cs @@ -10,6 +10,41 @@ namespace GameServer { internal static class BeaconShopHelper { + public static async Task DeactiveBeaconShopItems(string beaconGuid) + { + var server_logic = GameServerApp.getServerLogic(); + var dynamo_db_client = server_logic.getDynamoDbClient(); + + var (result, primary_key_object) = await DynamoDBDocBaseHelper.makePrimaryKey(beaconGuid); + if (result.isFail() || primary_key_object == null) + { + return result; + } + + var query_config = dynamo_db_client.makeQueryConfigForReadByPKOnly(primary_key_object.PK); + (result, var read_docs) = await dynamo_db_client.simpleQueryDocTypesWithQueryOperationConfig(query_config); + if (result.isFail()) + { + return result; + } + + foreach (var beacon_shop_item_doc in read_docs) + { + var beaconShopItemAttrib = beacon_shop_item_doc.getAttrib(); + NullReferenceCheckHelper.throwIfNull(beaconShopItemAttrib, () => $"beaconShopItemAttrib is null !!"); + beaconShopItemAttrib.IsActiveSelling = false; + beacon_shop_item_doc.setQueryType(QueryType.Update); + + result = await dynamo_db_client.simpleUpdateDocumentWithDocType(beacon_shop_item_doc); + if (result.isFail()) + { + return result; + } + } + + return result; + } + public static BeaconShopItemBoardInfo toBeaconShopItemMongoDataClient(this BeaconShopMongoDoc beaconShopMongoDoc) { var beacon_shop_4_client = new BeaconShopItemBoardInfo(); @@ -81,7 +116,7 @@ namespace GameServer rabbit_mq_4_game.SendMessage(targetServer, ntf_packet); } - public static void send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(USER_GUID targetUserGuid, BEACON_GUID targetBeaconGuid) + public static void send_GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM(USER_GUID targetUserGuid, BEACON_GUID targetBeaconGuid, bool hasBeaconShopItem) { var server_logic = GameServerApp.getServerLogic(); @@ -94,6 +129,7 @@ namespace GameServer ntf_update_beacon_shop_item.TargetUserGuid = targetUserGuid; ntf_update_beacon_shop_item.TargetBeaconGuid = targetBeaconGuid; + ntf_update_beacon_shop_item.HasBeaconShopItem = hasBeaconShopItem == true ? BoolType.True : BoolType.False; rabbit_mq_4_game.sendMessageToExchangeAllGame(ntf_packet); } @@ -112,7 +148,7 @@ namespace GameServer item_attrib.ItemStackCount = itemStackCount; item_attrib.Level = beacon_shop_item_attrib.Level; item_attrib.Attributes = beacon_shop_item_attrib.Attributes.Select(x => x).ToList(); - item_attrib.EquipedIvenType = beacon_shop_item_attrib.EquipedIvenType; + item_attrib.EquipedInvenType = beacon_shop_item_attrib.EquipedInvenType; item_attrib.EquipedPos = beacon_shop_item_attrib.EquipedPos; return itemDoc; diff --git a/GameServer/Contents/BeaconShop/Log/BeaconShopBusinessLogHelper.cs b/GameServer/Contents/BeaconShop/Log/BeaconShopBusinessLogHelper.cs index b6d0a8b..4533654 100644 --- a/GameServer/Contents/BeaconShop/Log/BeaconShopBusinessLogHelper.cs +++ b/GameServer/Contents/BeaconShop/Log/BeaconShopBusinessLogHelper.cs @@ -6,14 +6,14 @@ namespace GameServer { static public class BeaconShopBusinessLogHelper { - static public BeaconShopLogData toLogInfo(BeaconShopMongoDoc beaconShopMongoDoc) + static public BeaconShopLogData toLogInfo(BeaconShopMongoDoc beaconShopMongoDoc, bool isActiveSelling) { var logData = new BeaconShopLogData(); - logData.setInfo(beaconShopMongoDoc); + logData.setInfo(beaconShopMongoDoc, isActiveSelling); return logData; } - static public void setInfo(this BeaconShopLogData logData, BeaconShopMongoDoc beaconShopMongoDoc) + static public void setInfo(this BeaconShopLogData logData, BeaconShopMongoDoc beaconShopMongoDoc, bool isActiveSelling) { logData.ItemGuid = beaconShopMongoDoc.ItemGuid; logData.TagId = beaconShopMongoDoc.TagId; @@ -28,6 +28,7 @@ namespace GameServer logData.BeaconMyHomeGuid = beaconShopMongoDoc.BeaconMyHomeGuid; logData.SellingFinishTime = beaconShopMongoDoc.SellingFinishTime; logData.BuyerGuid = string.Empty; + logData.IsActiveSelling = isActiveSelling; } static public BeaconShopLogData toLogInfo(BeaconShopItemAttribute beaconShopItemAttribute, UgcNpcAttribute ugcNpcAttribute, string buyerGuid) @@ -51,6 +52,7 @@ namespace GameServer logData.BeaconMyHomeGuid = ugcNpcAttribute.LocatedInstanceGuid; logData.SellingFinishTime = beaconShopItemAttribute.SellingFinishTime; logData.BuyerGuid = buyerGuid; + logData.IsActiveSelling = beaconShopItemAttribute.IsActiveSelling; } static public BeaconShopSoldRecordLogData toLogInfo(BeaconShopSoldRecordAttribute beaconShopSoldRecordAttribute) diff --git a/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopNotifyHelper.cs b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopNotifyHelper.cs index ddf143e..ab3203c 100644 --- a/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopNotifyHelper.cs +++ b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopNotifyHelper.cs @@ -5,9 +5,9 @@ namespace GameServer { public static class BeaconShopNotifyHelper { - public static bool send_S2C_NTF_BEACON_SHOP_REFRESH(this Player player, BEACON_GUID beaconGuid) + public static bool send_S2C_NTF_BEACON_SHOP_REFRESH(this Player player, BEACON_GUID beaconGuid, BoolType hasBeaconShopItem) { - var noti_packet = makeAckBeaconShopRefreshPacket(beaconGuid); + var noti_packet = makeAckBeaconShopRefreshPacket(beaconGuid, hasBeaconShopItem); if (false == GameServerApp.getServerLogic().onSendPacket(player, noti_packet)) { @@ -17,13 +17,14 @@ namespace GameServer return true; } - public static ClientToGame makeAckBeaconShopRefreshPacket(BEACON_GUID beaconGuid) + public static ClientToGame makeAckBeaconShopRefreshPacket(BEACON_GUID beaconGuid, BoolType hasBeaconShopItem) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.NtfBeaconShopRefresh = new(); noti_packet.Message.NtfBeaconShopRefresh.BeaconGuid = beaconGuid; + noti_packet.Message.NtfBeaconShopRefresh.HasBeaconShopItem = hasBeaconShopItem; return noti_packet; } diff --git a/GameServer/Contents/Craft/Action/CraftAction.cs b/GameServer/Contents/Craft/Action/CraftAction.cs index 72a9dc0..70f51e4 100644 --- a/GameServer/Contents/Craft/Action/CraftAction.cs +++ b/GameServer/Contents/Craft/Action/CraftAction.cs @@ -908,7 +908,7 @@ namespace GameServer foreach (var craft in craftList) { - var craft_attribute = craft.getOriginEntityAttribute(); + var craft_attribute = craft.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!"); craft_attribute.CraftFinishTime = DateTimeHelper.Current; diff --git a/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs b/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs new file mode 100644 index 0000000..f701288 --- /dev/null +++ b/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs @@ -0,0 +1,44 @@ +using System.Collections.Concurrent; +using GameServer.Contents.GameMode.InteractionObject; +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Action; + +public class GameGameObjectAction : EntityActionBase, IGameObject +{ + //todo : 장르별로 구분할 필요 있으면 depth 하나 더 둔다. + + protected EGameObjectType m_object_type = EGameObjectType.None; + public GameGameObjectAction (EntityBase owner, EGameObjectType objectType) + : base(owner) + { + m_object_type = objectType; + } + + public virtual Task interact(string anchorGuid, DateTime interactionTime) + { + Log.getLogger().error($"interact Not implemant, {toBasicString()}"); + throw new NotImplementedException(); + } + + public override Task onInit() + { + Log.getLogger().error($"onInit Not implemant, {toBasicString()}"); + throw new NotImplementedException(); + } + + public override void onClear() + { + Log.getLogger().error($"onClear Not implemant, {toBasicString()}"); + throw new NotImplementedException(); + } + + public override string toBasicString() + { + return $"GameObjectType : {m_object_type}, " + base.toBasicString(); + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Helper/GameModeConstants.cs b/GameServer/Contents/GameMode/Helper/GameModeConstants.cs new file mode 100644 index 0000000..7233ef2 --- /dev/null +++ b/GameServer/Contents/GameMode/Helper/GameModeConstants.cs @@ -0,0 +1,8 @@ +namespace GameServer.Contents.GameMode.Helper; + +public class GameModeConstants +{ + public static readonly int GAME_MODE_DEFAULT_INTERVAL_MSECS = 200; + public static readonly int GAME_MODE_RUN_RACE_CHECK_INTERVAL_MSECS = 200; + public static readonly int GAME_MODE_TPS_FFA_CHECK_INTERVAL_MSECS = 200; +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Helper/GameModeHelper.cs b/GameServer/Contents/GameMode/Helper/GameModeHelper.cs index 268ae64..7d90a86 100644 --- a/GameServer/Contents/GameMode/Helper/GameModeHelper.cs +++ b/GameServer/Contents/GameMode/Helper/GameModeHelper.cs @@ -1,4 +1,11 @@ -using Google.Protobuf; +using GameServer.Contents.GameMode.Manage; +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using GameServer.Contents.GameMode.Mode_Battle.ModeFreeForAll.Manage; +using GameServer.Contents.GameMode.Mode_Running.Manage; +using GameServer.Contents.GameMode.Mode_Running.ModeRace.Manage; +using Google.Protobuf; using Google.Protobuf.WellKnownTypes; @@ -15,57 +22,243 @@ namespace GameServer; public class GameModeHelper { - public static (Result, IGameModeJoinHandler) getGameModeJoinHandler(InstanceRoom instanceRoom, EPlaceType placeType) + public static (Result, IGameModeJoinHandler) getGameModeJoinHandler(InstanceRoom instanceRoom, int gameModeId, string roomId) { + (var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId); var result = new Result(); - switch (placeType) + switch (mode_type) { - case EPlaceType.BattleRoom: - return (result, new BattleInstanceJoinHandler(instanceRoom)); - case EPlaceType.ArcadeRunning: - return (result, new ArcadeRunningInstanceJoinHandler(instanceRoom)); - case EPlaceType.GameRoom: - return (result, new GameRoomJoinHandler(instanceRoom)); + case GameModeType.TPS_FFA: + return (result, new TPSFreeForAllJoinHandler(instanceRoom)); + case GameModeType.TPS_TDM: + return (result, new TPSTeamDeathMatchJoinHandler(instanceRoom)); + case GameModeType.RUN_ADV: + return (result, new RunAdventureJoinHandler(instanceRoom)); + case GameModeType.RUN_RACE: + return (result, new RunRaceJoinHandler(instanceRoom)); + //case GameModeType.DANCE_: + // return (result, new (instanceRoom)); default: - var err_msg = $"invalid placeType in this mode!!!! placeType : {placeType}"; + var err_msg = $"invalid gameMode !!! gameModeId : {gameModeId}"; result.setFail(ServerErrorCode.GameModeJoinHandlerNotExist, err_msg); - return (result, new BattleInstanceJoinHandler(instanceRoom)); + return (result, new TPSFreeForAllJoinHandler(instanceRoom)); } } - public static (Result, IGameModeInitHandler) getGameModeInitHandler(InstanceRoom instanceRoom, EPlaceType placeType) + public static (Result, IGameModeInitHandler) getGameModeInitHandler(InstanceRoom instanceRoom, int gameModeId, string roomId) { + (var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId); var result = new Result(); - switch (placeType) + switch (mode_type) { - case EPlaceType.BattleRoom: - return (result, new BattleInstanceInitHandler(instanceRoom)); - case EPlaceType.ArcadeRunning: - return (result, new ArcadeRunningInstanceInitHandler(instanceRoom)); - case EPlaceType.GameRoom: - return (result, new GameRoomInitHandler(instanceRoom)); + case GameModeType.TPS_FFA: + return (result, new TPSFreeForAllInitHandler(instanceRoom)); + case GameModeType.TPS_TDM: + return (result, new TPSTeamDeathMatchInitHandler(instanceRoom)); + case GameModeType.RUN_ADV: + return (result, new RunAdventureInitHandler(instanceRoom)); + case GameModeType.RUN_RACE: + return (result, new RunRaceInitHandler(instanceRoom)); default: - var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}"; + var err_msg = $"getGameModeInitHandler not exist!!!! mode_type : {mode_type}"; result.setFail(ServerErrorCode.GameModeInitHandlerNotExist, err_msg); - return (result, new BattleInstanceInitHandler(instanceRoom)); + return (result, new TPSFreeForAllInitHandler(instanceRoom)); } } - public static (Result, IGameModeJoinSuccessHandler?) getGameModeJoinSuccessHandler(Player player, InstanceRoom instanceRoom, EPlaceType placeType) + public static (Result, IGameModeJoinSuccessHandler?) getGameModeJoinSuccessHandler(Player player, InstanceRoom instanceRoom, int gameModeId, string roomId) { var result = new Result(); - switch (placeType) + (var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId); + switch (mode_type) { - case EPlaceType.BattleRoom: - return (result, new BattleInstanceJoinSuccessHandler(player, instanceRoom)); - case EPlaceType.ArcadeRunning: - return (result, new ArcadeRunningInstanceJoinSuccessHandler(player, instanceRoom)); - case EPlaceType.GameRoom: - return (result, new GameRoomJoinSuccessHandler(player, instanceRoom)); + case GameModeType.TPS_FFA: + return (result, new TPSFreeForAllJoinSuccessHandler(player, instanceRoom)); + case GameModeType.TPS_TDM: + return (result, new TPSTeamDeathMatchJoinSuccessHandler(player, instanceRoom)); + case GameModeType.RUN_ADV: + return (result, new RunAdventureJoinSuccessHandler(player, instanceRoom)); + case GameModeType.RUN_RACE: + return (result, new RunRaceJoinSuccessHandler(player, instanceRoom)); default: - var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}"; + var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}"; result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg); return (result, null); } } + + public static (Result, IGameMode?) createGameMode(InstanceRoom instanceRoom, GameModeType modeType) + { + var result = new Result(); + switch (modeType) + { + case GameModeType.TPS_FFA: + return (result, new GameModeTPSFreeForAll(new GameModeTPSFreeForAllData(), instanceRoom)); + case GameModeType.TPS_TDM: + return (result, new GameModeTPSTeamDeathMatch(new GameModeTPSTeamDeathMatchData(), instanceRoom)); + case GameModeType.RUN_ADV: + return (result, new GameModeRunAdventure(new GameModeRunAdventureData(), instanceRoom)); + case GameModeType.RUN_RACE: + return (result, new GameModeRunRace(new GameModeRunRaceData(), instanceRoom)); + default: + var err_msg = $"createGameMode not exist !!!! mode_type : {modeType}"; + result.setFail(ServerErrorCode.GameModeCreateFail, err_msg); + return (result, null); + } + } + + public static (Result, IGameModeLeaveHandler?) getGameModeLeaveHandler(Player player, string roomId) + { + var result = new Result(); + (var genre_type, var mode_type) = getGameModeMeta(1, roomId); + switch (mode_type) + { + case GameModeType.TPS_FFA: + return (result, new TPSFreeForAllLeaveHandler(player, roomId)); + case GameModeType.TPS_TDM: + return (result, new TPSTeamDeathMatchLeaveHandler(player, roomId)); + case GameModeType.RUN_ADV: + return (result, new RunAdventureLeaveHandler(player, roomId)); + case GameModeType.RUN_RACE: + return (result, new RunRaceLeaveHandler(player, roomId)); + default: + var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}"; + result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg); + return (result, null); + } + } + + public static (Result, IGameModeDestroyHandler?) getGameModeDestroyHandler(string roomId) + { + var result = new Result(); + (var genre_type, var mode_type) = getGameModeMeta(1, roomId); + switch (mode_type) + { + case GameModeType.TPS_FFA: + return (result, new TPSFreeForAllDestroyHandler(roomId)); + case GameModeType.TPS_TDM: + return (result, new TPSTeamDeathMatchDestroyHandler(roomId)); + case GameModeType.RUN_ADV: + return (result, new RunAdventureDestroyHandler(roomId)); + case GameModeType.RUN_RACE: + return (result, new RunRaceDestroyHandler(roomId)); + default: + var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}"; + result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg); + return (result, null); + } + } + + + public static IHostMigrator createHostMigrator(int gameModeId) + { + var result = new Result(); + (var genre_type, var mode_type) = getGameModeMeta(gameModeId, "battle"); //kihoon 임시 마이그레이터 나중에 수정 필요 + switch (mode_type) + { + case GameModeType.TPS_FFA: + //return HostMigrationFactory.createCommonHostMigrator((int) BattlePlayMode.PodCombat, GameServerApp.getServerLogic()); + return new BattleFFAModeHostMigrator(); + default: + Log.getLogger().error($"createHostMigrator Not implements mode : {mode_type}"); + return new BattleFFAModeHostMigrator(); + } + } + + + public static (GameGenreType genreType, GameModeType modeType) getGameModeMeta(int gameModeId, string roomid) + { + // kihoon todo : Meta에서 데이터 가져와야 한다. + // kihoon todo : Meta가 없을경우의 result 처리 필요 + + //kihoon todo : roomid 는 임시 나중에 mode id로 넣어서 처리 해줘야 된다. + if (roomid.Contains("battle")) + { + return (GameGenreType.TPS, GameModeType.TPS_FFA); + } + else if (roomid.Contains("1017101")) + { + return (GameGenreType.Running, GameModeType.RUN_RACE); + } + + return (GameGenreType.TPS, GameModeType.TPS_FFA); + } + + public static GameModeBase toGameModeBase(IGameMode gameMode) + { + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); + return game_mode_base; + } + + public static async Task leaveGameInstanceRoom(string userGuid, string roomId) + { + var result = new Result(); + var err_msg = string.Empty; + + var server_logic = GameServerApp.getServerLogic(); + + var instance_room_storage = new InstanceRoomStorage(); + instance_room_storage.Init(server_logic.getRedisDb(), ""); + + await instance_room_storage.leaveInstanceRoom(userGuid, roomId); + + var instance_room_id_base = getInstanceRoomIdBaseFromInstanceRoomId(roomId); + await instance_room_storage.decreaseInstanceRoomScore(instance_room_id_base, roomId); + + return result; + } + + public static string getInstanceRoomIdBaseFromInstanceRoomId(string instanceRoomId) + { + var instance_room_Id_element = instanceRoomId.Split(":"); + + if (instance_room_Id_element.Length >= 2) + { + return $"{instance_room_Id_element[0]}:{instance_room_Id_element[1]}"; + } + Log.getLogger().error($"Instance room id weired : {instanceRoomId}"); + return string.Empty; + } + + public static IGameObject? getObjectInteractAction(GameModeBase gameModeBase, Anchor anchor) + { + var entity_type = gameModeBase.getEntityType(); + + switch (entity_type) + { + case EntityType.GameModeTpsfreeForAll: + //kihoon todo : table id 넘겨서 pickup, combat, weapon, buff, 인지 전달 받아야 된다. + return getTpsFreeForAllInteractAction(gameModeBase, anchor); + case EntityType.GameModeTpsteamDeathMatch: + return getTpsTeamDeathMatchInteractAction(gameModeBase, anchor); + case EntityType.GameModeRunAdventure: + return getRunAcventureInteractAction(gameModeBase, anchor); + case EntityType.GameModeRunRace: + return getRunRaceInteractAction(gameModeBase, anchor); + default: + return null; + } + } + + public static IGameObject? getRunRaceInteractAction(GameModeBase gameModeBase, Anchor anchor) + { + //kihoon todo :현재 savePoint 밖에 없어서 그거 넘긴다. + return gameModeBase.getEntityAction(); + } + + public static IGameObject? getTpsFreeForAllInteractAction(GameModeBase gameModeBase, Anchor anchor) + { + return null; + } + + public static IGameObject? getTpsTeamDeathMatchInteractAction(GameModeBase gameModeBase, Anchor anchor) + { + return null; + } + + public static IGameObject? getRunAcventureInteractAction(GameModeBase gameModeBase, Anchor anchor) + { + return null; + } } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Helper/GameNotifyHelper.cs b/GameServer/Contents/GameMode/Helper/GameNotifyHelper.cs new file mode 100644 index 0000000..d5794af --- /dev/null +++ b/GameServer/Contents/GameMode/Helper/GameNotifyHelper.cs @@ -0,0 +1,35 @@ +using Google.Protobuf.WellKnownTypes; +using Newtonsoft.Json; +using ServerCore; + +namespace GameServer.Contents.GameMode.Helper; + +public class GameNotifyHelper +{ + public static void broadcast_GS2C_NTF_GAME_STATE_UPDATE(InstanceRoom instanceRoom, GameModeState state, DateTime nextUpdatableTime) + { + var ntf = makeNtfGameStateUpdate(instanceRoom, state, nextUpdatableTime); + Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE ntf instanceRoom Id : {instanceRoom.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfGameStateUpdate)}"); + instanceRoom.Broadcast(ntf); + } + + public static void send_GS2C_NTF_GAME_STATE_UPDATE(Player player, InstanceRoom instanceRoom, GameModeState state, DateTime nextUpdatableTime) + { + var ntf = makeNtfGameStateUpdate(instanceRoom, state, nextUpdatableTime); + Log.getLogger().debug($"send_GS2C_NTF_GAME_STATE_UPDATE ntf instanceRoom Id : {instanceRoom.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfGameStateUpdate)}"); + GameServerApp.getServerLogic().onSendPacket(player, ntf); + } + + public static ClientToGame makeNtfGameStateUpdate(InstanceRoom instanceRoom, GameModeState state, DateTime nextUpdatableTime) + { + ClientToGame ntf = new ClientToGame(); + ntf.Message = new ClientToGameMessage(); + ntf.Message.NtfGameStateUpdate = new ClientToGameMessage.Types.GS2C_NTF_GAME_STATE_UPDATE_NOTI(); + ntf.Message.NtfGameStateUpdate.CurrentState = state; + ntf.Message.NtfGameStateUpdate.NextUpdatableTime = Timestamp.FromDateTime(nextUpdatableTime); + + return ntf; + } + + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/InteractionObject/GameObject.cs b/GameServer/Contents/GameMode/InteractionObject/GameObject.cs new file mode 100644 index 0000000..93f5192 --- /dev/null +++ b/GameServer/Contents/GameMode/InteractionObject/GameObject.cs @@ -0,0 +1,76 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.InteractionObject; + +public class GameObject : EntityBase +{ + public EntityType m_type = EntityType.None; + public string m_anchor_guid { get; set; } = string.Empty; + public DateTime m_active_time { get; set; } = DateTimeHelper.Current; + public bool m_is_active { get; set; } = true; + + public GameObject(EntityType type, string guid) : base(type) + { + m_type = type; + m_anchor_guid = guid; + } + + public GameObject(EntityType type, string guid, bool isActive) : base(type) + { + m_type = type; + m_anchor_guid = guid; + m_is_active = isActive; + } + +} + +public class GameObjectSavePoint : GameObject +{ + public GameObjectSavePoint(string anchorGuid) : base(EntityType.GameObjectSavePoint, anchorGuid) + { + } +} + +public class GameObjectWeapon : GameObject +{ + public GameObjectWeapon(string anchorGuid) : base(EntityType.GameObjectWeapon, anchorGuid) + { + } +} + +public class GameObjectBuff : GameObject +{ + public GameObjectBuff(string anchorGuid) : base(EntityType.GameObjectBuff, anchorGuid) + { + + } +} + +public class GameObjectPodStorage : GameObject +{ + public GameObjectPodStorage(string anchorGuid) : base(EntityType.GameObjectPodStorage, anchorGuid) + { + + } +} + +public class GameObjectCombatPod : GameObject +{ + public GameObjectCombatPod(string anchorGuid) : base(EntityType.GameObjectCombatPod, anchorGuid) + { + + } +} + + +public class GameObjectPickupPod : GameObject +{ + public GameObjectPickupPod(string anchorGuid) : base(EntityType.GameObjectPickupPod, anchorGuid) + { + + } +} diff --git a/GameServer/Contents/GameMode/Manage/GameModeInitHandlerBase.cs b/GameServer/Contents/GameMode/Manage/GameModeInitHandlerBase.cs deleted file mode 100644 index cb393d1..0000000 --- a/GameServer/Contents/GameMode/Manage/GameModeInitHandlerBase.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - - -public abstract class GameModeInitHandlerBase : IGameModeInitHandler -{ - protected readonly EPlaceType m_place_type; - protected readonly InstanceRoom m_instance_room; - - public GameModeInitHandlerBase(InstanceRoom instanceRoom, EPlaceType placeType) - { - m_instance_room = instanceRoom; - m_place_type = placeType; - - } - - public abstract Result gamedModeInstanceInitValidate(); - - public abstract Result gamedModeInstanceInit(); -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/GameModeJoinHandlerBase.cs b/GameServer/Contents/GameMode/Manage/GameModeJoinHandlerBase.cs deleted file mode 100644 index 78b7d7b..0000000 --- a/GameServer/Contents/GameMode/Manage/GameModeJoinHandlerBase.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - - -public abstract class GameModeJoinHandlerBase : IGameModeJoinHandler -{ - protected readonly InstanceRoom m_instance_room; - protected readonly EPlaceType m_place_type = EPlaceType.NONE; - - public GameModeJoinHandlerBase(InstanceRoom instanceRoom, EPlaceType placeType) - { - m_instance_room = instanceRoom; - m_place_type = placeType; - } - - public abstract Result gamedModeInstanceJoinValidate(EPlaceType placeType); //kihoon todo : 여기에 나중에 EPlaceType 대신 GameModeType이란걸 넣어야 한다. - public abstract Result gamedModeInstanceJoin(Player player); - - -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/GameRoomInitHandler.cs b/GameServer/Contents/GameMode/Manage/GameRoomInitHandler.cs deleted file mode 100644 index 1edf1ba..0000000 --- a/GameServer/Contents/GameMode/Manage/GameRoomInitHandler.cs +++ /dev/null @@ -1,24 +0,0 @@ -using ServerCommon; - - -namespace GameServer; - - -public class GameRoomInitHandler : GameModeInitHandlerBase -{ - public GameRoomInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.GameRoom) - { - } - - public override Result gamedModeInstanceInitValidate() - { - var result = new Result(); - return result; - } - - public override Result gamedModeInstanceInit() - { - var result = new Result(); - return result; - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/GameRoomJoinHandler.cs b/GameServer/Contents/GameMode/Manage/GameRoomJoinHandler.cs deleted file mode 100644 index d0bd793..0000000 --- a/GameServer/Contents/GameMode/Manage/GameRoomJoinHandler.cs +++ /dev/null @@ -1,27 +0,0 @@ -using ServerCommon; - - -namespace GameServer; - -public class GameRoomJoinHandler : GameModeJoinHandlerBase -{ - public GameRoomJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.GameRoom) - { - - } - - public override Result gamedModeInstanceJoinValidate(EPlaceType placeType) - { - var result = new Result(); - return result; - } - - public override Result gamedModeInstanceJoin(Player player) - { - var result = new Result(); - string err_msg = string.Empty; - - - return result; - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/IGameModeJoinHandler.cs b/GameServer/Contents/GameMode/Manage/IGameModeJoinHandler.cs deleted file mode 100644 index f89f4df..0000000 --- a/GameServer/Contents/GameMode/Manage/IGameModeJoinHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ - -using ServerCore; -using ServerBase; -using ServerCommon; - - -namespace GameServer; - -public interface IGameModeJoinHandler -{ - public Result gamedModeInstanceJoinValidate(EPlaceType placeType); //kihoon todo : 여기에 나중에 EPlaceType 대신 GameModeType이란걸 넣어야 한다. - public Result gamedModeInstanceJoin(Player player); -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/JoinManage/GameModeInitHandlerBase.cs b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeInitHandlerBase.cs new file mode 100644 index 0000000..8179c52 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeInitHandlerBase.cs @@ -0,0 +1,55 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + +public abstract class GameModeInitHandlerBase : IGameModeInitHandler +{ + protected readonly GameModeType m_game_mode_type; + protected readonly InstanceRoom m_instance_room; + + public GameModeInitHandlerBase(InstanceRoom instanceRoom, GameModeType gameModeType) + { + m_instance_room = instanceRoom; + m_game_mode_type = gameModeType; + + } + + public abstract Result gamedModeInstanceInitValidate(); + + public virtual async Task gamedModeInstanceInit() + { + var result = await GameModeManager.It.createGameMode(m_instance_room, m_game_mode_type); //kihoon todo : 이렇게 짜는게 맞는지...고민좀 해보자 + if (result.isFail()) return result; + + var room_id = m_instance_room.getMap().m_room_id; + if(false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {room_id}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg); + return result; + } + + var initializer = gameMode as IInitializer; + NullReferenceCheckHelper.throwIfNull(initializer, () => $"initializer is null !!! casting error"); + + var gamd_mod_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(gamd_mod_base, () => $"gamd_mod_base is null !!! casting error"); + + //모드별로 필요한 내용 초기화 + using (var releaser = await gamd_mod_base.getAsyncLock()) + { + if (gamd_mod_base.isLoadCompleted()) return result; + + result = await initializer.onInit(); + if (result.isFail()) return result; + } + + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinHandlerBase.cs b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinHandlerBase.cs new file mode 100644 index 0000000..eb9f3bf --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinHandlerBase.cs @@ -0,0 +1,20 @@ +using ServerCommon; + +namespace GameServer.Contents.GameMode.Manage; + +public abstract class GameModeJoinHandlerBase : IGameModeJoinHandler +{ + protected readonly InstanceRoom m_instance_room; + protected readonly GameModeType m_game_mode_type; + + public GameModeJoinHandlerBase(InstanceRoom instanceRoom, GameModeType gameModeType) + { + m_instance_room = instanceRoom; + m_game_mode_type = gameModeType; + } + + public abstract Result gamedModeInstanceJoinValidate(); + public abstract Result gamedModeInstanceJoin(Player player); + + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/GameModeJoinSuccessHandlerBase.cs b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinSuccessHandlerBase.cs similarity index 67% rename from GameServer/Contents/GameMode/Manage/GameModeJoinSuccessHandlerBase.cs rename to GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinSuccessHandlerBase.cs index 44ab44d..d565f93 100644 --- a/GameServer/Contents/GameMode/Manage/GameModeJoinSuccessHandlerBase.cs +++ b/GameServer/Contents/GameMode/Manage/JoinManage/GameModeJoinSuccessHandlerBase.cs @@ -1,29 +1,21 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - -namespace GameServer; +namespace GameServer.Contents.GameMode.Manage; public abstract class GameModeJoinSuccessHandlerBase : IGameModeJoinSuccessHandler { protected Player m_player; - //protected InstanceRoom m_instance_room; - protected EPlaceType m_place_type; + protected GameModeType m_game_mode_type; protected List m_log_invorkers; + protected InstanceRoom m_instance_room; - public GameModeJoinSuccessHandlerBase(Player player, EPlaceType placeType) + public GameModeJoinSuccessHandlerBase(Player player, GameModeType gameModeType, InstanceRoom instanceRoom) { m_player = player; - //m_instance_room = instanceRoom; - m_place_type = placeType; + m_game_mode_type = gameModeType; m_log_invorkers = new(); + m_instance_room = instanceRoom; } public async Task joinSuccess() diff --git a/GameServer/Contents/GameMode/Manage/IGameModeInitHandler.cs b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeInitHandler.cs similarity index 70% rename from GameServer/Contents/GameMode/Manage/IGameModeInitHandler.cs rename to GameServer/Contents/GameMode/Manage/JoinManage/IGameModeInitHandler.cs index 4ca686d..05e91bc 100644 --- a/GameServer/Contents/GameMode/Manage/IGameModeInitHandler.cs +++ b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeInitHandler.cs @@ -3,5 +3,5 @@ public interface IGameModeInitHandler { public Result gamedModeInstanceInitValidate(); - public Result gamedModeInstanceInit(); + public Task gamedModeInstanceInit(); } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinHandler.cs b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinHandler.cs new file mode 100644 index 0000000..7c1e75b --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinHandler.cs @@ -0,0 +1,9 @@ +using ServerCommon; + +namespace GameServer.Contents.GameMode.Manage; + +public interface IGameModeJoinHandler +{ + public Result gamedModeInstanceJoinValidate(); + public Result gamedModeInstanceJoin(Player player); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/IGameModeJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinSuccessHandler.cs similarity index 63% rename from GameServer/Contents/GameMode/Manage/IGameModeJoinSuccessHandler.cs rename to GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinSuccessHandler.cs index b67b2f5..20b321c 100644 --- a/GameServer/Contents/GameMode/Manage/IGameModeJoinSuccessHandler.cs +++ b/GameServer/Contents/GameMode/Manage/JoinManage/IGameModeJoinSuccessHandler.cs @@ -1,5 +1,4 @@ - -namespace GameServer; +namespace GameServer.Contents.GameMode.Manage; public interface IGameModeJoinSuccessHandler { diff --git a/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeDestroyHandlerBase.cs b/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeDestroyHandlerBase.cs new file mode 100644 index 0000000..5e17294 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeDestroyHandlerBase.cs @@ -0,0 +1,76 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Manage.LeaveManage; + +public abstract class GameModeDestroyHandlerBase : IGameModeDestroyHandler +{ + protected readonly GameModeType m_game_mode_type; + protected string m_room_id; + protected IGameMode? m_game_mode; + + public GameModeDestroyHandlerBase(string roomId, GameModeType gameModeType) + { + m_game_mode_type = gameModeType; + m_room_id = roomId; + } + + public abstract Task postDestroy(IGameMode gameMode); + + public async Task gameModeDestroy() + { + var result = new Result(); + if (false == GameModeManager.It.tryGetGameMode(m_room_id, out var gameMode)) + { + var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {m_room_id}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg); + return result; + } + + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!! casting error"); + + using (var releaser = await game_mode_base.getAsyncLock()) + { + var ticker = game_mode_base.getEntityTicker(); + if (ticker is not null) + { + try + { + ticker.cancel(); + ticker = null; + } + catch(Exception e) + { + var err_msg = $"Exception !!!, Failed to cancel ||| : Exception:{e}"; + Log.getLogger().debug(err_msg); + } + } + + //모드별 destroy 처리 + await postDestroy(gameMode); + + if (false == GameModeManager.It.tryRemoveGameMode(m_room_id, out var _)) + { + var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {m_room_id}"; + Log.getLogger().warn(err_msg); + } + + + } + + + return result; + } + + + + + + + + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeLeaveHandlerBase.cs b/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeLeaveHandlerBase.cs new file mode 100644 index 0000000..6324849 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/LeaveManage/GameModeLeaveHandlerBase.cs @@ -0,0 +1,125 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Manage.LeaveManage; + +public abstract class GameModeLeaveHandlerBase : IGameModeLeaveHandler +{ + protected readonly GameModeType m_game_mode_type; + protected Player m_player; + protected string m_room_id; + + public GameModeLeaveHandlerBase(Player player, string roomId, GameModeType gameModeType) + { + m_game_mode_type = gameModeType; + m_player = player; + m_room_id = roomId; + } + + public virtual async Task gameModeLeave() + { + var result = new Result(); + + if (false == GameModeManager.It.tryGetGameMode(m_room_id, out var gameMode)) + { + var err_msg = $"battle_instance_room is null : room_id - {m_room_id}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.BattleInstanceInfoNotExist, err_msg); + return result; + } + + await removeUserFromInstanceRoom(m_player, gameMode); + await leaveGameZone(gameMode); + await removeHost(gameMode); + + + result = await postLeave(gameMode); + if(result.isFail()) return result; + + result = await notifyAfterLeave(gameMode); + if(result.isFail()) return result; + + result = await logAfterLeave(gameMode); + if(result.isFail()) return result; + + + + await destroyCheck(gameMode); + return result; + } + + public async Task removeUserFromInstanceRoom(Player player, IGameMode gameMode) + { + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + await Task.CompletedTask; + + var instance_room = game_mode_base.getInstanceRoom(); + var user_guid = player.getUserGuid(); + + var result = instance_room.getMap().tryRemovePlayer(player); + if (result.isFail()) return; + + await GameModeHelper.leaveGameInstanceRoom(user_guid, m_room_id); + + } + + public async Task removeHost(IGameMode gameMode) + { + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + var host_user_guid = game_mode_base.m_host_migrator.getHostUserGuid(); + if (m_player.getUserGuid().Equals(host_user_guid)) + { + using (var releaser = await game_mode_base.getAsyncLock()) + { + game_mode_base.m_host_migrator.removeHost(); + } + } + } + + public async Task leaveGameZone(IGameMode gameMode) + { + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + await Task.CompletedTask; + var location_attribute = m_player.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(location_attribute, () => $"LocationAttribute is null !!! - player:{m_player.toBasicString()}"); + location_attribute.CurrentIndunLocation.clear(); + + var game_zone_action = m_player.getEntityAction(); + await game_zone_action.tryLeaveGameZone(); + + var instance_room = game_mode_base.getInstanceRoom(); + + if (instance_room.SessionCount + instance_room.getMap().getCurrCountAsAddConnectedUser() > 0) + { + ClientToGame clientToGame = new ClientToGame(); + clientToGame.Message = new ClientToGameMessage(); + clientToGame.Message.LeaveInstanceRoomMember = new ClientToGameMessage.Types.LeaveInstanceRoomMember(); + clientToGame.Message.LeaveInstanceRoomMember.MemberGuid = m_player.getUserGuid(); + + instance_room.Broadcast(clientToGame); + } + } + + public async Task destroyCheck(IGameMode gameMode) + { + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + if (game_mode_base.getInstanceRoom().isDestroy) + { + (var result, var destroy_handler) = GameModeHelper.getGameModeDestroyHandler(game_mode_base.getRoomId()); + if (result.isSuccess() && destroy_handler is not null) + { + await destroy_handler.gameModeDestroy(); + } + } + + await Task.CompletedTask; + } + + public abstract Task postLeave(IGameMode gameMode); + public abstract Task notifyAfterLeave(IGameMode gameMode); + + public abstract Task logAfterLeave(IGameMode gameMode); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeDestroyHandler.cs b/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeDestroyHandler.cs new file mode 100644 index 0000000..438eb96 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeDestroyHandler.cs @@ -0,0 +1,7 @@ +namespace GameServer.Contents.GameMode.Manage.LeaveManage; + +public interface IGameModeDestroyHandler +{ + Task gameModeDestroy(); + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeLeaveHandler.cs b/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeLeaveHandler.cs new file mode 100644 index 0000000..c177820 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/LeaveManage/IGameModeLeaveHandler.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Manage.LeaveManage; + +public interface IGameModeLeaveHandler +{ + Task gameModeLeave(); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/GameModeBase.cs b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeBase.cs new file mode 100644 index 0000000..340db4a --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeBase.cs @@ -0,0 +1,135 @@ +using Amazon.DynamoDBv2.Model; +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.StateManage; +using NeoSmart.AsyncLock; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Manage.PlayManage; + +public abstract class GameModeBase : EntityBase, IGameMode, IWithLogActor +{ + protected bool m_is_init_completed = false; + protected InstanceRoom m_instance_room; + public readonly IHostMigrator m_host_migrator; + protected EntityTicker? m_ticker; + protected Int32 m_ticker_interval_msecs = GameModeConstants.GAME_MODE_DEFAULT_INTERVAL_MSECS; + protected IGameModeState? m_current_game_mode_state; //kihoon todo: 이거 수정해야된다. IGameMode를 받으면 안될듯...아니면 받더래도 + + public GameModeBase(EntityType type, InstanceRoom instanceRoom) : base(type) + { + m_is_init_completed = false; + m_instance_room = instanceRoom; + ArgumentNullReferenceCheckHelper.throwIfNull(instanceRoom, () => $"GameModeBase constructor instanceRoom is null !!!"); + m_host_migrator = HostMigrationFactory.createCommonHostMigrator(1, GameServerApp.getServerLogic()); //kihoon todo : gamemodeID를 넘겨야 한다; + } + + public override async Task onInit() + { + var result = new Result(); + + //action 추가 + addEntityActions(); + + //GameModeBase 쪽 로직 더 넣을것 있으면 여기에 + + result = await base.onInit(); + if (result.isFail()) return result; + + + //init이 다 되면 ticker 만든다. + result = await createTask(); + if (result.isFail()) return result; + + //타이머 생성후 초기해야될 것이 있으면 한다. + await initAfterTimerCreate(); + + m_is_init_completed = true; + + return result; + } + + + public void addEntityActions() + { + + } + + public string getRoomId() + { + return m_instance_room.getMap().m_room_id; + } + + private async Task createTask() + { + var result = new Result(); + + m_ticker = createTaskTicker(); + NullReferenceCheckHelper.throwIfNull(m_ticker, () => $"m_ticker is null !!! - id"); + await m_ticker.onInit(); + + await Task.CompletedTask; + + return result; + } + + public EntityTicker createTaskTicker() //나중에 모드별로 별도 정의 필요하면 그때 virtual로 + { + var ticker = new GameModeLifeCycleTicker(this, m_ticker_interval_msecs, gameModeTaskTick); + return ticker; + } + + private async Task gameModeTaskTick() + { + if (!m_is_init_completed) return; + + try + { + await taskUpdate(); + } + catch(Exception e) + { + Log.getLogger().error($"Exception !!!, new gameModeTaskTick() : exception:{e}, basicString : {toBasicString()}"); + } + } + + public abstract Task taskUpdate(); + public abstract Task initAfterTimerCreate(); + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeBase.... room_id : {getRoomId()}"; + return basic_string; + } + + public bool isLoadCompleted() + { + return m_is_init_completed; + } + + + + public IGameModeState getGameModeState() + { + NullReferenceCheckHelper.throwIfNull(m_current_game_mode_state, () => $"m_current_game_mode_state is null !!"); + return m_current_game_mode_state; + } + + public void setGameModeState(IGameModeState state) + { + m_current_game_mode_state = state; + } + + public InstanceRoom getInstanceRoom() => m_instance_room; + public EntityTicker? getEntityTicker() => m_ticker; + public ILogActor toLogActor() + { + var server_logic = GameServerApp.getServerLogic(); + var region_id = server_logic.getServerConfig().getRegionId(); + var server_name = server_logic.getServerName(); + + var log_info = new BattleInstanceActorLog(region_id, server_name, getRoomId(), m_instance_room.getInstanceId()); + return log_info; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/GameModeLifeCycleTicker.cs b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeLifeCycleTicker.cs new file mode 100644 index 0000000..ed3f45f --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeLifeCycleTicker.cs @@ -0,0 +1,54 @@ +using System.Diagnostics; +using Amazon.Runtime; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + +public class GameModeLifeCycleTicker : EntityTicker +{ + private Func m_task_tick; + public GameModeLifeCycleTicker(EntityBase parent, Int32 onTickIntervalMilliseconds, Func taskTick) + : base(EntityType.GameModeLifeCycleTicker, parent, onTickIntervalMilliseconds, null) + { + m_task_tick = taskTick; + } + public override async Task onTaskTick() + { + var result = new Result(); + var err_msg = string.Empty; + + Stopwatch? stopwatch = null; + var event_tid = string.Empty; + + var server_logic = GameServerApp.getServerLogic(); + var server_config = server_logic.getServerConfig(); + var seasonPassManager = server_logic.getSeasonPassManager(); + + if (true == server_config.PerformanceCheckEnable) + { + event_tid = System.Guid.NewGuid().ToString("N"); + stopwatch = Stopwatch.StartNew(); + } + //logic 처리 + await m_task_tick(); + + if (null != stopwatch) + { + var elapsed_msec = stopwatch.ElapsedMilliseconds; + stopwatch.Stop(); + Log.getLogger().debug($"{GetType()} Ticker Stopwatch Stop : ETID:{event_tid}, ElapsedMSec:{elapsed_msec}, TickIntervalMSec:{getOnTickIntervalMilliseconds()}"); + } + } + + public override string toBasicString() + { + return $"{this.getTypeName()}"; + } + + public override string toSummaryString() + { + return $"{this.getTypeName()}"; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/GameModeManager.cs b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeManager.cs new file mode 100644 index 0000000..01f150f --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/GameModeManager.cs @@ -0,0 +1,71 @@ +using System.Collections.Concurrent; +using System.Diagnostics.CodeAnalysis; +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCore; +using NeoSmart.AsyncLock; +using ServerBase; +using ServerCommon; + +namespace GameServer; + +public class GameModeManager : Singleton +{ + private AsyncLock m_lock = new(); + private ConcurrentDictionary m_game_modes = new(); /**/ + + public async Task onInit() + { + //1. 이벤트 관리하는 Task 추가 + //var result = await createBattleEventCheckerTask(); //kihoon todo : 이부분은 GameModeEventCheckerTask라는 걸로 변경 처리 해준다. 여기서 처리 안해줄수 도 있다. + await Task.CompletedTask; + } + + + public async Task createGameMode(InstanceRoom instanceRoom, GameModeType gameModeType) + { + (var result, var game_mode) = GameModeHelper.createGameMode(instanceRoom, gameModeType); + if (result.isFail()) return result; + if (game_mode is null) + { + var err_msg = $"game_mode is null !!!! gameModeType : {gameModeType}, instanceRoomId : {instanceRoom.getMap().m_room_id}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg); + return result; + } + var room_id = instanceRoom.getMap().m_room_id; + + if (false == tryAdd(room_id, game_mode)) + { + //이미 들어가져 있으므로 로그만 남겨놓고 리턴 + Log.getLogger().warn($"game_mode already exist...... gameModeType : {gameModeType}, instanceRoomId : {instanceRoom.getMap().m_room_id}"); + } + + await Task.CompletedTask; + return result; + } + + public bool tryGetGameMode(string roomId, [MaybeNullWhen(false)] out IGameMode gameMode) + { + var ret = m_game_modes.TryGetValue(roomId, out gameMode); + + if (ret == false) + { + var err_msg = $"gameMode is null : room_id - {roomId}"; + Log.getLogger().error(err_msg); + } + + return ret; + } + + public bool tryRemoveGameMode(string roomId, [MaybeNullWhen(false)] out IGameMode gameMode) + { + return m_game_modes.TryRemove(roomId, out gameMode); + } + + public bool tryAdd(string roomId, IGameMode gameMode) + { + return m_game_modes.TryAdd(roomId, gameMode); + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/IDeadHandler.cs b/GameServer/Contents/GameMode/Manage/PlayManage/IDeadHandler.cs new file mode 100644 index 0000000..88e6d75 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/IDeadHandler.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Manage.PlayManage; + +public interface IDeadHandler +{ + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/IGameMode.cs b/GameServer/Contents/GameMode/Manage/PlayManage/IGameMode.cs new file mode 100644 index 0000000..7d7787f --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/IGameMode.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Manage.PlayManage; + +public interface IGameMode +{ + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/IGameModeGenre.cs b/GameServer/Contents/GameMode/Manage/PlayManage/IGameModeGenre.cs new file mode 100644 index 0000000..c0f1d3f --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/IGameModeGenre.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Manage.PlayManage; + +public interface IGameModeGenre +{ + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/PlayManage/IGameObject.cs b/GameServer/Contents/GameMode/Manage/PlayManage/IGameObject.cs new file mode 100644 index 0000000..49dba80 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/PlayManage/IGameObject.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Manage.PlayManage; + +public interface IGameObject +{ + Task interact(string anchorGuid, DateTime interactionTime); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/StateManage/GameModeStateBase.cs b/GameServer/Contents/GameMode/Manage/StateManage/GameModeStateBase.cs new file mode 100644 index 0000000..83245af --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/StateManage/GameModeStateBase.cs @@ -0,0 +1,42 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCore; + +namespace GameServer.Contents.GameMode.Manage.StateManage; + + + +public abstract class GameModeStateBase : IGameModeState +{ + protected IGameMode m_game_mode; + protected GameModeBase m_game_mode_base; + private GameModeState m_state = GameModeState.None; + protected DateTime m_next_state_change_time; + + + public GameModeStateBase(IGameMode gameMode, GameModeState state) + { + m_game_mode = gameMode; + var game_mode_base = m_game_mode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!"); + m_game_mode_base = game_mode_base; + + + m_next_state_change_time = DateTimeHelper.Current.AddSeconds(10); //kihoon todo: 대기시간은 나중에 meta로 반영해야 된다. + m_state = state; + } + + public abstract void enter(); + public abstract void update(); + public abstract void exit(); + public abstract GameModeState checkState(); + + public GameModeState getStateType() + { + return m_state; + } + + public DateTime getNextStateChangeTime() + { + return m_next_state_change_time; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/StateManage/IGameModeState.cs b/GameServer/Contents/GameMode/Manage/StateManage/IGameModeState.cs new file mode 100644 index 0000000..b14a4e8 --- /dev/null +++ b/GameServer/Contents/GameMode/Manage/StateManage/IGameModeState.cs @@ -0,0 +1,14 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; + +namespace GameServer; + +public interface IGameModeState +{ + public void enter(); + public void exit(); + + + public void update(); + public GameModeState checkState(); + public GameModeState getStateType(); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Cheat/BattleCheat.cs b/GameServer/Contents/GameMode/Mode-Battle/Cheat/BattleCheat.cs deleted file mode 100644 index c5a70cc..0000000 --- a/GameServer/Contents/GameMode/Mode-Battle/Cheat/BattleCheat.cs +++ /dev/null @@ -1,179 +0,0 @@ -using Nettention.Proud; - - -using ServerCore; -using ServerBase; -using ServerCommon; - - - -namespace GameServer; - - - - -[ChatCommandAttribute("battleinstanceinit", typeof(CheatBattleInstanceInit), AuthAdminLevelType.Developer, - AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] -public class CheatBattleInstanceInit : ChatCommandBase -{ - public override async Task invoke(Player player, string token, string[] args) - { - Log.getLogger().info($"battleinstanceinit"); - - var server_logic = GameServerApp.getServerLogic(); - - var room_id = player.getCurrentInstanceRoomId(); - if (room_id.Equals(string.Empty)) - { - Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only use in instance"); - return; - } - - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room is null) - { - Log.getLogger().error($"cheat:battleinstanceinit.... battle_instance_room is null room_id : {room_id}"); - return; - } - - using (var releaser = await battle_instance_room.getAsyncLock()) - { - var attribute = battle_instance_room.getEntityAttribute(); - NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); - - if (false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) && - false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.Destroyed)) - { - Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only RoundEndAll room_id : {room_id}"); - return; - } - - var now = DateTimeHelper.Current; - battle_instance_room.setEventStartTime(now); - - attribute.m_combat_pod_mode.m_round_state_type = BattleRoundStateType.Rounding; - attribute.m_combat_pod_mode.m_current_state_start_time = now; - attribute.m_combat_pod_mode.m_current_round = 1; - attribute.m_combat_pod_mode.m_charged_step = 0; - attribute.m_combat_pod_mode.m_rewarded_step = 0; - - attribute.m_combat_pod_mode.m_pod_combat.setActive(now); - - - (Result result, var anchor_guid) = - BattleRoomHelper.getRandomCombatPodAnchorGuid(attribute, battle_instance_room); - if (result.isFail()) - { - Log.getLogger().error("get Random pod combat anchor guid faile !!! "); - return; - } - - attribute.m_combat_pod_mode.m_pod_combat.m_source_storage_anchor_guid = anchor_guid; - - BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(battle_instance_room); - - var update_action = battle_instance_room.getEntityAction(); - NullReferenceCheckHelper.throwIfNull(update_action, () => $"attribute is null !!!"); - update_action.battleObjectStateInitAndNotify(battle_instance_room, attribute); - - BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(battle_instance_room); - } - } -} - -[ChatCommandAttribute("gamemodeoccupyhost", typeof(BattleHostOccupy), AuthAdminLevelType.Developer, - AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] -public class BattleHostOccupy : ChatCommandBase -{ - public override async Task invoke(Player player, string token, string[] args) - { - //Log.getLogger().info($"battleinstanceinit"); - - var server_logic = GameServerApp.getServerLogic(); - - var room_id = player.getCurrentInstanceRoomId(); - if (room_id.Equals(string.Empty)) - { - Log.getLogger().error($"cheat:gamemodeoccupyhost.... this cheat only use in instance"); - return; - } - - - //kihoon todo : 임시 분기 처리 - //나중에 게임모드로 분리되면 그때 재작업 - if (room_id.Contains("battle")) - { - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room is null) - { - Log.getLogger().error($"cheat:gamemodeoccupyhost.... battle_instance_room is null room_id : {room_id}"); - return; - } - - using (var releaser = await battle_instance_room.getAsyncLock()) - { - battle_instance_room.m_host_migrator.modifyHost(player.getUserGuid()); - } - - BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battle_instance_room.m_instance_room, - player.getUserGuid()); - } - else if (room_id.Contains("1017101")) - { - var instance_room = InstanceRoomManager.Instance.getInstanceRoomByRoomId(room_id); - if (instance_room is null) - { - Log.getLogger().error($"cheat:gamemodeoccupyhost.... instance_room is null room_id : {room_id}"); - return; - } - - BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(instance_room, player.getUserGuid()); - } - } -} - -//====================================================================================================================== -// -//====================================================================================================================== -[ChatCommandAttribute("gamehostmigration", typeof(BattleHostMigration), AuthAdminLevelType.Developer, - AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] -public class BattleHostMigration : ChatCommandBase -{ - public override async Task invoke(Player player, string token, string[] args) - { - Log.getLogger().info($"gamehostmigration"); - - var server_logic = GameServerApp.getServerLogic(); - - var room_id = player.getCurrentInstanceRoomId(); - if (room_id.Equals(string.Empty)) - { - Log.getLogger().error($"cheat:gamehostmigration.... this cheat only use in instance"); - return; - } - - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room is null) - { - Log.getLogger().error($"cheat:gamehostmigration.... battle_instance_room is null room_id : {room_id}"); - return; - } - - using var releaser = await battle_instance_room.getAsyncLock(); - if (battle_instance_room.m_host_migrator is CommonHostMigrator common_hot_migrator) - { - common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(true); - common_hot_migrator.migrateCheck(true); - var super_peer_guid_id = common_hot_migrator.getHostUserGuid(); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE( - battle_instance_room.m_instance_room, super_peer_guid_id); - common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(false); - } - else - { - Log.getLogger() - .error( - $"cheat:gamehostmigration.... battle_instance_room is not CommonHostMigrator room_id : {room_id}"); - } - } -} diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceInitHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceInitHandler.cs deleted file mode 100644 index 937132b..0000000 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceInitHandler.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - - -public class BattleInstanceInitHandler : GameModeInitHandlerBase -{ - public BattleInstanceInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.BattleRoom) - { - } - - public override Result gamedModeInstanceInitValidate() - { - var result = BattleRoomHelper.checkBattleActive(m_place_type); - return result; - } - - public override Result gamedModeInstanceInit() - { - var result = BattleInstanceManager.It.battleInstanceInit(m_instance_room, m_instance_room.getMap().m_room_id).Result; //kihoon todo :이거 리팩토링 대상 - if (result.isFail()) - { - Log.getLogger().error(result.toBasicString()); - } - - return result; - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinHandler.cs deleted file mode 100644 index 57328ef..0000000 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinHandler.cs +++ /dev/null @@ -1,47 +0,0 @@ - -using ServerCore; -using ServerBase; -using ServerCommon; - - -namespace GameServer; - - -public class BattleInstanceJoinHandler : GameModeJoinHandlerBase -{ - public BattleInstanceJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.BattleRoom) - { - - } - - public override Result gamedModeInstanceJoinValidate(EPlaceType placeType) - { - var result = BattleRoomHelper.checkBattleActive(m_place_type); - return result; - } - - public override Result gamedModeInstanceJoin(Player player) - { - var result = new Result(); - string err_msg = string.Empty; - - //instanceroom 정보는 남아있는데 battleinstance만 없어지는 케이스가 있어서 예외 처리를 위해 넣어놓음 - var room_id = m_instance_room.getMap().m_room_id; - - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); //리팩토링 대상 - if (battle_instance_room is null) - { - Log.getLogger().error($"Battle Room Instance is null.. so init start roomId : {room_id}"); - - result = Task.Run(() => BattleInstanceManager.It.battleInstanceInit(m_instance_room, room_id)).GetAwaiter().GetResult(); - if (result.isFail()) - { - err_msg = $"BattleIntanceJoin init error, _roomId : {room_id}"; - Log.getLogger().error(err_msg); - return result; - } - } - - return result; - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceManager.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceManager.cs index 0c0f8da..9819849 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceManager.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceManager.cs @@ -1,18 +1,18 @@ using System.Collections.Concurrent; using System.Diagnostics.CodeAnalysis; - +using GameServer.Contents.Battle.Tickers; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Google.Protobuf.WellKnownTypes; using NeoSmart.AsyncLock; using Newtonsoft.Json; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; + using ServerCore; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; +using Constant = System.Reflection.Metadata.Constant; namespace GameServer; @@ -20,191 +20,19 @@ namespace GameServer; public class BattleInstanceManager : Singleton { private AsyncLock m_lock_init = new(); - public AsyncLock m_lock_data_load = new(); - - private ConcurrentDictionary m_battle_instances = new(); //인스턴스 생성 삭제를 주로 관리 하기 위한 Dictionary ... 아...이거 구조 별론데,.... + //private ConcurrentDictionary m_battle_instances = new(); //인스턴스 생성 삭제를 주로 관리 하기 위한 Dictionary ... 아...이거 구조 별론데,.... private ConcurrentDictionary m_battle_events = new(); - + public async Task onInit() { //1. 이벤트 관리하는 Task 추가 var result = await createBattleEventCheckerTask(); - } - - public bool hasBattleInstance(string roomId) - { - return m_battle_instances.ContainsKey(roomId); - } - - public BattleInstanceRoom? getBattleInstanceRoom(string roomId) - { - if (false == m_battle_instances.TryGetValue(roomId, out var room)) - { - return null; - } - - return room; - - } - - public ConcurrentDictionary getBattleInstanceRooms() - { - return m_battle_instances; - } - - // - // public bool isLoadComplete(string roomId) - // { - // if (false == m_battle_instances.TryGetValue(roomId, out var battleInstanceRoom)) - // { - // return false; - // } - // return battleInstanceRoom.m_is_load_complete; - // } - - public async Task battleInstanceInit(InstanceRoom instanceRoom, string roomId) - { - var result = new Result(); - var err_msg = string.Empty; - - using (await m_lock_init.LockAsync()) - { - //1. 배틀 인스턴스에 대한 정보 생성 - Log.getLogger().info($"Battle Instance Create And Init : {roomId}"); - if (hasBattleInstance(roomId)) return result; - - // instance 정보 추가 등록 - var server_logic = GameServerApp.getServerLogic(); - var instance_room_storage = new InstanceRoomStorage(); - instance_room_storage.Init(server_logic.getRedisDb(), ""); - - DateTime start_time = DateTimeHelper.Current; - Int32 config_id = 1; - Int32 reward_id = 1; - Int32 hot_time = 1; - Int32 round_count = 8; - var system_battle_event = BattleRoomHelper.getBattleRoomStartTimeByEventId(roomId); - if (system_battle_event is null) - { - Log.getLogger().error($"system_battle_event is null!!! : {result.toBasicString()} - instanceRoomId:{roomId}"); - } - else - { - start_time = system_battle_event.m_start_time; - config_id = system_battle_event.m_ffa_config_data_id; - reward_id = system_battle_event.m_ffa_reward_group_id; - hot_time = system_battle_event.m_ffa_hot_time; - round_count = system_battle_event.m_round_count; - } - - - result = await instance_room_storage.setInstanceRoomExtraInfo(roomId, EPlaceType.BattleRoom, start_time); - if (result.isFail()) - { - Log.getLogger().error($"Failed to BattleRoom setInstanceRoomExtraInfo() !!! : {result.toBasicString()} - instanceRoomId:{roomId}"); - return result; - } - - BattleInstanceRoom battle_instance_room = new BattleInstanceRoom(instanceRoom, start_time, config_id, reward_id, hot_time, round_count); - if (false == m_battle_instances.TryAdd(roomId, battle_instance_room)) - { - //이미 존재하는 경우는 onInit 절차를 거쳤다고 생각하고, init 처리 안해주고 리턴 - err_msg = $"Battle Instance Room Already exist room_id : {roomId}"; - result.setFail(ServerErrorCode.BattleInstanceInfoAlreadyExist, err_msg); - Log.getLogger().warn(result.toBasicString()); - - return result; - } - - //2. 초기화 - result = await battle_instance_room.init(); - if (result.isFail()) - { - Log.getLogger().warn(result.toBasicString()); - return result; - } - } - Log.getLogger().info($"battleInstanceInit done roomId : {roomId}"); - - return result; - } - - public Result addOrUpatePlayer(string roomId, Player player) - { - var result = new Result(); - string err_msg = string.Empty; - - if (false == m_battle_instances.TryGetValue(roomId, out var battle_instance_room)) - { - err_msg = $"m_battle_instances not exist battleRoomInstance, roomId : {roomId}"; - result.setFail(ServerErrorCode.BattleInstanceInfoNotExist, err_msg); - Log.getLogger().error(result.toBasicString()); - return result; - } - - //유저 정보 추가 해줘야 한다. - result = battle_instance_room.AddOrUpdatePlayer(player); - - return result; - } - - private async Task createBattleEventCheckerTask() - { - - var result = new Result(); - - var battle_entity_ticker_initializers = new Initializers(); - - //채널 인던 다 필요한가? - //이벤트 인스턴스 관련 생성 삭제에 대한 관리 Ticker - - //battle_entity_ticker_initializers.appendInitializer(new BattleEventCheckTicker(1000, null)); - //battle_entity_ticker_initializers.appendInitializer(new BattleEventNotifyTicker(ServerCommon.Constant.EVENT_UPDATE_INTERVAL_MMIN, null)); - - result = await battle_entity_ticker_initializers.init("BattleEntityTickers"); - if (result.isFail()) - { - Log.getLogger().error($"Failed to init() !!! : {result.toBasicString()}"); - return result; - } - - var battle_event_check_ticker = new BattleEventCheckTicker(BattleConstant.BATTLE_EVENT_CHECK_INTERVAL, null); - await battle_event_check_ticker.onInit(); - await createTask(battle_event_check_ticker); - var battle_event_notify_ticker = new BattleEventNotifyTicker(ServerCommon.Constant.EVENT_UPDATE_INTERVAL_MMIN, null); - await battle_event_check_ticker.onInit(); - await createTask(battle_event_notify_ticker); - - return result; - } - - private async Task createTask(EntityTicker ticker) - { - var result = new Result(); - - await Task.CompletedTask; - try - { - - new PeriodicTaskTimer( ticker.getTypeName() , ticker.getOnTickIntervalMilliseconds(), ticker.getCancelToken(), ticker.onTaskTick); - Log.getLogger().debug("createTask done"); - } - catch(Exception e) - { - var err_msg = $"Exception !!!, new PeriodicTaskTimer() : exception:{e}"; - result.setFail(ServerErrorCode.TryCatchException, err_msg); - return result; - } - - return result; } public async Task tryLeaveBattelInstance(Player player, string instanceRoomId) { - if (false == BattleRoomHelper.checkBattleActive()) return; - Log.getLogger().debug($"tryLeaveBattelInstance start instanceRoomId : {instanceRoomId}"); var location_attribute = player.getEntityAttribute(); @@ -214,87 +42,74 @@ public class BattleInstanceManager : Singleton if (instanceRoomId == string.Empty) { Log.getLogger().warn($"tryLeaveBattelInstance IntanceRoomId is Empty"); - removeBattlePlayer(player.getUserGuid()); return; } - if (false == m_battle_instances.TryGetValue(instanceRoomId, out var battleInstanceRoom)) + + if (false == GameModeManager.It.tryGetGameMode(instanceRoomId, out var gameMode)) { - removeBattlePlayer(player.getUserGuid()); return; } + + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!! - {player.toBasicString()}"); + + await ffa.removePodCombat(player); - await battleInstanceRoom.removePodCombat(player); - - var host_user_guid = battleInstanceRoom.m_host_migrator.getHostUserGuid(); + var host_user_guid = ffa.m_host_migrator.getHostUserGuid(); if (player.getUserGuid().Equals(host_user_guid)) { - using (var releaser = await battleInstanceRoom.getAsyncLock()) + using (var releaser = await ffa.getAsyncLock()) { - battleInstanceRoom.m_host_migrator.removeHost(); + ffa.m_host_migrator.removeHost(); } } //여기서 instanceroom 이 is Destroy 면 DestroyBattleRoom 호출 해줄것 - if (battleInstanceRoom.m_instance_room.isDestroy) + if (ffa.getInstanceRoom().isDestroy) { - m_battle_instances.TryRemove(instanceRoomId, out var _); - await battleInstanceRoom.destroyBattleRoom(); + //kihoon todo : 이부분 수정 필요 + //m_battle_instances.TryRemove(instanceRoomId, out var _); + //await battleInstanceRoom.destroyBattleRoom(); Log.getLogger().debug($"tryLeaveBattelInstance destroy battle room instanceRoomId : {instanceRoomId}"); } } - public async Task tryDestroyBattleRoom(string instanceRoomId) - { - if (false == BattleRoomHelper.checkBattleActive()) return; - - if (false == instanceRoomId.Contains(BattleConstant.PREFIX_BATTLE_INSTANCE_ROOM_ID)) return; - - if (false == m_battle_instances.TryGetValue(instanceRoomId, out var battleInstanceRoom)) - { - Log.getLogger().error($"instanceRoomId : {instanceRoomId} is not exist instnaces"); - return; - } - - var is_destroy = battleInstanceRoom.m_instance_room.isDestroy; - if (is_destroy) - { - await battleInstanceRoom.destroyBattleRoom(); - m_battle_instances.TryRemove(instanceRoomId, out _); - } - } + // public async Task tryDestroyBattleRoom(string instanceRoomId) + // { + // await Task.CompletedTask; + // if (false == instanceRoomId.Contains(BattleConstant.PREFIX_BATTLE_INSTANCE_ROOM_ID)) return; + // + // // if (false == m_battle_instances.TryGetValue(instanceRoomId, out var battleInstanceRoom)) + // // { + // // Log.getLogger().error($"instanceRoomId : {instanceRoomId} is not exist instnaces"); + // // return; + // // } + // + // // var is_destroy = battleInstanceRoom.m_instance_room.isDestroy; + // // if (is_destroy) + // // { + // // await battleInstanceRoom.destroyBattleRoom(); + // // //m_battle_instances.TryRemove(instanceRoomId, out _); + // // } + // } - private void removeBattlePlayer(string userGuid) - { - foreach (var battle_instance_room in m_battle_instances.Values) - { - battle_instance_room.removeBattlePlayerIfExist(userGuid); - } - } + public async Task LeaveBattleRoom(Player player, string instanceRoomId, bool disconnected = false) { - - if (false == m_battle_instances.TryGetValue(instanceRoomId, out var battleRoom)) - { - Log.getLogger().info($"LeaveBattleRoom m_battle_instances.TryGetValue false instanceRoomId : {instanceRoomId}"); - return false; - } - - await battleRoom.LeaveBattleRoom(player, instanceRoomId, disconnected); + (var result, var leeave_handler) = GameModeHelper.getGameModeLeaveHandler(player, instanceRoomId); + if (result.isFail() || leeave_handler is null) return false; - // if (battleRoom.m_instance_room.isDestroy) - // { - // InstanceRoomManager.Instance.DestroyRoom(instanceRoomId); - // } + await leeave_handler.gameModeLeave(); Log.getLogger().debug($"leave battle room player : {player.toBasicString()}, instanceRoomId : {instanceRoomId}"); return true; } - public async Task sendNtfAboutBattleInstance(BattleInstanceRoom battieInstanceRoom, Player player) + public async Task sendNtfAboutBattleInstance(GameModeTPSFreeForAll battieInstanceRoom, Player player) { var result = new Result(); @@ -313,7 +128,7 @@ public class BattleInstanceManager : Singleton } - private void sendNtfBattleObjectsState(BattleInstanceRoom battleInstanceRoom, Player player) + private void sendNtfBattleObjectsState(GameModeTPSFreeForAll battleInstanceRoom, Player player) { List infos = new(); var attribute = battleInstanceRoom.getEntityAttribute(); @@ -496,6 +311,55 @@ public class BattleInstanceManager : Singleton return true; } + + private async Task createBattleEventCheckerTask() + { + + var result = new Result(); - public BattleInstanceManager Self => this; + var battle_entity_ticker_initializers = new Initializers(); + + //채널 인던 다 필요한가? + //이벤트 인스턴스 관련 생성 삭제에 대한 관리 Ticker + + //battle_entity_ticker_initializers.appendInitializer(new BattleEventCheckTicker(1000, null)); + //battle_entity_ticker_initializers.appendInitializer(new BattleEventNotifyTicker(Constant.EVENT_UPDATE_INTERVAL_MMIN, null)); + + result = await battle_entity_ticker_initializers.init("BattleEntityTickers"); + if (result.isFail()) + { + Log.getLogger().error($"Failed to init() !!! : {result.toBasicString()}"); + return result; + } + + var battle_event_check_ticker = new BattleEventCheckTicker(BattleConstant.BATTLE_EVENT_CHECK_INTERVAL, null); + await battle_event_check_ticker.onInit(); + await createTask(battle_event_check_ticker); + var battle_event_notify_ticker = new BattleEventNotifyTicker(ServerCommon.Constant.EVENT_UPDATE_INTERVAL_MMIN, null); + await battle_event_check_ticker.onInit(); + await createTask(battle_event_notify_ticker); + + return result; + } + + private async Task createTask(EntityTicker ticker) + { + var result = new Result(); + + await Task.CompletedTask; + try + { + + new PeriodicTaskTimer( ticker.getTypeName() , ticker.getOnTickIntervalMilliseconds(), ticker.getCancelToken(), ticker.onTaskTick); + Log.getLogger().debug("createTask done"); + } + catch(Exception e) + { + var err_msg = $"Exception !!!, new PeriodicTaskTimer() : exception:{e}"; + result.setFail(ServerErrorCode.TryCatchException, err_msg); + return result; + } + + return result; + } } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoom.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoom.cs index ae50a61..b986bf1 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoom.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoom.cs @@ -17,13 +17,13 @@ public partial class InstanceRoom { public async Task battleInstanceInit() { - var result = await BattleInstanceManager.It.battleInstanceInit(this, _roomId); - if (result.isFail()) - { - Log.getLogger().error(result.toBasicString()); - return false; - } - + // var result = await BattleInstanceManager.It.battleInstanceInit(this, _roomId); + // if (result.isFail()) + // { + // Log.getLogger().error(result.toBasicString()); + // return false; + // } + await Task.CompletedTask; return true; } @@ -60,47 +60,5 @@ public partial class InstanceRoom return users; } - - public async Task LeaveBattleInstanceRoom(Player player, bool disconnected) - { - var user_guid = player.getUserGuid(); - - Log.getLogger().info($"BattleInstanceRoom.Leave() Start !!! - userGuid:{user_guid}, instanceRoomId:{_roomId}, sessionCount:{SessionCount}, addConnectedUser:{getMap().getCurrCountAsAddConnectedUser()}"); - - if (m_players.TryRemove(player.getUserGuid(), out _)) - { - await BattleInstanceRoomHandler.leaveBattleInstanceRoom(user_guid, _roomId); - } - - var location_attribute = player.getEntityAttribute(); - NullReferenceCheckHelper.throwIfNull(location_attribute, () => $"LocationAttribute is null !!! - player:{player.toBasicString()}"); - location_attribute.CurrentIndunLocation.clear(); - - var game_zone_action = player.getEntityAction(); - await game_zone_action.tryLeaveGameZone(); - - if (SessionCount + getMap().getCurrCountAsAddConnectedUser() == 0) - { - if (!_isPartyInstance || _concertEnd) - { - await destroyRoom(); - } - } - else - { - { - ClientToGame clientToGame = new ClientToGame(); - clientToGame.Message = new ClientToGameMessage(); - clientToGame.Message.LeaveInstanceRoomMember = new ClientToGameMessage.Types.LeaveInstanceRoomMember(); - clientToGame.Message.LeaveInstanceRoomMember.MemberGuid = player.getUserGuid(); - - Broadcast(clientToGame); - } - } - - - - Log.getLogger().info($"InstanceRoom.Leave() Finish !!! - userGuid:{user_guid}, instanceRoomId:{_roomId}, sessionCount:{SessionCount}, addConnectedUser:{getMap().getCurrCountAsAddConnectedUser()}"); - } } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoomHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoomHandler.cs index 68904bd..45764b2 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoomHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceRoomHandler.cs @@ -373,33 +373,7 @@ public class BattleInstanceRoomHandler } - public static async Task leaveBattleInstanceRoom(string userGuid, string instanceRoomId) - { - var result = new Result(); - var err_msg = string.Empty; - - var server_logic = GameServerApp.getServerLogic(); - - var instance_room_storage = new InstanceRoomStorage(); - instance_room_storage.Init(server_logic.getRedisDb(), ""); - - await instance_room_storage.leaveInstanceRoom(userGuid, instanceRoomId); - - var instance_room_id_base = getInstanceRoomIdBaseFromInstanceRoomId(instanceRoomId); - await instance_room_storage.decreaseInstanceRoomScore(instance_room_id_base, instanceRoomId); - - return result; - } - public static string getInstanceRoomIdBaseFromInstanceRoomId(string instanceRoomId) - { - var instance_room_Id_element = instanceRoomId.Split(":"); - - if (instance_room_Id_element.Length >= 2) - { - return $"{instance_room_Id_element[0]}:{instance_room_Id_element[1]}"; - } - Log.getLogger().error($"Instance room id weired : {instanceRoomId}"); - return string.Empty; - } + + } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/GameModeTPS.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/GameModeTPS.cs new file mode 100644 index 0000000..f9a33da --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/GameModeTPS.cs @@ -0,0 +1,27 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class GameModeTPS: GameModeBase, IGameModeGenre +{ + public GameModeTPS(EntityType type, InstanceRoom instanceRoom) : base(type, instanceRoom) + { + } + + + public override Task taskUpdate() + { + return Task.CompletedTask; + } + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeTPS...."; + return basic_string; + } + + public override Task initAfterTimerCreate() + { + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/IBattleMode.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/IBattleMode.cs new file mode 100644 index 0000000..f7dd4ea --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/IBattleMode.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public interface IBattleMode +{ + public Task init(); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/ITPSMode.cs b/GameServer/Contents/GameMode/Mode-Battle/Manage/ITPSMode.cs new file mode 100644 index 0000000..61897f8 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/Manage/ITPSMode.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public interface ITPSMode +{ + Task initTPSMode(); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceAction.cs similarity index 68% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceAction.cs index 75cca8a..f5133e9 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceAction.cs @@ -1,14 +1,11 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using System.Net; +using GameServer.Contents.Battle.Log; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - +using ServerCore; namespace GameServer; @@ -30,13 +27,13 @@ public class BattleInstanceAction : EntityActionBase { var result = new Result(); - var battle_instance_room = getOwner() as BattleInstanceRoom; - NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room_owner is null !!!"); + var game_mode_base = getOwner() as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); var server_logic = GameServerApp.getServerLogic(); var dynamodb_client = server_logic.getDynamoDbClient(); - string room_id = battle_instance_room.m_instance_room.getMap().m_room_id; + string room_id = game_mode_base.getRoomId(); var config = dynamodb_client.makeQueryConfigForReadByPKSK(BattleInstanceSnapshotDoc.pk, room_id); (result, var read_docs) = await dynamodb_client.simpleQueryDocTypesWithQueryOperationConfig(config); @@ -47,18 +44,18 @@ public class BattleInstanceAction : EntityActionBase var event_id = BattleRoomHelper.getBattleEventIdFromRoomId(room_id); BattleInstanceSnapshotDoc doc = new(room_id); - string snapshot_load_type = "LOAD"; + //string snapshot_load_type = "LOAD"; if (read_docs.Count == 0 || event_id == 0) { //데이터가 없으므로 생성 처리 result = await createBattleInstanceSnapshot(room_id); if (result.isFail()) return result; - snapshot_load_type = "CREATE"; + // snapshot_load_type = "CREATE"; } else if (read_docs.Count > 0) { doc = read_docs[0]; - var battle_instance_action = battle_instance_room.getEntityAction(); + var battle_instance_action = game_mode_base.getEntityAction(); NullReferenceCheckHelper.throwIfNull(battle_instance_action, () => $"battle_instance_action is null !!!"); result = battle_instance_action.setSnapshotFromDoc(doc); } @@ -66,18 +63,19 @@ public class BattleInstanceAction : EntityActionBase if (result.isFail()) return result; - Log.getLogger().debug($"loadOrCreateSnapshot room_id : {battle_instance_room.toBasicString()}"); + Log.getLogger().debug($"loadOrCreateSnapshot room_id : {game_mode_base.toBasicString()}"); - var attribute = battle_instance_room.getEntityAttribute(); + var attribute = game_mode_base.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); - var invokers = new List(); - var log_action = new LogActionEx(LogActionType.BattleInstanceSnapshotCreate); - BattleSnapShotBusinessLog business_log = new(battle_instance_room, snapshot_load_type); - invokers.Add(business_log); - BusinessLogger.collectLogs(log_action, battle_instance_room, invokers); + //kihoon todo : 이거 Base쪽으로 올려야 된다. + //var invokers = new List(); + //var log_action = new LogAction(LogActionType.BattleInstanceSnapshotCreate); + //BattleSnapShotBusinessLog business_log = new(battle_instance_room, snapshot_load_type); + //invokers.Add(business_log); + //BusinessLogger.collectLogs(log_action, battle_instance_room, invokers); return result; } @@ -90,53 +88,57 @@ public class BattleInstanceAction : EntityActionBase BattleInstanceSnapshotDoc doc = new(roomId); - var battle_instance_room = getOwner() as BattleInstanceRoom; - NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); + var game_mode_base = getOwner() as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"battle_instance_room is null !!!"); + var game_mode_ffa = getOwner() as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(game_mode_ffa, () => $"battle_instance_room is null !!!"); + var server_logic = GameServerApp.getServerLogic(); var fn_create_battle_instance_snapshot = async delegate() { - var battle_instance_snaptshot_attribute = battle_instance_room.getEntityAttribute(); + var battle_instance_snaptshot_attribute = game_mode_base.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(battle_instance_snaptshot_attribute, () => $"battle_instance_snaptshot_attribute is null !!!"); battle_instance_snaptshot_attribute.m_room_id = roomId; - battle_instance_snaptshot_attribute.m_combat_pod_mode.m_current_state_start_time = battle_instance_room.m_battle_instance_event_start_time; + battle_instance_snaptshot_attribute.m_combat_pod_mode.m_current_state_start_time = game_mode_ffa.m_battle_instance_event_start_time; - addRespawnPosInfoFromMeta(battle_instance_room, battle_instance_snaptshot_attribute); - addStorageInfoFromMeta(battle_instance_room, battle_instance_snaptshot_attribute); - addPickupPodInfoFromMeta(battle_instance_room, battle_instance_snaptshot_attribute); + //kihoon 이거다 수정해야된다. + addRespawnPosInfoFromMeta(game_mode_ffa, battle_instance_snaptshot_attribute); + addStorageInfoFromMeta(game_mode_ffa, battle_instance_snaptshot_attribute); + addPickupPodInfoFromMeta(game_mode_ffa, battle_instance_snaptshot_attribute); - var anchors = battle_instance_room.m_instance_room.getMap().getAnchors(); + var anchors = game_mode_base.getInstanceRoom().getMap().getAnchors(); foreach (var anchor in anchors) { addBattleObjectWeapon(battle_instance_snaptshot_attribute, anchor.Value); addBattleObjectBuff(battle_instance_snaptshot_attribute, anchor.Value); } - var result = await createBattleObjectCombatPod(battle_instance_room, battle_instance_snaptshot_attribute); + var result = await createBattleObjectCombatPod(game_mode_ffa, battle_instance_snaptshot_attribute); if (result.isFail()) return result; - result = await createBattleObjectPickupPodReward(battle_instance_room, battle_instance_snaptshot_attribute); + result = await createBattleObjectPickupPodReward(game_mode_ffa, battle_instance_snaptshot_attribute); if (result.isFail()) return result; battle_instance_snaptshot_attribute.modifiedEntityAttribute(true); - var batch = new QueryBatchEx(battle_instance_room, LogActionType.BattleInstanceSnapshotCreate, server_logic.getDynamoDbClient()); + //kihoon todo : 이거 수정해야된다. + var batch = new QueryBatchEx(game_mode_base, LogActionType.BattleInstanceSnapshotCreate, server_logic.getDynamoDbClient()); { - batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); + batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); } - result = await QueryHelper.sendQueryAndBusinessLog(batch); return result; }; - result = await battle_instance_room.runTransactionRunnerSafelyWithTransGuid(battle_instance_room.m_instance_room.getMap().m_room_id, + result = await game_mode_base.runTransactionRunnerSafelyWithTransGuid(game_mode_base.getRoomId(), TransactionIdType.PrivateContents, BattleConstant.BATTLE_INSTANCE_TRANSACTION_NAME, fn_create_battle_instance_snapshot); if (result.isFail()) { - var err_msg = $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - CreateBattleInstanceSnapshot, {battle_instance_room.toBasicString()}"; + var err_msg = $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - CreateBattleInstanceSnapshot, {game_mode_base.toBasicString()}"; Log.getLogger().error(err_msg); return result; } @@ -152,7 +154,7 @@ public class BattleInstanceAction : EntityActionBase var battle_instance_snapshot_attrib = doc.getAttrib(); NullReferenceCheckHelper.throwIfNull(battle_instance_snapshot_attrib, () => $"battle_instance_snapshot_attrib is null !!!"); - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeBase; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); var attribute = battle_instance_room.getEntityAttribute(); @@ -164,25 +166,25 @@ public class BattleInstanceAction : EntityActionBase return result; } - private void deleteChangedGuidAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) - { - deleteChangedBattleObjectPodStorageAnchor(battleInstanceRoom, attribute, attrib); - deleteChangedBattleObjectPickupPodAnchor(battleInstanceRoom, attribute, attrib); - deleteChangedRespawnAnchor(battleInstanceRoom, attribute, attrib); - deleteChangedBattleObjectWeaponAnchor(battleInstanceRoom, attribute, attrib); - deleteChangedBattleObjectBuffAnchor(battleInstanceRoom, attribute, attrib); - - //pod combat은 timer에서 처리해준다. - } + // private void deleteChangedGuidAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + // { + // deleteChangedBattleObjectPodStorageAnchor(battleInstanceRoom, attribute, attrib); + // deleteChangedBattleObjectPickupPodAnchor(battleInstanceRoom, attribute, attrib); + // deleteChangedRespawnAnchor(battleInstanceRoom, attribute, attrib); + // deleteChangedBattleObjectWeaponAnchor(battleInstanceRoom, attribute, attrib); + // deleteChangedBattleObjectBuffAnchor(battleInstanceRoom, attribute, attrib); + // + // //pod combat은 timer에서 처리해준다. + // } - private void setNewGuidAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private void setNewGuidAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { addRespawnPosInfoFromMeta(battleInstanceRoom, attribute); addStorageInfoFromMeta(battleInstanceRoom, attribute); addPickupPodInfoFromMeta(battleInstanceRoom, attribute); - var anchors = battleInstanceRoom.m_instance_room.getMap().getAnchors(); + var anchors = battleInstanceRoom.getInstanceRoom().getMap().getAnchors(); foreach (var anchor in anchors) { addBattleObjectWeapon(attribute, anchor.Value); @@ -193,15 +195,15 @@ public class BattleInstanceAction : EntityActionBase } - private void deleteChangedBattleObjectPodStorageAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + private void deleteChangedBattleObjectPodStorageAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) { List delete_keys = new(); foreach (var stand in attrib.m_combat_pod_attrib.m_pod_storages) { //기존에 들고 있던 guid 가 map에서 없어지거나 바뀌었을 경우가 있을수 있으므로 예외 처리 - if (false == battleInstanceRoom.m_instance_room.getMap().getAnchors().ContainsKey(stand.Key)) + if (false == battleInstanceRoom.getInstanceRoom().getMap().getAnchors().ContainsKey(stand.Key)) { - Log.getLogger().warn($"stand : {stand.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().warn($"stand : {stand.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.getRoomId()}"); delete_keys.Add(stand.Key); continue; } @@ -214,15 +216,15 @@ public class BattleInstanceAction : EntityActionBase } } - private void deleteChangedBattleObjectPickupPodAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + private void deleteChangedBattleObjectPickupPodAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) { List delete_keys = new(); foreach (var box in attrib.m_combat_pod_attrib.m_pickup_pods) { //기존에 들고 있던 guid 가 map에서 없어지거나 바뀌었을 경우가 있을수 있으므로 예외 처리 - if (false == battleInstanceRoom.m_instance_room.getMap().getAnchors().ContainsKey(box.Key)) + if (false == battleInstanceRoom.getInstanceRoom().getMap().getAnchors().ContainsKey(box.Key)) { - Log.getLogger().info($"box : {box.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().info($"box : {box.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.getRoomId()}"); delete_keys.Add(box.Key); continue; } @@ -235,7 +237,7 @@ public class BattleInstanceAction : EntityActionBase } } - private void deleteChangedRespawnAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + private void deleteChangedRespawnAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) { List delete_keys = new(); foreach (var each in attrib.m_combat_pod_attrib.m_respawns) @@ -243,7 +245,7 @@ public class BattleInstanceAction : EntityActionBase //map에 respawn pos가 없어지거나 바뀌었을 경우가 있을수 있으므로 예외 처리 if (false == battleInstanceRoom.m_respawn_pos_anchors_meta.Contains(each.Key)) { - Log.getLogger().warn($"spawn idx : {each.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().warn($"spawn idx : {each.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.getRoomId()}"); delete_keys.Add(each.Key); continue; } @@ -255,15 +257,15 @@ public class BattleInstanceAction : EntityActionBase } } - private void deleteChangedBattleObjectWeaponAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + private void deleteChangedBattleObjectWeaponAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) { List delete_keys = new(); foreach (var weapon in attrib.m_combat_pod_attrib.m_weapons) { //기존에 들고 있던 guid 가 map에서 없어지거나 바뀌었을 경우가 있을수 있으므로 예외 처리 - if (false == battleInstanceRoom.m_instance_room.getMap().getAnchors().ContainsKey(weapon.Key)) + if (false == battleInstanceRoom.getInstanceRoom().getMap().getAnchors().ContainsKey(weapon.Key)) { - Log.getLogger().warn($"weapon : {weapon.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().warn($"weapon : {weapon.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.getRoomId()}"); delete_keys.Add(weapon.Key); continue; } @@ -276,15 +278,15 @@ public class BattleInstanceAction : EntityActionBase } } - private void deleteChangedBattleObjectBuffAnchor(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) + private void deleteChangedBattleObjectBuffAnchor(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, BattleInstanceSnapshotAttrib attrib) { List delete_keys = new(); foreach (var buff in attrib.m_combat_pod_attrib.m_buffs) { //map에 respawn pos가 없어지거나 바뀌었을 경우가 있을수 있으므로 예외 처리 - if (false == battleInstanceRoom.m_instance_room.getMap().getAnchors().ContainsKey(buff.Key)) + if (false == battleInstanceRoom.getInstanceRoom().getMap().getAnchors().ContainsKey(buff.Key)) { - Log.getLogger().warn($"buff : {buff.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().warn($"buff : {buff.Key} is not exist.. so don't add attribute.... roomId : {battleInstanceRoom.getInstanceRoom().getMap().m_room_id}"); delete_keys.Add(buff.Key); continue; } @@ -297,7 +299,7 @@ public class BattleInstanceAction : EntityActionBase } } - private void addRespawnPosInfoFromMeta(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private void addRespawnPosInfoFromMeta(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var now = DateTimeHelper.Current; @@ -308,9 +310,9 @@ public class BattleInstanceAction : EntityActionBase } } - private void addStorageInfoFromMeta(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private void addStorageInfoFromMeta(GameModeTPSFreeForAll ffa, BattleInstanceSnapshotAttribute attribute) { - foreach (var storage_group in battleInstanceRoom.m_battle_pod_storage_guid_group.Values) + foreach (var storage_group in ffa.m_battle_pod_storage_guid_group.Values) { foreach (var anchor_guid in storage_group) { @@ -319,9 +321,9 @@ public class BattleInstanceAction : EntityActionBase } } - private void addPickupPodInfoFromMeta(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private void addPickupPodInfoFromMeta(GameModeTPSFreeForAll ffa, BattleInstanceSnapshotAttribute attribute) { - foreach (var pickup_pod_group in battleInstanceRoom.m_battle_pickup_pod_guid_group.Values) + foreach (var pickup_pod_group in ffa.m_battle_pickup_pod_guid_group.Values) { foreach (var anchor_guid in pickup_pod_group) { @@ -377,7 +379,7 @@ public class BattleInstanceAction : EntityActionBase } - private async Task createBattleObjectPickupPodReward(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task createBattleObjectPickupPodReward(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); @@ -389,7 +391,7 @@ public class BattleInstanceAction : EntityActionBase return result; } - private async Task createBattleObjectCombatPod(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task createBattleObjectCombatPod(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var battle_update_action = battleInstanceRoom.getEntityAction(); NullReferenceCheckHelper.throwIfNull(battle_update_action, () => $"battle_update_action is null !!!"); diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceStateUpdateAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceStateUpdateAction.cs similarity index 85% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceStateUpdateAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceStateUpdateAction.cs index ca04c34..10c91d7 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceStateUpdateAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceStateUpdateAction.cs @@ -1,21 +1,17 @@ -using Newtonsoft.Json; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; +using Newtonsoft.Json; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - +using ServerCore; namespace GameServer; public partial class BattleInstanceUpdateAction { - private async Task battleInstanceStateUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task battleInstanceStateUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); var round_state = attribute.m_combat_pod_mode.m_round_state_type; @@ -36,13 +32,13 @@ public partial class BattleInstanceUpdateAction case BattleRoundStateType.Destroyed: break; default: - Log.getLogger().error($"BattleRoundStateType None error room_id : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"); + Log.getLogger().error($"BattleRoundStateType None error room_id : {battleInstanceRoom.getRoomId()}"); return result; } return result; } - private async Task battleInstanceWaitStateUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task battleInstanceWaitStateUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); await Task.CompletedTask; @@ -86,21 +82,21 @@ public partial class BattleInstanceUpdateAction //로그 추가 var invokers = new List(); - var log_action = new LogActionEx(LogActionType.BattleRoundStateUpdate); + var log_action = new LogAction(LogActionType.BattleRoundStateUpdate.ToString()); - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); var ended_round = attribute.m_combat_pod_mode.m_current_round; var round_state = attribute.m_combat_pod_mode.m_round_state_type; - var users = battleInstanceRoom.m_instance_room.tryGetInstanceExistUserForLog(); + var users = battleInstanceRoom.getInstanceRoom().tryGetInstanceExistUserForLog(); BattleRoundUpdateBusinessLog business_log = new(room_id, ended_round, round_state, users); invokers.Add(business_log); - BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers); + //BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers); //kihoon todo : 이거 수정해야된다. return result; } - private async Task battleInstanceRoundingStateUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task battleInstanceRoundingStateUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); @@ -122,7 +118,7 @@ public partial class BattleInstanceUpdateAction return result; } - private async Task roundingUpdate(BattleInstanceRoom battleInstanceRoom, DateTime roundEndTime) + private async Task roundingUpdate(GameModeTPSFreeForAll battleInstanceRoom, DateTime roundEndTime) { var result = new Result(); string occupier_guid = string.Empty; @@ -137,7 +133,7 @@ public partial class BattleInstanceUpdateAction Player? rewarded_player = null; if (!occupier_guid.Equals(string.Empty)) { - if (false == battleInstanceRoom.m_instance_room.tryGetInstanceMember(occupier_guid, out rewarded_player)) + if (false == battleInstanceRoom.getInstanceRoom().tryGetInstanceMember(occupier_guid, out rewarded_player)) { //보상은 안되더라도 라운드는 진행 가능하게 처리해야할듯... var err_msg = $"not exist user in instance_room !!! user_guid : {occupier_guid}"; @@ -160,7 +156,7 @@ public partial class BattleInstanceUpdateAction } } - private async Task roundingUpdateWithReward(BattleInstanceRoom battleInstanceRoom, DateTime roundEndTime, Player player) + private async Task roundingUpdateWithReward(GameModeTPSFreeForAll battleInstanceRoom, DateTime roundEndTime, Player player) { var result = new Result(); @@ -214,10 +210,10 @@ public partial class BattleInstanceUpdateAction } //로그 추가 - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); var ended_round = attribute.m_combat_pod_mode.m_current_round; var round_state = attribute.m_combat_pod_mode.m_round_state_type; - var users = battleInstanceRoom.m_instance_room.tryGetInstanceExistUserForLog(); + var users = battleInstanceRoom.getInstanceRoom().tryGetInstanceExistUserForLog(); BattleRoundUpdateBusinessLog business_log = new(room_id, ended_round, round_state, users); batch.appendBusinessLog(business_log); @@ -254,7 +250,7 @@ public partial class BattleInstanceUpdateAction } - private async Task roundingUpdateWithoutReward(BattleInstanceRoom battleInstanceRoom, DateTime roundEndTime) + private async Task roundingUpdateWithoutReward(GameModeTPSFreeForAll battleInstanceRoom, DateTime roundEndTime) { var result = new Result(); @@ -289,21 +285,21 @@ public partial class BattleInstanceUpdateAction attribute.modifiedEntityAttribute(true); //batch 처리 - var batch = new QueryBatchEx(battleInstanceRoom, LogActionType.BattleRoundStateUpdate, server_logic.getDynamoDbClient()); - { - batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); - } + // var batch = new QueryBatch(battleInstanceRoom, LogActionType.BattleRoundStateUpdate, server_logic.getDynamoDbClient()); + // { + // batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); + // } //로그 추가 - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); var ended_round = attribute.m_combat_pod_mode.m_current_round; var round_state = attribute.m_combat_pod_mode.m_round_state_type; - var users = battleInstanceRoom.m_instance_room.tryGetInstanceExistUserForLog(); + var users = battleInstanceRoom.getInstanceRoom().tryGetInstanceExistUserForLog(); BattleRoundUpdateBusinessLog business_log = new(room_id, ended_round, round_state, users); - batch.appendBusinessLog(business_log); + //batch.appendBusinessLog(business_log); //kihoon todo : 로그랑 배치 수정해서 올려야 된다. - result = await QueryHelper.sendQueryAndBusinessLog(batch); - + //result = await QueryHelper.sendQueryAndBusinessLog(batch); + await Task.CompletedTask; if (result.isFail()) return result; @@ -311,7 +307,7 @@ public partial class BattleInstanceUpdateAction return result; }; - result = await battleInstanceRoom.runTransactionRunnerSafelyWithTransGuid(battleInstanceRoom.m_instance_room.getMap().m_room_id, + result = await battleInstanceRoom.runTransactionRunnerSafelyWithTransGuid(battleInstanceRoom.getRoomId(), TransactionIdType.PrivateContents, BattleConstant.BATTLE_INSTANCE_TRANSACTION_NAME, fn_battle_round_update); if (result.isFail()) { @@ -332,7 +328,7 @@ public partial class BattleInstanceUpdateAction return result; } - private async Task stepUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, DateTime now) + private async Task stepUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, DateTime now) { var max_charge_level = battleInstanceRoom.m_ffa_reward_meta .Where(kvp => kvp.Key == battleInstanceRoom.m_ffa_reward_meta.Keys.Max()) @@ -365,7 +361,7 @@ public partial class BattleInstanceUpdateAction } } - private async Task podCombatRewardUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, DateTime now) + private async Task podCombatRewardUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, DateTime now) { var occupier_guid = string.Empty; CommonResult common_result = new(); @@ -375,7 +371,7 @@ public partial class BattleInstanceUpdateAction occupier_guid = attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid; if (occupier_guid.Equals(string.Empty)) return; - if (false == battleInstanceRoom.m_instance_room.tryGetInstanceMember(occupier_guid, out var player)) + if (false == battleInstanceRoom.getInstanceRoom().tryGetInstanceMember(occupier_guid, out var player)) { Log.getLogger().error($"Not Exist Player in battle instance room occupier_guid : {occupier_guid}"); return; @@ -440,7 +436,7 @@ public partial class BattleInstanceUpdateAction info.m_battle_object_type = EBattleObjectType.Pod_Combat; List log_infos = new(); - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); var current_round = attribute.m_combat_pod_mode.m_current_round; var round_state_type = attribute.m_combat_pod_mode.m_round_state_type; var business_log = new BattlePodCombatRewardBusinessLog(room_id, current_round, round_state_type @@ -478,7 +474,7 @@ public partial class BattleInstanceUpdateAction } } - private async Task battleInstanceEndStateUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task battleInstanceEndStateUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); await Task.CompletedTask; @@ -495,21 +491,21 @@ public partial class BattleInstanceUpdateAction attribute.m_combat_pod_mode.m_current_state_start_time = end_time; } - var users = battleInstanceRoom.m_instance_room.tryGetInstanceExistUserForLog(); + var users = battleInstanceRoom.getInstanceRoom().tryGetInstanceExistUserForLog(); //여기서 배틀 인스턴스가 완전히 shutdown 됐다는 Noti 전달 BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(battleInstanceRoom); //log 추가 var invokers = new List(); - var log_action = new LogActionEx(LogActionType.BattleRoundStateUpdate); + var log_action = new LogAction(LogActionType.BattleRoundStateUpdate.ToString()); - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); var ended_round = attribute.m_combat_pod_mode.m_current_round; var round_state = attribute.m_combat_pod_mode.m_round_state_type; BattleRoundUpdateBusinessLog business_log = new(room_id, ended_round, round_state, users); invokers.Add(business_log); - BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers); + //BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers);// kihoon todo : 이거 수정해야된다. return result; } diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceUpdateAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceUpdateAction.cs similarity index 82% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceUpdateAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceUpdateAction.cs index 0ee9b89..00ab6ae 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleInstanceUpdateAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleInstanceUpdateAction.cs @@ -1,15 +1,12 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; +using GameServer.Contents.Battle.Reward; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; using Nettention.Proud; using Newtonsoft.Json; - - -using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - +using ServerCore; namespace GameServer; @@ -21,20 +18,20 @@ public partial class BattleInstanceUpdateAction : EntityActionBase public override async Task onInit() { await Task.CompletedTask; - + var result = new Result(); - - + + return result; } public override void onClear() { - + } - + public async Task update() { - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeTPSFreeForAll; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); var attribute = battle_instance_room.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); @@ -45,7 +42,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase Log.getLogger().error($"battleObjectStateUpdate result error !!! result : {result.toBasicString()}"); return result; } - + result = await battleInstanceStateUpdate(battle_instance_room, attribute); if (result.isFail()) { @@ -59,41 +56,37 @@ public partial class BattleInstanceUpdateAction : EntityActionBase Log.getLogger().error($"battleInstancHostUpdate result error !!! result : {result.toBasicString()}"); return result; } - + return result; } - private async Task battleInstancHostUpdate(BattleInstanceRoom battleInstanceRoom) + private async Task battleInstancHostUpdate(GameModeTPSFreeForAll battleInstanceRoom) { var result = new Result(); + string host_user_guid = string.Empty; - var is_migrated = false; using (var releaser = await battleInstanceRoom.getAsyncLock()) { //이미 host 지정이 끝났으면 리턴 - //kihoon todo : 일단 계속 체크해서 호스트가 얼마나 바뀌는지 확인 해보고 적절한 주기 찾아볼것 - //if (!battleInstanceRoom.m_host_migrator.getHostUserGuid().Equals(string.Empty)) return result; - var host_migrator = battleInstanceRoom.m_host_migrator; - // TODO : 인터페이스 변경 예정 - (result, is_migrated) = host_migrator.migrateCheck(); + //kihoon todo : 일단 계속 체크해서 호스트가 얼마나 바뀌는지 확인 해보고 적절한 주기 찾아볼것 + if (!battleInstanceRoom.m_host_migrator.getHostUserGuid().Equals(string.Empty)) return result; + + var p2p_group_id = battleInstanceRoom.getInstanceRoom().getMap().getP2PGroupId(); + result = battleInstanceRoom.m_host_migrator.defineHost(p2p_group_id, new SuperPeerSelectionPolicy(), new HostID[1]); if (result.isFail()) return result; - if (is_migrated) - { - host_user_guid = host_migrator.getHostUserGuid(); - } + host_user_guid = battleInstanceRoom.m_host_migrator.getHostUserGuid(); + + Log.getLogger().info($"battleInstancHost set complete host_user_guid : {host_user_guid}"); } - if (is_migrated) - { - Log.getLogger().info($"battleInstancHost set complete host_user_guid : {host_user_guid}"); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battleInstanceRoom.m_instance_room, host_user_guid); - } + BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battleInstanceRoom.getInstanceRoom(), host_user_guid); + return result; } - private async Task battleObjectStateUpdate(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + private async Task battleObjectStateUpdate(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); await Task.CompletedTask; @@ -104,42 +97,42 @@ public partial class BattleInstanceUpdateAction : EntityActionBase using (var releaser = await battleInstanceRoom.getAsyncLock()) { (var weapon_info, var weapon_log_info) = battleObjectWeaponStateUpdate(attribute, now); - infos.AddRange(weapon_info); + infos.AddRange(weapon_info); log_infos.AddRange(weapon_log_info); - + (var buff_info, var buff_log_info) = battleObjectBuffStateUpdate(attribute, now); - infos.AddRange(buff_info); + infos.AddRange(buff_info); log_infos.AddRange(buff_log_info); - + (var pickup_pod_info, var pickup_pod_log_info) = battleObjectPickupPodUpdate(attribute, now); - infos.AddRange(pickup_pod_info); - log_infos.AddRange(pickup_pod_log_info); + infos.AddRange(pickup_pod_info); + log_infos.AddRange(pickup_pod_log_info); } - + if (infos.Count > 0) { BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(battleInstanceRoom, infos); - + var invokers = new List(); - var log_action = new LogActionEx(LogActionType.BattleObjectStateUpdate); - var business_log = new BattleObjectStateUpdateBusinessLog(battleInstanceRoom.m_instance_room.getMap().m_room_id, log_infos); + var log_action = new LogAction(LogActionType.BattleObjectStateUpdate.ToString()); + var business_log = new BattleObjectStateUpdateBusinessLog(battleInstanceRoom.getInstanceRoom().getMap().m_room_id, log_infos); invokers.Add(business_log); - BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers); + BusinessLogger.collectLogs(log_action, battleInstanceRoom, invokers); //kihoon todo : 이거 수정해야된다. } return result; } private (List, List) battleObjectPickupPodUpdate(BattleInstanceSnapshotAttribute attribute, DateTime now) { - // if (attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) || + // if (attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) || // attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.Destroyed)) return new(); - + List infos = new(); List log_infos = new(); - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeTPSFreeForAll; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); - + foreach (var generated_info in attribute.m_combat_pod_mode.m_pickup_pod_generated_info) { var group_id = generated_info.Key.Item1; @@ -153,24 +146,24 @@ public partial class BattleInstanceUpdateAction : EntityActionBase var anchor_guid = generatedInfo.m_anchor_guid; var next_generated_time = generatedInfo.m_next_generate_time; - + //아직 시간이 안됐거나, 할당된게 있으면 continue; if (now < next_generated_time || anchor_guid.Equals(string.Empty) == false) continue; - - //비어 있으면 할당 해준다. 시간체크는 보상 받았을때 해준다. + + //비어 있으면 할당 해준다. 시간체크는 보상 받았을때 해준다. (var result, var allocated_anchor_guid) = BattleRoomHelper.getRandomPickupPod(group_id, idx, battle_instance_room, attribute); if (result.isFail()) { Log.getLogger(result.toBasicString()); continue; } - - if(false == battle_instance_room.m_instance_room.getMap().getAnchors().TryGetValue(allocated_anchor_guid, out var anchorInfo)) + + if(false == battle_instance_room.getInstanceRoom().getMap().getAnchors().TryGetValue(allocated_anchor_guid, out var anchorInfo)) { Log.getLogger().error($"not exist anchor anchor_guid : {allocated_anchor_guid}"); continue; } - + var table_id = anchorInfo.AnchorProp.TableId; if (false == MetaData.Instance._BattleObjectSpawnGroupMetaTable.TryGetValue(table_id, out var battle_object_spawn_group)) { @@ -179,11 +172,11 @@ public partial class BattleInstanceUpdateAction : EntityActionBase } PickupPodGeneratedInfo new_generated_info = new(generated_info.Key.Item1, generated_info.Key.Item2, allocated_anchor_guid, generatedInfo.m_anchor_guid, generatedInfo.m_next_generate_time); - - attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate(generated_info.Key, new_generated_info, (i, tuple) => new_generated_info); + + attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate(generated_info.Key, new_generated_info, (i, tuple) => new_generated_info); if (false == attribute.m_combat_pod_mode.m_pickup_pods.TryGetValue(allocated_anchor_guid, out var pickupPod)) { - var err_msg = $"pickup pod date not exist !! allocated_anchor_guid : {allocated_anchor_guid}, roomId : {battle_instance_room.m_instance_room.getMap().m_room_id}"; + var err_msg = $"pickup pod date not exist !! allocated_anchor_guid : {allocated_anchor_guid}, roomId : {battle_instance_room.getRoomId()}"; Log.getLogger().error(err_msg); continue; } @@ -194,14 +187,14 @@ public partial class BattleInstanceUpdateAction : EntityActionBase info.AnchorGuid = allocated_anchor_guid; info.IsActive = pickupPod.m_is_active ? BoolType.True : BoolType.False; infos.Add(info); - + BattleObjectLogInfo log_info = new(); log_info.m_anchor_guid = pickupPod.m_anchor_guid; log_info.m_battle_object_type = pickupPod.m_type; log_info.m_active_time = pickupPod.m_active_time; log_infos.Add(log_info); } - + return (infos, log_infos); } @@ -215,12 +208,12 @@ public partial class BattleInstanceUpdateAction : EntityActionBase if (buff.m_active_time <= now && buff.m_is_active == false) { buff.m_is_active = true; - + BattleObjectInfo info = new(); info.AnchorGuid = buff.m_anchor_guid; info.IsActive = BoolType.True; infos.Add(info); - + BattleObjectLogInfo log_info = new(); log_info.m_anchor_guid = buff.m_anchor_guid; log_info.m_battle_object_type = buff.m_type; @@ -241,7 +234,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase if (weapon.m_active_time <= now && weapon.m_is_active == false) { weapon.m_is_active = true; - + BattleObjectInfo info = new(); info.AnchorGuid = weapon.m_anchor_guid; info.IsActive = BoolType.True; @@ -257,16 +250,16 @@ public partial class BattleInstanceUpdateAction : EntityActionBase return (infos, log_infos); } - - public Result battleObjectStateInitAndNotify(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + + public Result battleObjectStateInitAndNotify(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var infos = new List(); var result = new Result(); - + foreach (BattleObjectPodStorage storage in attribute.m_combat_pod_mode.m_pod_storages.Values) { storage.m_reward_cnt = 0; - + storage.m_is_active = true; BattleObjectInfo info = new(); info.AnchorGuid = storage.m_anchor_guid; @@ -277,25 +270,25 @@ public partial class BattleInstanceUpdateAction : EntityActionBase return result; } + + - - - public async Task createCombatPod(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + public async Task createCombatPod(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { await Task.CompletedTask; var result = new Result(); var combat_pod_guid = System.Guid.NewGuid().ToString("N"); - + (result, var anchor_guid) = BattleRoomHelper.getRandomCombatPodAnchorGuid(attribute, battleInstanceRoom); if (result.isFail()) return result; attribute.m_combat_pod_mode.m_pod_combat = new BattleObjectPodCombat(combat_pod_guid, anchor_guid, DateTimeHelper.Current); - + return result; } + - - public async Task createPickupPodReward(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + public async Task createPickupPodReward(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { await Task.CompletedTask; var result = new Result(); @@ -309,7 +302,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase foreach (var guid in pickup_pod_guids) { - if (false == battleInstanceRoom.m_instance_room.getMap().getAnchors().TryGetValue(guid, out var anchorInfo)) + if (false == battleInstanceRoom.getInstanceRoom().getMap().getAnchors().TryGetValue(guid, out var anchorInfo)) { var err_msg = $"Not exitst anchorInfo guid : {guid}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); @@ -325,7 +318,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase Log.getLogger(result.toBasicString()); continue; } - + max_reward_count = objectSpawnGroupMetaData.MaxSpawnQuantity; break; } @@ -340,10 +333,10 @@ public partial class BattleInstanceUpdateAction : EntityActionBase } - public async Task createPickupPodRewardByGroup(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, Int32 groupId, Int32 maxRewardCount) + public async Task createPickupPodRewardByGroup(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, Int32 groupId, Int32 maxRewardCount) { await Task.CompletedTask; - + var result = new Result(); for (int i = 0; i < maxRewardCount; i++) { @@ -354,7 +347,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase } PickupPodGeneratedInfo new_generated_info = new(groupId, i, anchor_guid, string.Empty, DateTimeHelper.Current); - + if(false == attribute.m_combat_pod_mode.m_pickup_pod_generated_info.TryGetValue((groupId, i), out var generatedInfo)) { attribute.m_combat_pod_mode.m_pickup_pod_generated_info.TryAdd((groupId, i), new_generated_info); @@ -363,9 +356,9 @@ public partial class BattleInstanceUpdateAction : EntityActionBase { new_generated_info.m_before_anchor_guid = generatedInfo.m_anchor_guid; } - + Log.getLogger().info($"create pickup pod generation info new_generated_info : {JsonConvert.SerializeObject(new_generated_info)}"); - + attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate((groupId, i), new_generated_info, (key, tuple) => new_generated_info); if (false == attribute.m_combat_pod_mode.m_pickup_pods.TryGetValue(anchor_guid, out var pickupPod)) { @@ -375,9 +368,10 @@ public partial class BattleInstanceUpdateAction : EntityActionBase pickupPod.m_is_active = true; } return result; + } - public async Task<(Result, List, int, int)> podCombatUpdateIfHasOccupier(BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, Player player) + public async Task<(Result, List, int, int)> podCombatUpdateIfHasOccupier(GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute, Player player) { var result = new Result(); var occupier_guid = attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid; @@ -397,12 +391,12 @@ public partial class BattleInstanceUpdateAction : EntityActionBase attribute.m_combat_pod_mode.m_rewarded_step = max_charge_level; attribute.m_combat_pod_mode.m_charged_step = max_charge_level; - + return (result, rewards, rewardable_step_start, rewardable_step_end); } - private async Task addPodCommbatOccupyReward(Player player, BattleInstanceRoom battleInstanceRoom, List rewards) + private async Task addPodCommbatOccupyReward(Player player, GameModeTPSFreeForAll battleInstanceRoom, List rewards) { IReward reward_proc = new RewardPodCombat(player, player.getUserGuid(), rewards); var result = await RewardManager.It.proceedRewardProcess(reward_proc); @@ -414,7 +408,7 @@ public partial class BattleInstanceUpdateAction : EntityActionBase return result; } - private List makePodCombatOccupyReward(int start, int end, BattleInstanceRoom battleInstanceRoom) + private List makePodCombatOccupyReward(int start, int end, GameModeTPSFreeForAll battleInstanceRoom) { List rewards = new(); @@ -429,27 +423,27 @@ public partial class BattleInstanceUpdateAction : EntityActionBase var item_id = ffaRewardData.RewardItemID; var item_count = ffaRewardData.RewardCount * battleInstanceRoom.m_hot_time_reward; - + RewardMutable reward_metable = new(); reward_metable.Item = new(); reward_metable.Item.Id = item_id; reward_metable.Item.Count = item_count; - + MetaAssets.Reward reward = new MetaAssets.Reward(reward_metable); rewards.Add(reward); - + Log.getLogger().Debug($"pod Combat reward Added step : {i}, ItemId : {item_id}, itemCount : {item_count}"); } - + return rewards; } - + private List battleObjectPickupPodsDeactive(BattleInstanceSnapshotAttribute attribute) { List infos = new(); - + foreach (var pickup in attribute.m_combat_pod_mode.m_pickup_pods.Values) { pickup.m_is_active = false; @@ -467,8 +461,8 @@ public partial class BattleInstanceUpdateAction : EntityActionBase var next_generated_time = generated_info.Value.m_next_generate_time; PickupPodGeneratedInfo new_info = new(idx.Item1, idx.Item2, string.Empty, string.Empty, now); - - attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate(idx, new_info, (i, tuple) => new_info); + + attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate(idx, new_info, (i, tuple) => new_info); } return infos; @@ -489,4 +483,4 @@ public partial class BattleInstanceUpdateAction : EntityActionBase return infos; } -} +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleLocationAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleLocationAction.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleLocationAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleLocationAction.cs index 95a0330..9785895 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleLocationAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleLocationAction.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectInteractAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectInteractAction.cs similarity index 95% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectInteractAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectInteractAction.cs index c823a1c..e421bdd 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectInteractAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectInteractAction.cs @@ -1,6 +1,8 @@ -using MetaAssets; +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; @@ -42,7 +44,7 @@ public class BattleObjectInteractAction : EntityActionBase Log.getLogger().info($"interaction pickup pod player : {player.toBasicString()}, guid : {handler.m_interaction_anchor_guid}, next active time : {handler.m_battle_object.m_active_time}"); - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeBase; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); var attribute = battle_instance_room.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); @@ -60,7 +62,7 @@ public class BattleObjectInteractAction : EntityActionBase await Task.CompletedTask; var result = new Result(); - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeBase; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); var attribute = battle_instance_room.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); @@ -121,7 +123,7 @@ public class BattleObjectInteractAction : EntityActionBase var result = new Result(); - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeBase; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); string err_msg = string.Empty; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectRewardAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectRewardAction.cs similarity index 92% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectRewardAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectRewardAction.cs index 9744dbc..a178ba8 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleObjectRewardAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleObjectRewardAction.cs @@ -1,8 +1,11 @@ using GameServer.Contents.Battle.Reward; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; using MetaAssets; using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; @@ -41,7 +44,7 @@ public class BattleObjectRewardAction : EntityActionBase var reward_id = pod_storage_meta.TypeID; var reward_count = pod_storage_meta.ObjectValue; - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeTPSFreeForAll; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); RewardMutable reward_metable = new(); @@ -76,7 +79,7 @@ public class BattleObjectRewardAction : EntityActionBase return result; } - var battle_instance_room = getOwner() as BattleInstanceRoom; + var battle_instance_room = getOwner() as GameModeTPSFreeForAll; NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!"); Int32 idx = Int32.MinValue; @@ -100,7 +103,7 @@ public class BattleObjectRewardAction : EntityActionBase } if (idx == Int32.MinValue) return result; //보상줄게 없다는 얘기이므로 그량 리턴 - if(false == battle_instance_room.m_instance_room.getMap().getAnchors().TryGetValue(handler.m_interaction_anchor_guid, out var anchorInfo)) + if(false == battle_instance_room.getInstanceRoom().getMap().getAnchors().TryGetValue(handler.m_interaction_anchor_guid, out var anchorInfo)) { err_msg = $"not exist anchor anchor_guid : {handler.m_interaction_anchor_guid}"; Log.getLogger().error(err_msg); diff --git a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleZoneMoveAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleZoneMoveAction.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Action/BattleZoneMoveAction.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleZoneMoveAction.cs index aee8bc8..1e819d0 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Action/BattleZoneMoveAction.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/BattleZoneMoveAction.cs @@ -1,18 +1,12 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; +using Google.Protobuf.WellKnownTypes; +using MetaAssets; using Newtonsoft.Json; - - -using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - - +using ServerCore; using USER_GUID = System.String; - namespace GameServer; public partial class GameZoneMoveAction diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/FfaGameObjectPodStorageInteractAction.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/FfaGameObjectPodStorageInteractAction.cs new file mode 100644 index 0000000..ce5655b --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Action/FfaGameObjectPodStorageInteractAction.cs @@ -0,0 +1,57 @@ +using GameServer.Contents.GameMode.Action; +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + +public class FfaGameObjectPodStorageInteractAction : GameGameObjectAction +{ + public FfaGameObjectPodStorageInteractAction(EntityBase owner) + : base(owner, EGameObjectType.Pod_Combat) + { + } + + public override async Task onInit() + { + await Task.CompletedTask; + var result = new Result(); + return result; + } + + public override void onClear() + { + return; + } + + public override async Task interact(string anchorGuid, DateTime interactionTime) + { + await Task.CompletedTask; + var result = new Result(); + + var game_mode_base = getOwner() as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); + var attribute = game_mode_base.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); + + bool has_pod_combat = hasPodCombat(anchorGuid, attribute); + + + return result; + } + + public override string toBasicString() + { + return $"class name : {nameof(FfaGameObjectPodStorageInteractAction)}...." + base.toBasicString(); + } + + + private bool hasPodCombat(string anchorGuid, BattleInstanceSnapshotAttribute attribute) + { + var pod_combat = attribute.m_combat_pod_mode.m_pod_combat; + if (pod_combat.m_source_storage_anchor_guid.Equals(anchorGuid) && pod_combat.m_state.Equals(PodCombatStateType.Active)) return true; + return false; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Cheat/BattleCheat.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Cheat/BattleCheat.cs new file mode 100644 index 0000000..202ef35 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Cheat/BattleCheat.cs @@ -0,0 +1,145 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + + +[ChatCommandAttribute("battleinstanceinit", typeof(CheatBattleInstanceInit), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] +public class CheatBattleInstanceInit : ChatCommandBase +{ + public override async Task invoke(Player player, string token, string[] args) + { + Log.getLogger().info($"battleinstanceinit"); + + var server_logic = GameServerApp.getServerLogic(); + + var room_id = player.getCurrentInstanceRoomId(); + if (room_id.Equals(string.Empty)) + { + Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only use in instance"); + return; + } + + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + Log.getLogger().error($"cheat:battleinstanceinit.... battle_instance_room is null room_id : {room_id}"); + return; + } + + var game_mode_base = gameMode as GameModeBase; + + // var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + if (game_mode_base is null) + { + Log.getLogger().error($"cheat:battleinstanceinit.... game_mode_base is null room_id : {room_id}"); + return; + } + + using (var releaser = await game_mode_base.getAsyncLock()) + { + var attribute = game_mode_base.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); + + if (false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) && false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.Destroyed)) + { + Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only RoundEndAll room_id : {room_id}"); + return; + } + + var now = DateTimeHelper.Current; + + var ffa = gameMode as GameModeTPSFreeForAll; + if (ffa is null) + { + Log.getLogger().error($"cheat:battleinstanceinit.... ffa is null room_id : {room_id}"); + return; + } + + ffa.setEventStartTime(now); + + attribute.m_combat_pod_mode.m_round_state_type = BattleRoundStateType.Rounding; + attribute.m_combat_pod_mode.m_current_state_start_time = now; + attribute.m_combat_pod_mode.m_current_round = 1; + attribute.m_combat_pod_mode.m_charged_step = 0; + attribute.m_combat_pod_mode.m_rewarded_step = 0; + + attribute.m_combat_pod_mode.m_pod_combat.setActive(now); + + + (Result result, var anchor_guid) = BattleRoomHelper.getRandomCombatPodAnchorGuid(attribute, ffa); + if (result.isFail()) + { + Log.getLogger().error("get Random pod combat anchor guid faile !!! "); + return; + } + attribute.m_combat_pod_mode.m_pod_combat.m_source_storage_anchor_guid = anchor_guid; + + BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(ffa); + + var update_action = game_mode_base.getEntityAction(); + NullReferenceCheckHelper.throwIfNull(update_action, () => $"attribute is null !!!"); + update_action.battleObjectStateInitAndNotify(ffa, attribute); + + BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(ffa); + + } + } +} + + + +[ChatCommandAttribute("gamemodeoccupyhost", typeof(BattleHostOccupy), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] +public class BattleHostOccupy : ChatCommandBase +{ + public override async Task invoke(Player player, string token, string[] args) + { + //Log.getLogger().info($"battleinstanceinit"); + + var server_logic = GameServerApp.getServerLogic(); + + var room_id = player.getCurrentInstanceRoomId(); + if (room_id.Equals(string.Empty)) + { + Log.getLogger().error($"cheat:gamemodeoccupyhost.... this cheat only use in instance"); + return; + } + + + //kihoon todo : 임시 분기 처리 + //나중에 게임모드로 분리되면 그때 재작업 + if (room_id.Contains("battle")) + { + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + Log.getLogger().error($"cheat:gamemodeoccupyhost.... battle_instance_room is null room_id : {room_id}"); + return; + } + + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); + + using (var releaser = await game_mode_base.getAsyncLock()) + { + game_mode_base.m_host_migrator.modifyHost(player.getUserGuid()); + } + BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(game_mode_base.getInstanceRoom(), player.getUserGuid()); + } + else if (room_id.Contains("1017101")) + { + var instance_room = InstanceRoomManager.Instance.getInstanceRoomByRoomId(room_id); + if (instance_room is null) + { + Log.getLogger().error($"cheat:gamemodeoccupyhost.... instance_room is null room_id : {room_id}"); + return; + } + BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(instance_room, player.getUserGuid()); + } + + + + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Doc/BattleEventDoc.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Doc/BattleEventDoc.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Doc/BattleEventDoc.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Doc/BattleEventDoc.cs index d7b875e..64969f4 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Doc/BattleEventDoc.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Doc/BattleEventDoc.cs @@ -1,7 +1,8 @@ using MetaAssets; using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer.Contents.Battle.Doc; diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceRoom.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceRoom.cs new file mode 100644 index 0000000..6d88dd5 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceRoom.cs @@ -0,0 +1,78 @@ +using System.Collections.Concurrent; +using Axion.Collections.Concurrent; +using GameServer.Contents.Battle.Log; +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Org.BouncyCastle.Tls.Crypto.Impl; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + + + + + +public class BattleInstanceRoom : EntityBase, IWithLogActor, IBattleMode +{ + + public BattleInstanceRoom() + : base(EntityType.BattleInstance) + { + + } + + + public override async Task onInit() + { + await Task.CompletedTask; + var result = new Result(); + return result; + } + + public ILogActor toLogActor() + { + var server_logic = GameServerApp.getServerLogic(); + var region_id = server_logic.getServerConfig().getRegionId(); + var server_name = server_logic.getServerName(); + + var log_info = new BattleInstanceActorLog(region_id, server_name, "", 0); + return log_info; + } + + + public async Task LeaveBattleRoom(Player player, string roomId, bool disconnected = false) + { + if (false == GameModeManager.It.tryGetGameMode(roomId, out var gameMode)) return false; + + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + Log.getLogger().info($"LeaveBattleRoom, player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); + + //await game_mode_base.getInstanceRoom().LeaveGameInstanceRoom(player, disconnected); + await Task.CompletedTask; + if (game_mode_base.getInstanceRoom().isDestroy) + { + Log.getLogger().info($"m_instance_room.isDestroy, so destroyBattleRoom : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); + InstanceRoomManager.Instance.DestroyRoom(roomId); + Log.getLogger().info($"destroy InstanceRoomManager room Player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); + } + + return true; + } + + public override string toBasicString() + { + return $"BattleInstanceRoom room_id"; + } + + + public Task init() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotAttribute.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotAttribute.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotAttribute.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotAttribute.cs index 9bbcd1f..563f051 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotAttribute.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotAttribute.cs @@ -4,7 +4,8 @@ using System.Collections.Generic; using Amazon.DynamoDBv2.Model; using Newtonsoft.Json; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; +using ServerBase; namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotDoc.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotDoc.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotDoc.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotDoc.cs index 6f273ee..2ed237b 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceSnapshotDoc.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattleInstanceSnapshotDoc.cs @@ -1,7 +1,8 @@ using System.Collections.Concurrent; using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattlePlayer.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattlePlayer.cs similarity index 81% rename from GameServer/Contents/GameMode/Mode-Battle/Entity/BattlePlayer.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattlePlayer.cs index 2de785c..1d49638 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattlePlayer.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/BattlePlayer.cs @@ -1,9 +1,6 @@ - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; - namespace GameServer; public class BattlePlayer : EntityBase @@ -12,5 +9,7 @@ public class BattlePlayer : EntityBase public BattlePlayer(Player player) : base(EntityType.BattlePlayer) { m_player = player; - } + } + + } \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Entity/SystemBattleEvent.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/SystemBattleEvent.cs similarity index 94% rename from GameServer/Contents/GameMode/Mode-Battle/Entity/SystemBattleEvent.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/SystemBattleEvent.cs index ac45b78..7261acc 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Entity/SystemBattleEvent.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Entity/SystemBattleEvent.cs @@ -1,5 +1,5 @@ using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleConstant.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleConstant.cs similarity index 100% rename from GameServer/Contents/GameMode/Mode-Battle/Helper/BattleConstant.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleConstant.cs diff --git a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleInstancePlayModeHelper.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleInstancePlayModeHelper.cs similarity index 95% rename from GameServer/Contents/GameMode/Mode-Battle/Helper/BattleInstancePlayModeHelper.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleInstancePlayModeHelper.cs index 6b7b62f..c3f35d6 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleInstancePlayModeHelper.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleInstancePlayModeHelper.cs @@ -1,6 +1,8 @@ -using MetaAssets; +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; @@ -80,9 +82,9 @@ public static class BattleInstancePlayModeHelper } - public static (Result, BattleObjectMetaData) getBattleObjectMeta(string anchorGuid, BattleInstanceRoom battleInstanceRoom) + public static (Result, BattleObjectMetaData) getBattleObjectMeta(string anchorGuid, GameModeBase battleInstanceRoom) { - var map = battleInstanceRoom.m_instance_room.getMap(); + var map = battleInstanceRoom.getInstanceRoom().getMap(); string err_msg = string.Empty; var result = new Result(); if(false == map.m_anchors.TryGetValue(anchorGuid, out var anchorInfo)) diff --git a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleObjectInteractionLogicHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleObjectInteractionLogicHandler.cs similarity index 94% rename from GameServer/Contents/GameMode/Mode-Battle/Helper/BattleObjectInteractionLogicHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleObjectInteractionLogicHandler.cs index 444932c..fb95f29 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleObjectInteractionLogicHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleObjectInteractionLogicHandler.cs @@ -1,13 +1,7 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using MetaAssets; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - +using ServerCore; namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomHelper.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomHelper.cs similarity index 91% rename from GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomHelper.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomHelper.cs index 5a3ec81..a7f6290 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomHelper.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomHelper.cs @@ -1,6 +1,8 @@ -using Newtonsoft.Json; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; @@ -36,7 +38,7 @@ public class BattleRoomHelper } - public static (Result, string) getRandomCombatPodAnchorGuid(BattleInstanceSnapshotAttribute attribute, BattleInstanceRoom battleInstanceRoom) + public static (Result, string) getRandomCombatPodAnchorGuid(BattleInstanceSnapshotAttribute attribute, GameModeTPSFreeForAll battleInstanceRoom) { var result = new Result(); @@ -44,7 +46,7 @@ public class BattleRoomHelper var keys = new List(battleInstanceRoom.m_battle_pod_storage_guid_group.Keys); if (keys.Count == 0) { - err_msg = $"battle_instance_room.m_battle_pod_stand_group_pos_meta Keys Count is zero battle_instance_room : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"; + err_msg = $"battle_instance_room.m_battle_pod_stand_group_pos_meta Keys Count is zero battle_instance_room : {battleInstanceRoom.getRoomId()}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); Log.getLogger().error(result.toBasicString()); return (result, string.Empty); @@ -61,7 +63,7 @@ public class BattleRoomHelper // 선택된 battle_group_id의 List 가져오기 if (false == battleInstanceRoom.m_battle_pod_storage_guid_group.TryGetValue(selected_battle_group_id, out var battle_pos_metas)) { - err_msg = $"battle_instance_room.m_battle_pod_stand_group_pos_meta value not exist battle_instance_room : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"; + err_msg = $"battle_instance_room.m_battle_pod_stand_group_pos_meta value not exist battle_instance_room : {battleInstanceRoom.getRoomId()}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); return (result, string.Empty); } @@ -75,12 +77,12 @@ public class BattleRoomHelper return (result, anchor_guid); } - err_msg = $"not exist anchorGuid {battleInstanceRoom.m_instance_room.getMap().m_room_id}"; + err_msg = $"not exist anchorGuid {battleInstanceRoom.getRoomId()}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); return (result, string.Empty); } - public static (Result, string) getRandomRespawnPos(BattleInstanceSnapshotAttribute attribute, BattleInstanceRoom battleInstanceRoom) + public static (Result, string) getRandomRespawnPos(BattleInstanceSnapshotAttribute attribute, GameModeTPSFreeForAll battleInstanceRoom) { List active_respawns = new(); var now = DateTimeHelper.Current; @@ -110,7 +112,7 @@ public class BattleRoomHelper } - public static (Result, string) getRandomPickupPod(int groupId, int idx, BattleInstanceRoom battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) + public static (Result, string) getRandomPickupPod(int groupId, int idx, GameModeTPSFreeForAll battleInstanceRoom, BattleInstanceSnapshotAttribute attribute) { var result = new Result(); @@ -120,7 +122,7 @@ public class BattleRoomHelper //선택된 battle_group_id의 List 가져오기 if (false == battleInstanceRoom.m_battle_pickup_pod_guid_group.TryGetValue(groupId, out var pickup_pod_guid_group)) { - err_msg = $"battle_instance_room.m_battle_pickup_pod_group_pos_meta value not exist battle_instance_room : {battleInstanceRoom.m_instance_room.getMap().m_room_id}"; + err_msg = $"battle_instance_room.m_battle_pickup_pod_group_pos_meta value not exist battle_instance_room : {battleInstanceRoom.getInstanceRoom().getMap().m_room_id}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); return (result, string.Empty); } @@ -252,12 +254,15 @@ public class BattleRoomHelper switch (mode) { case BattlePlayMode.PodCombat: - return HostMigrationFactory.createCommonHostMigrator((int) BattlePlayMode.PodCombat, GameServerApp.getServerLogic()); - //return new BattleFFAModeHostMigrator(); + + //return HostMigrationFactory.createCommonHostMigrator((int) BattlePlayMode.PodCombat, GameServerApp.getServerLogic()); + return new BattleFFAModeHostMigrator(); default: Log.getLogger($"createHostMigrator Not implements mode : {mode}"); throw new NotImplementedException(); } } + + } diff --git a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomNotifyHelper.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomNotifyHelper.cs similarity index 72% rename from GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomNotifyHelper.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomNotifyHelper.cs index 052a409..126cbe9 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomNotifyHelper.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Helper/BattleRoomNotifyHelper.cs @@ -1,28 +1,30 @@ -using Google.Protobuf.WellKnownTypes; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Google.Protobuf.WellKnownTypes; using Newtonsoft.Json; -using ServerCore; using ServerBase; +using ServerCommon; +using ServerCore; namespace GameServer; public static class BattleRoomNotifyHelper { - public static void send_GS2C_NTF_POD_COMBAT_STATE(BattleInstanceRoom battleInstanceRoom, Player player) + public static void send_GS2C_NTF_POD_COMBAT_STATE(GameModeTPSFreeForAll battleInstanceRoom, Player player) { var ntf = makePodCombatStateNotify(battleInstanceRoom); GameServerApp.getServerLogic().onSendPacket(player, ntf); } - public static void broadcast_GS2C_NTF_POD_COMBAT_STATE(BattleInstanceRoom battleInstanceRoom) + public static void broadcast_GS2C_NTF_POD_COMBAT_STATE(GameModeTPSFreeForAll battleInstanceRoom) { var ntf = makePodCombatStateNotify(battleInstanceRoom); - Log.getLogger().debug($"broadcast_GS2C_NTF_POD_COMBAT_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfPodCombatState)}"); + Log.getLogger().debug($"broadcast_GS2C_NTF_POD_COMBAT_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfPodCombatState)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - private static ClientToGame makePodCombatStateNotify(BattleInstanceRoom battleInstanceRoom) + private static ClientToGame makePodCombatStateNotify(GameModeTPSFreeForAll battleInstanceRoom) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); @@ -49,22 +51,22 @@ public static class BattleRoomNotifyHelper } - public static void send_GS2C_NTF_BATTLE_INSTANCE_STATE(BattleInstanceRoom battleInstanceRoom, Player player) + public static void send_GS2C_NTF_BATTLE_INSTANCE_STATE(GameModeTPSFreeForAll battleInstanceRoom, Player player) { var ntf = makeBattleInstanceStateNotify(battleInstanceRoom); - Log.getLogger().debug($"send_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); + Log.getLogger().debug($"send_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); GameServerApp.getServerLogic().onSendPacket(player, ntf); } - public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(BattleInstanceRoom battleInstanceRoom) + public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(GameModeTPSFreeForAll battleInstanceRoom) { var ntf = makeBattleInstanceStateNotify(battleInstanceRoom); - Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - private static ClientToGame makeBattleInstanceStateNotify(BattleInstanceRoom battleInstanceRoom) + private static ClientToGame makeBattleInstanceStateNotify(GameModeTPSFreeForAll battleInstanceRoom) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); @@ -83,7 +85,7 @@ public static class BattleRoomNotifyHelper return ntf; } - public static void send_GS2C_NTF_PLAYER_DEATH(BattleInstanceRoom battleInstanceRoom, string killerGuid, string deadUserGuid, Player player) + public static void send_GS2C_NTF_PLAYER_DEATH(GameModeTPSFreeForAll battleInstanceRoom, string killerGuid, string deadUserGuid, Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); @@ -91,13 +93,13 @@ public static class BattleRoomNotifyHelper ntf.Message.NtfBattlePlayerDeath.DeadUserGuid = deadUserGuid; ntf.Message.NtfBattlePlayerDeath.KillerUserGuid = killerGuid; - Log.getLogger().debug($"send_GS2C_NTF_PLAYER_DEATH ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerDeath)}"); + Log.getLogger().debug($"send_GS2C_NTF_PLAYER_DEATH ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerDeath)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - public static void send_GS2C_NTF_PLAYER_RESPAWN(BattleInstanceRoom battleInstanceRoom, Pos pos, Player player) + public static void send_GS2C_NTF_PLAYER_RESPAWN(GameModeTPSFreeForAll battleInstanceRoom, Pos pos, Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); @@ -105,12 +107,12 @@ public static class BattleRoomNotifyHelper ntf.Message.NtfBattlePlayerRespawn.RespawnUserGuid = player.getUserGuid(); ntf.Message.NtfBattlePlayerRespawn.Pos = pos; - Log.getLogger().debug($"send_GS2C_NTF_PLAYER_RESPAWN ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerRespawn)}"); + Log.getLogger().debug($"send_GS2C_NTF_PLAYER_RESPAWN ntf battleInstanceRoom Id : {battleInstanceRoom.getInstanceRoom().getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerRespawn)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(BattleInstanceRoom battleInstanceRoom, BattleObjectInteractionLogicHandler handler) + public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(GameModeTPSFreeForAll battleInstanceRoom, BattleObjectInteractionLogicHandler handler) { BattleObjectInfo info = new(); info.AnchorGuid = handler.m_battle_object.m_anchor_guid; @@ -124,16 +126,16 @@ public static class BattleRoomNotifyHelper broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(battleInstanceRoom, infos); } - public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(BattleInstanceRoom battleInstanceRoom, List infos) + public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(GameModeTPSFreeForAll battleInstanceRoom, List infos) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleObjectStateInfo = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_OBJECT_STATE_INFO(); ntf.Message.NtfBattleObjectStateInfo.BattleObjectInfos.AddRange(infos); - Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data :{JsonConvert.SerializeObject(infos)}"); + Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data :{JsonConvert.SerializeObject(infos)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void send_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(List infos, Player player) @@ -150,7 +152,7 @@ public static class BattleRoomNotifyHelper } - public static void broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION(BattleInstanceRoom battleInstanceRoom, string userGuid, string anchorGuid) + public static void broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION(GameModeTPSFreeForAll battleInstanceRoom, string userGuid, string anchorGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); @@ -158,12 +160,12 @@ public static class BattleRoomNotifyHelper ntf.Message.NtfBattleObjectInteraction.AnchorGuid = anchorGuid; ntf.Message.NtfBattleObjectInteraction.UserGuid = userGuid; - Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleObjectInteraction)}"); + Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleObjectInteraction)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - public static void broadcast_GS2C_NTF_BATTLE_REWARD(BattleInstanceRoom battleInstanceRoom, string acquireUserGuid, CommonResult commonResult) + public static void broadcast_GS2C_NTF_BATTLE_REWARD(GameModeTPSFreeForAll battleInstanceRoom, string acquireUserGuid, CommonResult commonResult) { if (commonResult.EntityCommonResults.Count == 0) return; if (acquireUserGuid.Equals(string.Empty)) return; @@ -175,23 +177,11 @@ public static class BattleRoomNotifyHelper ntf.Message.NtfBattleInstanceReward.AcquireUserGuid = acquireUserGuid; Log.getLogger().debug($"send battle reward ntf acquireUserGuid : {acquireUserGuid}, commonResult : {JsonConvert.SerializeObject(commonResult)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } - - public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_DESTROYED(BattleInstanceRoom battleInstanceRoom) - { - ClientToGame ntf = new ClientToGame(); - ntf.Message = new ClientToGameMessage(); - ntf.Message.NtfBattleInstanceDestroyed = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_INSTANCE_DESTROYED(); - battleInstanceRoom.m_instance_room.Broadcast(ntf); - } - - public static void send_GS2C_NTF_BATTLE_EVENT(Player player) { - if (false == BattleRoomHelper.checkBattleActive()) return; - ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleEvent = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_EVENT(); @@ -202,8 +192,6 @@ public static class BattleRoomNotifyHelper public static void broadcast_GS2C_NTF_BATTLE_EVENT(List infos) { - if (false == BattleRoomHelper.checkBattleActive()) return; - ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleEvent = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_EVENT(); @@ -216,16 +204,16 @@ public static class BattleRoomNotifyHelper } } - public static void broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(BattleInstanceRoom battleInstanceRoom, string leavingUserGuid) + public static void broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(GameModeTPSFreeForAll battleInstanceRoom, string leavingUserGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfPreparationForLeavingBattleInstance = new ClientToGameMessage.Types.GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(); ntf.Message.NtfPreparationForLeavingBattleInstance.LeavingUserGuid = leavingUserGuid; - Log.getLogger().debug($"broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfPreparationForLeavingBattleInstance)}"); + Log.getLogger().debug($"broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfPreparationForLeavingBattleInstance)}"); - battleInstanceRoom.m_instance_room.Broadcast(ntf); + battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void broadcast_GS2C_NTF_P2P_HOST_UPDATE(InstanceRoom instanceRoom, string hostUserGuid) diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleEventLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleEventLog.cs similarity index 71% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleEventLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleEventLog.cs index b49b6b8..43d94be 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleEventLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleEventLog.cs @@ -1,18 +1,9 @@ using Newtonsoft.Json; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; - public class BattleEventLog : ILogActor { [JsonProperty] diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleInstanceActorLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleInstanceActorLog.cs similarity index 84% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleInstanceActorLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleInstanceActorLog.cs index fc201de..66d93fa 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleInstanceActorLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleInstanceActorLog.cs @@ -1,14 +1,6 @@ using Newtonsoft.Json; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectInteractionBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectInteractionBusinessLog.cs similarity index 73% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectInteractionBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectInteractionBusinessLog.cs index ad864c5..8c90fe4 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectInteractionBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectInteractionBusinessLog.cs @@ -1,17 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; -public class BattleObjectInteractionBusinessLog : ILogInvokerEx +public class BattleObjectInteractionBusinessLog : ILogInvokerEx { private BattleObjectInteractionLogInfo m_info; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectStateUpdateBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectStateUpdateBusinessLog.cs similarity index 76% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectStateUpdateBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectStateUpdateBusinessLog.cs index c03dd7c..3a7b869 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleObjectStateUpdateBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleObjectStateUpdateBusinessLog.cs @@ -1,18 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - - namespace GameServer; -public class BattleObjectStateUpdateBusinessLog : ILogInvokerEx +public class BattleObjectStateUpdateBusinessLog : ILogInvokerEx { private BattleObjectStateUpdateLogInfo m_info; public BattleObjectStateUpdateBusinessLog(string roomId, List infos) : base(LogDomainType.BattleObjectStateUpdate) diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattlePodCombatRewardBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattlePodCombatRewardBusinessLog.cs similarity index 80% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattlePodCombatRewardBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattlePodCombatRewardBusinessLog.cs index 0609023..3b1592e 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattlePodCombatRewardBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattlePodCombatRewardBusinessLog.cs @@ -1,17 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; -public class BattlePodCombatRewardBusinessLog : ILogInvokerEx +public class BattlePodCombatRewardBusinessLog : ILogInvokerEx { private BattlePodCombatRewardLogInfo m_info; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRespawnBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRespawnBusinessLog.cs similarity index 73% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleRespawnBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRespawnBusinessLog.cs index 0d5bfc3..3ee362b 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRespawnBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRespawnBusinessLog.cs @@ -1,17 +1,9 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; +namespace GameServer.Contents.Battle.Log; -namespace GameServer; - -public class BattleRespawnBusinessLog : ILogInvokerEx +public class BattleRespawnBusinessLog : ILogInvokerEx { private BattleRespawnLogInfo m_info; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomJoinBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomJoinBusinessLog.cs similarity index 76% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomJoinBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomJoinBusinessLog.cs index 075b50e..7dc5df0 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomJoinBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomJoinBusinessLog.cs @@ -1,17 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; -public class BattleRoomJoinBusinessLog : ILogInvokerEx +public class BattleRoomJoinBusinessLog : ILogInvokerEx { private BattleRoomJoinSuccessLogInfo m_info; public BattleRoomJoinBusinessLog(string joinUserGuid, string joinUserNickname, string roomId, int joinRound) : base(LogDomainType.BattleRoomJoin) diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomPlayerDeadBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomPlayerDeadBusinessLog.cs similarity index 79% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomPlayerDeadBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomPlayerDeadBusinessLog.cs index dfd16eb..f5d5bd3 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoomPlayerDeadBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoomPlayerDeadBusinessLog.cs @@ -1,17 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - namespace GameServer; -public class BattleRoomPlayerDeadBusinessLog : ILogInvokerEx +public class BattleRoomPlayerDeadBusinessLog : ILogInvokerEx { private BattleRoomPlayerDeadLogInfo m_info; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoundUpdateBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoundUpdateBusinessLog.cs similarity index 71% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoundUpdateBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoundUpdateBusinessLog.cs index 535a4a6..51a7254 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleRoundUpdateBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleRoundUpdateBusinessLog.cs @@ -1,17 +1,9 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; +using ServerBase; using ServerCommon.BusinessLogDomain; -using MetaAssets; +namespace ServerCommon; -namespace GameServer; - -public class BattleRoundUpdateBusinessLog : ILogInvokerEx +public class BattleRoundUpdateBusinessLog : ILogInvokerEx { private BattleRoundingUpdateLogInfo m_info; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleSnapShotBusinessLog.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleSnapShotBusinessLog.cs similarity index 77% rename from GameServer/Contents/GameMode/Mode-Battle/Log/BattleSnapShotBusinessLog.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleSnapShotBusinessLog.cs index fe2c225..55a95d4 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Log/BattleSnapShotBusinessLog.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Log/BattleSnapShotBusinessLog.cs @@ -1,23 +1,19 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using GameServer.Contents.GameMode.Mode_Battle.Manage; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; +using ServerCore; +namespace GameServer.Contents.Battle.Log; -namespace GameServer; - -public class BattleSnapShotBusinessLog : ILogInvokerEx +public class BattleSnapShotBusinessLog : ILogInvokerEx { private BattleSnapshotLogInfo m_info; - public BattleSnapShotBusinessLog(BattleInstanceRoom battleInstanceRoom, string loadType): base(LogDomainType.BattleSnapshot) + public BattleSnapShotBusinessLog(GameModeTPSFreeForAll battleInstanceRoom, string loadType): base(LogDomainType.BattleSnapshot) { - m_info = createBattleSnapshotLogInfo(this, battleInstanceRoom, loadType); + //kihoon todo : GameModeTPSFreeForAll 이걸로 받을지 아니면 고칠지 고민 필요 + m_info = createBattleSnapshotLogInfo(this, battleInstanceRoom, loadType); } public override bool hasLog() @@ -31,9 +27,9 @@ public class BattleSnapShotBusinessLog : ILogInvokerEx - public BattleSnapshotLogInfo createBattleSnapshotLogInfo(ILogInvokerEx parent, BattleInstanceRoom battleInstanceRoom, string loadType) + public BattleSnapshotLogInfo createBattleSnapshotLogInfo(ILogInvoker parent, GameModeTPSFreeForAll battleInstanceRoom, string loadType) { - var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; + var room_id = battleInstanceRoom.getRoomId(); BattleSnapshotLogInfo info = new(parent, room_id, loadType); var attribute = battleInstanceRoom.getEntityAttribute(); @@ -43,7 +39,7 @@ public class BattleSnapShotBusinessLog : ILogInvokerEx return info; } - info.m_play_mode = battleInstanceRoom.m_play_mode; + //info.m_play_mode = battleInstanceRoom.m_play_mode; info.m_battle_instance_event_start_time = battleInstanceRoom.m_battle_instance_event_start_time; info.m_pod_combat_reward_group_id = battleInstanceRoom.m_pod_combat_reward_group_id; info.m_pod_combat_ffa_id = battleInstanceRoom.m_pod_combat_ffa_id; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceRoom.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAll.cs similarity index 58% rename from GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceRoom.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAll.cs index ad880e8..f4e0db4 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Entity/BattleInstanceRoom.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAll.cs @@ -1,79 +1,50 @@ using System.Collections.Concurrent; - - using Axion.Collections.Concurrent; +using GameServer.Contents.Battle.Log; +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; using Newtonsoft.Json; - - -using ServerCore; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - +using ServerCore; namespace GameServer; - -public class BattleInstanceRoom : EntityBase, IWithLogActor +public class GameModeTPSFreeForAll : GameModeTPS where T : ITPSMode { - //public string m_instance_room_guid { get; } = string.Empty; - public bool m_is_load_complete { get; private set; } = false; - public InstanceRoom m_instance_room { get; } - - private readonly CancellationTokenSource m_cancel_token = new(); - - public readonly IHostMigrator m_host_migrator; //생성자에서 모드에 맞춰서 할당한다. - - - public BattlePlayMode m_play_mode { get; set; } = BattlePlayMode.PodCombat; + T m_tps_mode_data; public DateTime m_battle_instance_event_start_time { get; private set; } = DateTimeHelper.Current; //실제 이벤트 시작시간 //public DateTime m_battle_instance_load_time { get; } = DateTimeHelper.Current; //이벤트 시작시간과 관계 없이 메모리에 로드 될때의 시간 이 변수가 필요할지 모르겠다. - - //todo : 모드별 관리 메타를 따로 구성해야할듯... - //todo : 제네릭으로 받아도 되려나?.. 고민 필요 우선 임시데이터 + + //kihoon todo : 이거 위치 수정해야됨 + //todo : 제네릭으로 받아도 되려나?.. 고민 필요 우선 임시데이터 public Int32 m_pod_combat_reward_group_id = 1; public Int32 m_pod_combat_ffa_id = 1; - public BattleFFAConfigData m_ffa_config_meta; + public BattleFFAConfigData m_ffa_config_meta; public Dictionary m_ffa_reward_meta = new(); public Int32 m_hot_time_reward = 1; public Int32 m_round_count = 8; - //public Int32 m_pickup_pod_reward_max_count { get; } = 2; - //public int m_max_step_per_round { get; set; } = 10; public ConcurrentHashSet m_respawn_pos_anchors_meta { get; private set; } = new(); //이건 랜덤 돌릴 일이 잦아서 그냥 들고 있는다... public ConcurrentDictionary> m_battle_pod_storage_guid_group { get; private set; } = new(); //pod combat을 생성해줄때 필요 public ConcurrentDictionary> m_battle_pickup_pod_guid_group { get; private set; } = new(); - - - public BattleInstanceRoom(InstanceRoom room, DateTime eventStartTime, Int32 configId, Int32 rewardId, Int32 hotTime, Int32 roundCount) - : base(EntityType.BattleInstance) + + public GameModeTPSFreeForAll(T tpsModeData, InstanceRoom instanceRoom) : base(EntityType.GameModeRunRace, instanceRoom) { - m_instance_room = room; - NullReferenceCheckHelper.throwIfNull(m_instance_room, () => $"m_instance_room is null !!!"); - - m_battle_instance_event_start_time = eventStartTime; - m_play_mode = BattlePlayMode.PodCombat; - - m_host_migrator = BattleRoomHelper.createHostMigrator(m_play_mode); - - m_pod_combat_ffa_id = configId; - m_pod_combat_reward_group_id = rewardId; - m_hot_time_reward = hotTime; - m_round_count = roundCount; - - //m_instance_room_guid = BattleConstant.PREFIX_BATTLE_TRANSACTION_GUID + System.Guid.NewGuid(); - - // BattleFFAConfigData + m_tps_mode_data = tpsModeData; + + + // kihoon todo : 이것도 위치 이동이 필요하다. if (false == MetaData.Instance._BattleFFAConfigMetaTable.TryGetValue(m_pod_combat_ffa_id, out var configData)) { var err_msg = $"Not exist Battle Conig Data id : {m_pod_combat_ffa_id}"; Log.getLogger().error(err_msg); NullReferenceCheckHelper.throwIfNull(configData, () => $"configData is null !!!"); } - m_ffa_config_meta = new BattleFFAConfigData(new BattleFFAConfigDataMutable() { Id = configData.Id, @@ -89,58 +60,107 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor CurrencyCount = configData.CurrencyCount, TPSGuideURL = configData.TPSGuideURL }); - - - if (false == MetaData.Instance._BattleFFARewardMetaTable.TryGetValue(m_pod_combat_reward_group_id, out var rewardMeta)) - { - var err_msg = $"Not exist reward Meta Data id : {m_pod_combat_ffa_id}"; - Log.getLogger().error(err_msg); - NullReferenceCheckHelper.throwIfNull(rewardMeta, () => $"rewardMeta is null !!!"); - } - - foreach (var meta_set in rewardMeta) - { - var val = meta_set.Value; - var key = meta_set.Key; - - BattleFFARewardData data = new BattleFFARewardData(new BattleFFARewardDataMutable() - { - Id = val.Id, - GroupID = val.GroupID, - ChargeLevel = val.ChargeLevel, - ChargeTime = val.ChargeTime, - RewardItemID = val.RewardItemID, - RewardCount = val.RewardCount - }); - - m_ffa_reward_meta.TryAdd(key, data); - } - Log.getLogger().info($"BattleInstanceRoom construct done roomId : " + - $"{room.getMap().m_room_id}, eventStartTime : {eventStartTime}, configId : {configId}, rewardId : {rewardId}, hotTime : {hotTime}, roundCount : {roundCount}"); } + + - - public async Task init() + public override async Task onInit() { - string err_msg = string.Empty; + Log.getLogger().debug("run race onInit called"); + + //제너릭 init + await m_tps_mode_data.initTPSMode(); + + + //레이스 모드에 필요한 액션 추가 + addFFAEntityAction(); + //게임 모드에 필요한 상수값 입력 + setDefaultMetaConstants(); + + await initBattleRoom(); + + + + //다 마무리 되면 부모 init 호출 + var result = await base.onInit(); + + Log.getLogger().debug("run race onInit done"); + + return result; + + + + + } + + private void addFFAEntityAction() + { + Log.getLogger().debug("FFA addEntityAction called"); + //Action 추가 + //kihoon todo : 이거 아래 걸로 일부 수정 필요 addEntityAction(new BattleInstanceAction(this)); addEntityAction(new BattleInstanceUpdateAction(this)); addEntityAction(new BattleObjectInteractAction(this)); addEntityAction(new BattleObjectRewardAction(this)); - - + + + addEntityAction(new FfaGameObjectPodStorageInteractAction(this)); + + //Attribute 추가 - addEntityAttribute(new BattleInstanceSnapshotAttribute(this)); + addEntityAttribute(new BattleInstanceSnapshotAttribute(this)); //ㅏkihoon todo : 이거 여기에 넣는게 맞나? + + Log.getLogger().debug("FFA addEntityAction done"); + } + public async Task initBattleRoom() + { + var result = new Result(); + + // instance 정보 추가 등록 + var server_logic = GameServerApp.getServerLogic(); + var instance_room_storage = new InstanceRoomStorage(); + instance_room_storage.Init(server_logic.getRedisDb(), ""); + + + + DateTime start_time = DateTimeHelper.Current; + Int32 config_id = 1; + Int32 reward_id = 1; + Int32 hot_time = 1; + Int32 round_count = 8; + var system_battle_event = BattleRoomHelper.getBattleRoomStartTimeByEventId(getRoomId()); + if (system_battle_event is null) + { + Log.getLogger().error($"system_battle_event is null!!! : {result.toBasicString()} - instanceRoomId:{getRoomId()}"); + } + else + { + start_time = system_battle_event.m_start_time; + config_id = system_battle_event.m_ffa_config_data_id; + reward_id = system_battle_event.m_ffa_reward_group_id; + hot_time = system_battle_event.m_ffa_hot_time; + round_count = system_battle_event.m_round_count; + } + + result = await instance_room_storage.setInstanceRoomExtraInfo(getRoomId(), EPlaceType.BattleRoom, start_time); //kihoon todo : 이거 나중에 GameRoom으로 바뀔때 문제 되니까 코드 바꿔야 된다. + if (result.isFail()) + { + Log.getLogger().error($"Failed to BattleRoom setInstanceRoomExtraInfo() !!! : {result.toBasicString()} - instanceRoomId:{getRoomId()}"); + return result; + } + //Anchor 정보 로드 loadAnchorPos(); - + //스냅샷 데이터 로드, 없으면 신규 생성 var battle_instance_action = getEntityAction(); NullReferenceCheckHelper.throwIfNull(battle_instance_action, () => $"battle_instance_action is null !!!"); - var result = await battle_instance_action.loadOrCreateSnapshot(); + + var err_msg = string.Empty; + result = await battle_instance_action.loadOrCreateSnapshot(); if (result.isFail()) { err_msg = $"loadSnapshot error instanceId : {m_instance_room.getInstanceId()}, roomId : {m_instance_room.getMap().m_room_id}"; @@ -149,58 +169,11 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor } Log.getLogger().info($"load Snapshot done instanceId : {m_instance_room.getInstanceId()}, roomId : {m_instance_room.getMap().m_room_id}"); - //태스크 생성 - result = await createTask(); - if (result.isFail()) - { - err_msg = $"battle instance room onCreateTask error instanceId : {m_instance_room.getInstanceId()}, roomId : {m_instance_room.getMap().m_room_id}"; - Log.getLogger().error(err_msg); - return result; - } - Log.getLogger().info($"createTask done instanceId : {m_instance_room.getInstanceId()}, roomId : {m_instance_room.getMap().m_room_id}"); - - m_is_load_complete = true; - - // P2P Host Migrator p2p 그룹 id 설정 - m_host_migrator.setGroupHostId(m_instance_room.getMap().getP2PGroupId()); - return result; - } - - public override async Task onInit() - { + await Task.CompletedTask; - var result = new Result(); return result; } - - private async Task createTask() - { - var result = new Result(); - - //Timer에서 사용할 Action 초기화 - var battle_update_action = getEntityAction(); - NullReferenceCheckHelper.throwIfNull(battle_update_action, () => $"battle_update_action is null !!!"); - - try - { - //임시로 0.8초로 처리 나중에 이거 Meta로 빼야 된다. - new PeriodicTaskTimer( GetType().Name, BattleConstant.BATTLE_ROOM_CHECK_INTERVAL, m_cancel_token, onTaskTick); - - await battle_update_action.onInit(); - Log.getLogger().debug("battle_update_action.onInit() dome"); - } - catch(Exception e) - { - var err_msg = $"Exception !!!, new PeriodicTaskTimer() : exception:{e} - {toBasicString()}"; - result.setFail(ServerErrorCode.TryCatchException, err_msg); - return result; - } - - return result; - } - - private void loadAnchorPos() { foreach (var anchor_info_dict in m_instance_room.getMap().getAnchors()) @@ -218,15 +191,14 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor var table_id = anchor_info.AnchorProp.TableId; loadRespawnPos(type, anchor_guid); loadBattleObjectGroups(type, anchor_guid, table_id); - + } - } - + private void loadRespawnPos(string type, string anchorGuid) { if (!type.Equals(BattleConstant.RESPAWN_POS_ANCHOR_NAME)) return; - + if (false == m_respawn_pos_anchors_meta.Add(anchorGuid)) { Log.getLogger().warn($"respawnPos add fail type : {type}, anchorGuid : {anchorGuid}"); @@ -234,28 +206,10 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor Log.getLogger().info($"respawnPos add success type : {type}, anchorGuid : {anchorGuid}"); } - // private void loadBattleObject(string type, string anchorGuid) - // { - // if (!type.Equals(BattleConstant.BATTLE_OBJECT_ANCHOR_NAME)) return; - // - // if (false == m_battle_object_anchors_meta.Add(anchorGuid)) - // { - // Log.getLogger().warn($"m_battle_object_anchors add fail type : {type}, anchorGuid : {anchorGuid}"); - // } - // Log.getLogger().info($"m_battle_object_anchors add success type : {type}, anchorGuid : {anchorGuid}"); - // } - private bool loadBattleObjectGroups(string type, string anchorGuid, Int32 tableID) { if (!type.Equals(BattleConstant.BATTLE_OBJECT_GROUP_ANCHOR_NAME)) return true; - // if (false == m_battle_object_group_anchors_meta.Add(anchorGuid)) - // { - // Log.getLogger().warn($"m_battle_object_group_anchors add fail type : {type}, anchorGuid : {anchorGuid}"); - // } - // Log.getLogger().info($"m_battle_object_group_anchors add success type : {type}, anchorGuid : {anchorGuid}"); - - if (false == MetaData.Instance._BattleObjectSpawnGroupMetaTable.TryGetValue(tableID, out var battle_object_spawn_meta)) { Log.getLogger().warn($"battle_object_group add fail type : {type}, anchorGuid : {anchorGuid}, table_id : {tableID}"); @@ -283,7 +237,6 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor return true; } - private void loadBattleObjectPodStorageGroup(string anchorGuid, int groupId) { if (false == m_battle_pod_storage_guid_group.ContainsKey(groupId)) @@ -297,7 +250,7 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor return; } poses.Add(anchorGuid); - + Log.getLogger().info($"m_battle_pod_stand_group_pos_meta Add anchorGuid : {anchorGuid}, group_id : {groupId}"); } @@ -313,52 +266,41 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor return; } poses.Add(anchorGuid); - + Log.getLogger().info($"m_battle_pod_box_group_pos_meta Add anchorGuid : {anchorGuid}, group_id : {groupId}"); } - - public Result AddOrUpdatePlayer(Player player) + + public void setEventStartTime(DateTime t) { - var result = new Result(); - // if (false == m_battle_players.TryAdd(player.getUserGuid(), new BattlePlayer(player))) - // { - // string err_msg = $"Player tryAdd fail guid : {player.getUserGuid()}"; - // result.setFail(ServerErrorCode.BattleInstanceJoinPlayerError, err_msg); - // Log.getLogger().error(result.toBasicString()); - // return result; - // } - - return result; + m_battle_instance_event_start_time = t; } - - private async Task onTaskTick() + private void setDefaultMetaConstants() { - if (!m_is_load_complete) return; + m_ticker_interval_msecs = GameModeConstants.GAME_MODE_TPS_FFA_CHECK_INTERVAL_MSECS; //이것도 위로 올릴수 있을것 같은데?? + } + public override async Task taskUpdate() + { + //여기에 타이머 처리 해야된다. var battle_update_action = getEntityAction(); NullReferenceCheckHelper.throwIfNull(battle_update_action, () => $"battle_update_action is null !!!"); - - + var result = await battle_update_action.update(); if (result.isFail()) { var err_msg = $"playr mode hander update error : {result.toBasicString()}"; Log.getLogger().error(err_msg); } - + await Task.CompletedTask; } - - public ILogActor toLogActor() + + public override string toBasicString() { - var server_logic = GameServerApp.getServerLogic(); - var region_id = server_logic.getServerConfig().getRegionId(); - var server_name = server_logic.getServerName(); - - var log_info = new BattleInstanceActorLog(region_id, server_name, m_instance_room.getMap().m_room_id, m_instance_room.getInstanceId()); - return log_info; - } - + var basic_string = base.toBasicString() + $"GameModeTPSFreeForAll...."; + return basic_string; + } + public async Task removePodCombat(Player player) { var attribute = getEntityAttribute(); @@ -370,47 +312,23 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor { attribute.m_combat_pod_mode.m_pod_combat.changeDropState(player.getCurrentPositionInfo().Pos); } - BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(this); + + var ffa = this as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + + BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(ffa); //kihoon todo : 이거 코드 이상하다... 수정해야된다. } } - - public void removeBattlePlayerIfExist(string userGuid) - { - // if (true == m_battle_players.ContainsKey(userGuid)) - // { - // if (false == m_battle_players.TryRemove(userGuid, out var player)) - // { - // Log.getLogger().warn($"m_battle_players try remove faial userGuid : {userGuid}"); - // } - // } - } - - public async Task LeaveBattleRoom(Player player, string roomId, bool disconnected = false) - { - //BattleRoom에서 먼저 빼준다. - //m_battle_players.TryRemove(player.getUserGuid(), out _); - - Log.getLogger().info($"LeaveBattleRoom, player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); - await m_instance_room.LeaveBattleInstanceRoom(player, disconnected); - - if (m_instance_room.isDestroy) - { - Log.getLogger().info($"m_instance_room.isDestroy, so destroyBattleRoom : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); - await destroyBattleRoom(); - InstanceRoomManager.Instance.DestroyRoom(roomId); - Log.getLogger().info($"destroy InstanceRoomManager room Player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); - } - - return true; - } - + public async Task destroyBattleRoom() { await Task.CompletedTask; - + //여기서 timer 종료 처리 - m_cancel_token.Cancel(); + var entity_ticker = getEntityTicker(); + if(entity_ticker is not null) entity_ticker.getCancelToken().Cancel(); + Log.getLogger().debug($"battle instance room token canceled m_room_id :{m_instance_room.getMap().m_room_id}"); var fn_save_battle_instance = async delegate() @@ -419,7 +337,7 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor var fn_result = new Result(); using (var releaser = await getAsyncLock()) { - //여기서 battleRoomSnapshot 저장 + //여기서 battleRoomSnapshot 저장 var battle_instance_snapshot_attribute = getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(battle_instance_snapshot_attribute, () => $"battle_instance_snapshot_attribute is null !!!"); if (!battle_instance_snapshot_attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid.Equals(string.Empty)) @@ -428,15 +346,18 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor } battle_instance_snapshot_attribute.modifiedEntityAttribute(true); - + var batch = new QueryBatchEx(this, LogActionType.BattleInstanceSnapshotSave, server_logic.getDynamoDbClient(), true); { batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); } - - BattleSnapShotBusinessLog business_log = new(this, ""); + + var ffa = this as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + + BattleSnapShotBusinessLog business_log = new(ffa, ""); batch.appendBusinessLog(business_log); - + fn_result = await QueryHelper.sendQueryAndBusinessLog(batch); if (fn_result.isSuccess()) @@ -456,19 +377,8 @@ public class BattleInstanceRoom : EntityBase, IWithLogActor var err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {toBasicString()}"; Log.getLogger().error(err_msg); } - - - + + + } - - public override string toBasicString() - { - return $"BattleInstanceRoom room_id : {m_instance_room.getMap().m_room_id}"; - } - - - public void setEventStartTime(DateTime t) - { - m_battle_instance_event_start_time = t; - } -} +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAllData.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAllData.cs new file mode 100644 index 0000000..cc32182 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/GameModeTPSFreeForAllData.cs @@ -0,0 +1,12 @@ +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class GameModeTPSFreeForAllData : ITPSMode +{ + public async Task initTPSMode() + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllDestroyHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllDestroyHandler.cs new file mode 100644 index 0000000..fc6a67f --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllDestroyHandler.cs @@ -0,0 +1,76 @@ +using GameServer.Contents.Battle.Log; +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Newtonsoft.Json; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.ModeFreeForAll.Manage; + +public class TPSFreeForAllDestroyHandler : GameModeDestroyHandlerBase +{ + public TPSFreeForAllDestroyHandler(string roomId) : base(roomId, GameModeType.TPS_FFA) + { + + } + + + public override async Task postDestroy(IGameMode gameMode) + { + await Task.CompletedTask; + + Log.getLogger().debug($"tps ffa post destroy start roomId :{m_room_id}"); + + var game_mode_base = GameModeHelper.toGameModeBase(gameMode); + + var fn_save_battle_instance = async delegate() + { + var server_logic = GameServerApp.getServerLogic(); + var fn_result = new Result(); + + //여기서 battleRoomSnapshot 저장 + var battle_instance_snapshot_attribute = game_mode_base.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(battle_instance_snapshot_attribute, () => $"battle_instance_snapshot_attribute is null !!!"); + if (!battle_instance_snapshot_attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid.Equals(string.Empty)) + { + battle_instance_snapshot_attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid = string.Empty; + } + + battle_instance_snapshot_attribute.modifiedEntityAttribute(true); + + var batch = new QueryBatchEx(game_mode_base, LogActionType.BattleInstanceSnapshotSave, server_logic.getDynamoDbClient(), true); + { + batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); + } + + var ffa = game_mode_base as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!! - {game_mode_base.toBasicString()}"); + + + BattleSnapShotBusinessLog business_log = new(ffa, ""); + batch.appendBusinessLog(business_log); + + fn_result = await QueryHelper.sendQueryAndBusinessLog(batch); + + if (fn_result.isSuccess()) + { + Log.getLogger().info($"save battle instance snapshot done attribute : {JsonConvert.SerializeObject(battle_instance_snapshot_attribute)}"); + } + return fn_result; + }; + + + + var result = await game_mode_base.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "SaveBattleInstanceByDestroy", fn_save_battle_instance); + if (result.isFail()) + { + var err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {game_mode_base.toBasicString()}"; + Log.getLogger().error(err_msg); + } + + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllInitHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllInitHandler.cs new file mode 100644 index 0000000..7b269f9 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllInitHandler.cs @@ -0,0 +1,46 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSFreeForAllInitHandler : GameModeInitHandlerBase +{ + public TPSFreeForAllInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.TPS_FFA) + { + } + + public override Result gamedModeInstanceInitValidate() + { + var result = new Result(); + return result; + } + + // public override async Task gamedModeInstanceInit() + // { + // Log.getLogger().debug("tps ffa gamedModeInstanceInit called"); + // + // //await base.gamedModeInstanceInit(); //kihoon todo 이거 바꿔줘야 한다. .. + // + // + // + // var room_id = m_instance_room.getMap().m_room_id; + // var result = BattleInstanceManager.It.battleInstanceInit(m_instance_room, room_id).Result; //kihoon todo :이거 리팩토링 대상 + // if (result.isFail()) + // { + // Log.getLogger().error(result.toBasicString()); + // } + // + // //kihoon todo : 임시 코드 나중에 gameMode로 이동해야됨 + // //var battle_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + // //NullReferenceCheckHelper.throwIfNull(battle_room, () => $"battle_room is null !!"); + // + // //GameModeManager.It.tryAdd(room_id, battle_room); + // + // Log.getLogger().debug("tps ffa gamedModeInstanceInit done"); + // + // return result; + // } +} + + diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinHandler.cs new file mode 100644 index 0000000..42b2047 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinHandler.cs @@ -0,0 +1,48 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSFreeForAllJoinHandler : GameModeJoinHandlerBase +{ + public TPSFreeForAllJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.TPS_FFA) + { + + } + + public override Result gamedModeInstanceJoinValidate() + { + var result = new Result(); + return result; + } + + public override Result gamedModeInstanceJoin(Player player) + { + Log.getLogger().debug("tps ffa gamedModeInstanceJoin called"); + + var result = new Result(); + string err_msg = string.Empty; + + //instanceroom 정보는 남아있는데 battleinstance만 없어지는 케이스가 있어서 예외 처리를 위해 넣어놓음 + var room_id = m_instance_room.getMap().m_room_id; + + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); //kihoon todo : 이거 리팩토링 대상.... IGameMode에서 가져오는게 맞나?? 다른 모드 넣으면서 고민좀 해보자... + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + Log.getLogger().error($"Battle Room Instance is null.. so init start roomId : {room_id}"); + + //kihoon todo : 이거 코드 바꿔야 된다. + // result = Task.Run(() => BattleInstanceManager.It.battleInstanceInit(m_instance_room, room_id)).GetAwaiter().GetResult(); + // if (result.isFail()) + // { + // err_msg = $"BattleIntanceJoin init error, _roomId : {room_id}"; + // Log.getLogger().error(err_msg); + // return result; + // } + } + + Log.getLogger().debug("tps ffa gamedModeInstanceJoin done"); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinSuccessHandler.cs similarity index 52% rename from GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinSuccessHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinSuccessHandler.cs index 18ef8e3..9e360e5 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Manage/BattleInstanceJoinSuccessHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllJoinSuccessHandler.cs @@ -1,58 +1,68 @@ - - -using ServerCore; +using GameServer.Contents.GameMode.Manage; +using GameServer.Contents.GameMode.Manage.PlayManage; using ServerBase; using ServerCommon; +using ServerCore; +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; -namespace GameServer; - -public class BattleInstanceJoinSuccessHandler : GameModeJoinSuccessHandlerBase +public class TPSFreeForAllJoinSuccessHandler : GameModeJoinSuccessHandlerBase { - private readonly BattleInstanceRoom m_battle_instance_room; - public BattleInstanceJoinSuccessHandler(Player player, InstanceRoom instanceRoom) - : base(player, EPlaceType.BattleRoom) + //private readonly BattleInstanceRoom m_battle_instance_room;//kihoon todo : 이거 GameMode 로 변경해야 한다... .. + private IGameMode m_game_mode; + public TPSFreeForAllJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, GameModeType.TPS_FFA, instanceRoom) { var room_id = instanceRoom.getMap().m_room_id; - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"m_battle_instance_room is null !!!"); + //m_battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id)!; + //NullReferenceCheckHelper.throwIfNull(m_battle_instance_room, () => $"m_battle_instance_room is null !!!"); - m_battle_instance_room = battle_instance_room; + GameModeManager.It.tryGetGameMode(room_id, out var gameMode); + NullReferenceCheckHelper.throwIfNull(gameMode, () => $"gameMode is null !!!"); + m_game_mode = gameMode; + + + //m_battle_instance_room = battle_instance_room; } public override Result joinSuccessValidate() { - var result = BattleRoomHelper.checkBattleActive(m_place_type); - if (result.isFail()) return result; + var result = new Result(); + + return result; + } public override async Task joinSuccessConfirmation() { var result = new Result(); string err_msg = string.Empty; - - var room_id = m_battle_instance_room.m_instance_room.getMap().m_room_id; - var battle_instance_attribute = m_battle_instance_room.getEntityAttribute(); + + var ffa = m_game_mode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + + + var room_id = ffa.getRoomId(); + var battle_instance_attribute = ffa.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(battle_instance_attribute, () => $"battle_instance_attribute is null !!!"); - (result, var pos_meta_guid) = BattleRoomHelper.getRandomRespawnPos(battle_instance_attribute, m_battle_instance_room); + (result, var pos_meta_guid) = BattleRoomHelper.getRandomRespawnPos(battle_instance_attribute, ffa); if (result.isFail()) { return result; } - if (false == m_battle_instance_room.m_respawn_pos_anchors_meta.Contains(pos_meta_guid)) + if (false == ffa.m_respawn_pos_anchors_meta.Contains(pos_meta_guid)) { err_msg = $"respawn pos meta not exist idx : {pos_meta_guid}"; result.setFail(ServerErrorCode.BattleInstanceUsableSpawnPointNotExist, err_msg); return result; } - using (var releaser = await m_battle_instance_room.getAsyncLock()) + using (var releaser = await ffa.getAsyncLock()) { var now = DateTimeHelper.Current; - var next_respawn_time = now.AddSeconds(m_battle_instance_room.m_ffa_config_meta.PlayerRespawnTime); + var next_respawn_time = now.AddSeconds(ffa.m_ffa_config_meta.PlayerRespawnTime); battle_instance_attribute.m_combat_pod_mode.m_respawns.AddOrUpdate(pos_meta_guid, next_respawn_time, (key, old) => next_respawn_time); @@ -61,7 +71,7 @@ public class BattleInstanceJoinSuccessHandler : GameModeJoinSuccessHandlerBase var currenct_pos = location_action.getCurrentPos(); - if (false == m_battle_instance_room.m_instance_room.getMap().getAnchors().TryGetValue(pos_meta_guid, out var anchorInfo)) + if (false == ffa.getInstanceRoom().getMap().getAnchors().TryGetValue(pos_meta_guid, out var anchorInfo)) { err_msg = $"anchorInfo not exist idx : {pos_meta_guid}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); @@ -80,7 +90,9 @@ public class BattleInstanceJoinSuccessHandler : GameModeJoinSuccessHandlerBase { var result = new Result(); m_player.send_S2C_NTF_SET_LOCATION(); - result = await BattleInstanceManager.It.sendNtfAboutBattleInstance(m_battle_instance_room, m_player); + var ffa = m_game_mode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + result = await BattleInstanceManager.It.sendNtfAboutBattleInstance(ffa, m_player); if (result.isFail()) return result; return result; } @@ -88,16 +100,21 @@ public class BattleInstanceJoinSuccessHandler : GameModeJoinSuccessHandlerBase public override void joinSuccessWriteLog() { - var room_id = m_battle_instance_room.m_instance_room.getMap().m_room_id; + var ffa = m_game_mode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + + var room_id = ffa.getRoomId(); var user_guid = m_player.getUserGuid(); var user_nickname = m_player.getUserNickname(); - var battle_instance_attribute = m_battle_instance_room.getEntityAttribute(); + + + var battle_instance_attribute = ffa.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(battle_instance_attribute, () => $"battle_instance_attribute is null !!!"); var currenct_round = battle_instance_attribute.m_combat_pod_mode.m_current_round; - var log_action = new LogActionEx(LogActionType.BattleInstanceJoin); + var log_action = new LogAction(LogActionType.BattleInstanceJoin.ToString()); var invoker = new BattleRoomJoinBusinessLog(user_guid, user_nickname, room_id, currenct_round); BusinessLogger.collectLogs(log_action, m_player, new List(){invoker}); } diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllLeaveHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllLeaveHandler.cs new file mode 100644 index 0000000..734068b --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Manage/TPSFreeForAllLeaveHandler.cs @@ -0,0 +1,47 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.ModeFreeForAll.Manage; + +public class TPSFreeForAllLeaveHandler : GameModeLeaveHandlerBase +{ + public TPSFreeForAllLeaveHandler(Player player, string roomId) : base(player, roomId, GameModeType.TPS_FFA) + { + + } + + + public override async Task postLeave(IGameMode gameMode) + { + Log.getLogger().debug($"ffa postLeave start instanceRoomId : {m_room_id}"); + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"location ffa is null !!! - {m_player.toBasicString()}"); + + await ffa.removePodCombat(m_player); + + return new Result(); + } + + public override async Task notifyAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } + + public override async Task logAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattleObjectInteractionPacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattleObjectInteractionPacketHandler.cs similarity index 82% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattleObjectInteractionPacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattleObjectInteractionPacketHandler.cs index e95aa0c..2a1fe44 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattleObjectInteractionPacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattleObjectInteractionPacketHandler.cs @@ -1,11 +1,10 @@ -using Google.Protobuf; - - -using ServerCore; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Google.Protobuf; +using MetaAssets; using ServerBase; using ServerCommon; -using MetaAssets; - +using ServerCore; namespace GameServer.PacketHandler; @@ -25,17 +24,17 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler var player = session as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); - var server_config = server_logic.getServerConfig(); - bool is_battle_system_active = server_config.BattleSystemEnable; - - if (false == is_battle_system_active) - { - err_msg = $"is_battle_system_active is false!!!"; - result.setFail(ServerErrorCode.BattleInstanceInActive, err_msg); - Log.getLogger().error(err_msg); - send_S2C_ACK_BATTLE_OBJECT_INTERACTION(player, result, ""); - return result; - } + //var server_config = server_logic.getServerConfig(); + // bool is_battle_system_active = server_config.BattleSystemEnable; + // + // if (false == is_battle_system_active) + // { + // err_msg = $"is_battle_system_active is false!!!"; + // result.setFail(ServerErrorCode.BattleInstanceInActive, err_msg); + // Log.getLogger().error(err_msg); + // send_S2C_ACK_BATTLE_OBJECT_INTERACTION(player, result, ""); + // return result; + // } var req_msg = recvMessage as ClientToGame; ArgumentNullReferenceCheckHelper.throwIfNull(req_msg, () => $"req_msg is null !!! - {player.toBasicString()}"); @@ -55,8 +54,7 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler var packet_create_time = request.PacketCreateTime; var room_id = player.getCurrentInstanceRoomId(); - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room == null) + if(false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) { err_msg = $"battle_instance_room is null : room_id - {room_id}"; Log.getLogger().error(err_msg); @@ -64,8 +62,21 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler send_S2C_ACK_BATTLE_OBJECT_INTERACTION(player, result, anchor_guid); return result; } + - var attribute = battle_instance_room.getEntityAttribute(); + // var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + // if (battle_instance_room == null) + // { + // err_msg = $"battle_instance_room is null : room_id - {room_id}"; + // Log.getLogger().error(err_msg); + // result.setFail(ServerErrorCode.BattleInstanceInfoNotExist, err_msg); + // send_S2C_ACK_BATTLE_OBJECT_INTERACTION(player, result, anchor_guid); + // return result; + // } + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); + + var attribute = game_mode_base.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); if (packet_create_time is not null) @@ -78,9 +89,9 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler CommonResult common_result = new(); var fn_interact_battle_object = async delegate() { - using (var releaser = await battle_instance_room.getAsyncLock()) + using (var releaser = await game_mode_base.getAsyncLock()) { - result = await interactObject(handler, battle_instance_room, anchor_guid, player); + result = await interactObject(handler, game_mode_base, anchor_guid, player); if (result.isFail()) return result; //batch 처리 @@ -114,20 +125,22 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler return result; } - - //순서 바꾸지 말것(클라 요청사항) send_S2C_ACK_BATTLE_OBJECT_INTERACTION(player, result, anchor_guid); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION(battle_instance_room, player.getUserGuid(), anchor_guid); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(battle_instance_room, handler); - sendOtherNotifies(handler, battle_instance_room, common_result); + var ffa = game_mode_base as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!! - {player.toBasicString()}"); + + BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION(ffa, player.getUserGuid(), anchor_guid); + BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(ffa, handler); + + sendOtherNotifies(handler, ffa, common_result); return result; } - private void sendOtherNotifies(BattleObjectInteractionLogicHandler handler, BattleInstanceRoom battleInstanceRoom, CommonResult commonResult) + private void sendOtherNotifies(BattleObjectInteractionLogicHandler handler, GameModeTPSFreeForAll battleInstanceRoom, CommonResult commonResult) { //pod combat이 활성화 되서 stand는 전부 비활성화 if (handler.m_need_noti_objects.Count > 0) @@ -156,7 +169,7 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_REWARD(battleInstanceRoom, handler.m_user_guid, commonResult); } - public async Task interactObject(BattleObjectInteractionLogicHandler handler, BattleInstanceRoom battleInstanceRoom, string anchorGuid, Player player) + public async Task interactObject(BattleObjectInteractionLogicHandler handler, GameModeBase battleInstanceRoom, string anchorGuid, Player player) { var attribute = battleInstanceRoom.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); @@ -181,7 +194,7 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler return result; } - public async Task interactBattleObject(BattleObjectInteractionLogicHandler handler, BattleInstanceRoom battleInstanceRoom, string anchorGuid, Player player) + public async Task interactBattleObject(BattleObjectInteractionLogicHandler handler, GameModeBase battleInstanceRoom, string anchorGuid, Player player) { var result = new Result(); string err_msg = string.Empty; @@ -238,7 +251,7 @@ public class BattleObjectInteractionPacketHandler : PacketRecvHandler } - public async Task interactPodCombat(BattleObjectInteractionLogicHandler handler, BattleInstanceRoom battleInstanceRoom, string anchorGuid, Player player) + public async Task interactPodCombat(BattleObjectInteractionLogicHandler handler, GameModeBase battleInstanceRoom, string anchorGuid, Player player) { await Task.CompletedTask; diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerDeadPacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerDeadPacketHandler.cs similarity index 85% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerDeadPacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerDeadPacketHandler.cs index f0f6023..8807f59 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerDeadPacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerDeadPacketHandler.cs @@ -1,17 +1,7 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using GameServer.Contents.GameMode.Mode_Battle.Manage; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -using static ClientToGameReq.Types; -using static ClientToGameRes.Types; - +using ServerCore; namespace GameServer.PacketHandler; @@ -42,8 +32,9 @@ public class BattlePlayerDeadPacketHandler : PacketRecvHandler return result; } var room_id = player.getCurrentInstanceRoomId(); - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room == null) + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) { err_msg = $"battle_instance_room is null : room_id - {room_id}"; Log.getLogger().error(err_msg); @@ -72,22 +63,24 @@ public class BattlePlayerDeadPacketHandler : PacketRecvHandler { Log.getLogger().info($"Player Deat packet received room_id : {room_id}, anchor_guid : {killer_guid}, packetCreateTime : {packet_create_time}, player : {player.toBasicString()}"); } - - result = await playerDeadProcess(player, killer_guid, battle_instance_room); + + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + result = await playerDeadProcess(player, killer_guid, ffa); if (result.isFail()) return result; - await killUserQuestCheck(killer_guid, battle_instance_room); + await killUserQuestCheck(killer_guid, ffa); return result; } - public async Task killUserQuestCheck(string killerGuid, BattleInstanceRoom battleInstanceRoom) + public async Task killUserQuestCheck(string killerGuid, GameModeTPSFreeForAll battleInstanceRoom) { - battleInstanceRoom.m_instance_room.tryGetInstanceMember(killerGuid, out var killer); + battleInstanceRoom.getInstanceRoom().tryGetInstanceMember(killerGuid, out var killer); if (killer is null) { - Log.getLogger().warn($"killer User not exist instance killerGuid : {killerGuid}, roomId :{battleInstanceRoom.m_instance_room.getMap().m_room_id} "); + Log.getLogger().warn($"killer User not exist instance killerGuid : {killerGuid}, roomId :{battleInstanceRoom.getRoomId()} "); return; } @@ -95,7 +88,7 @@ public class BattlePlayerDeadPacketHandler : PacketRecvHandler NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); if (false == attribute.m_combat_pod_mode.m_tactical_board.TryGetValue(killerGuid, out var boradInfo)) { - Log.getLogger().warn($"killer User not exist m_tactical_board killerGuid : {killerGuid}, roomId :{battleInstanceRoom.m_instance_room.getMap().m_room_id} "); + Log.getLogger().warn($"killer User not exist m_tactical_board killerGuid : {killerGuid}, roomId :{battleInstanceRoom.getRoomId()} "); return; } @@ -103,7 +96,7 @@ public class BattlePlayerDeadPacketHandler : PacketRecvHandler await QuestManager.It.QuestCheck(killer, new QuestTpsPlayerKill(EQuestEventTargetType.TPS, EQuestEventNameType.PLAYERKILL, kill_count)); } - public async Task playerDeadProcess(Player player, string kilerUserGuid, BattleInstanceRoom battleInstanceRoom) + public async Task playerDeadProcess(Player player, string kilerUserGuid, GameModeTPSFreeForAll battleInstanceRoom) { var dead_user_guid = player.getUserGuid(); var dead_user_nickname = player.getUserNickname(); @@ -137,16 +130,16 @@ public class BattlePlayerDeadPacketHandler : PacketRecvHandler BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(battleInstanceRoom); } - battleInstanceRoom.m_instance_room.tryGetInstanceMember(kilerUserGuid, out var killer_player); + battleInstanceRoom.getInstanceRoom().tryGetInstanceMember(kilerUserGuid, out var killer_player); string killer_nickname = string.Empty; if (killer_player is not null) { killer_nickname = killer_player.getUserNickname(); } - var log_action = new LogActionEx(LogActionType.BattleUserDead); + var log_action = new LogAction(LogActionType.BattleUserDead.ToString()); var invoker = new BattleRoomPlayerDeadBusinessLog(dead_user_guid, dead_user_nickname, kilerUserGuid, killer_nickname - , battleInstanceRoom.m_instance_room.getMap().m_room_id, attribute.m_combat_pod_mode.m_current_round, need_pod_combat_drop_noti); + , battleInstanceRoom.getRoomId(), attribute.m_combat_pod_mode.m_current_round, need_pod_combat_drop_noti); BusinessLogger.collectLogs(log_action, player, new List(){invoker}); return fn_result; diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerRespawnPacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerRespawnPacketHandler.cs similarity index 78% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerRespawnPacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerRespawnPacketHandler.cs index a49a826..6e34612 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/BattlePlayerRespawnPacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/BattlePlayerRespawnPacketHandler.cs @@ -1,17 +1,9 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using GameServer.Contents.Battle.Log; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Battle.Manage; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -using static ClientToGameReq.Types; -using static ClientToGameRes.Types; - +using ServerCore; namespace GameServer.PacketHandler; @@ -43,10 +35,11 @@ public class BattlePlayerRespawnPacketHandler : PacketRecvHandler } var room_id = player.getCurrentInstanceRoomId(); - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room == null) + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) { - err_msg = $"battle_instance_room is null : room_id - {room_id}"; + err_msg = $"gameMode is null : room_id - {room_id}"; Log.getLogger().error(err_msg); result.setFail(ServerErrorCode.BattleInstanceInfoNotExist, err_msg); send_S2C_ACK_BATTLE_PLAYER_RESPAWN(player, null, result); @@ -71,24 +64,28 @@ public class BattlePlayerRespawnPacketHandler : PacketRecvHandler { Log.getLogger().info($"Battle Player respawn packet received packetCreateTime : {packet_create_time}, player : {player.toBasicString()}"); } - - + + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); AnchorInfo? anchor_info = null; - var attribute = battle_instance_room.getEntityAttribute(); + var attribute = game_mode_base.getEntityAttribute(); var next_respawn_time = DateTimeHelper.Current; NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); - using (var releaser = await battle_instance_room.getAsyncLock()) + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); + + using (var releaser = await game_mode_base.getAsyncLock()) { - (result, var pos_meta_guid) = BattleRoomHelper.getRandomRespawnPos(attribute, battle_instance_room); + (result, var pos_meta_guid) = BattleRoomHelper.getRandomRespawnPos(attribute, ffa); if (result.isFail()) { send_S2C_ACK_BATTLE_PLAYER_RESPAWN(player, null, result); return result; } - if (false == battle_instance_room.m_respawn_pos_anchors_meta.Contains(pos_meta_guid)) + if (false == ffa.m_respawn_pos_anchors_meta.Contains(pos_meta_guid)) { err_msg = $"respawn pos meta not exist pos_meta_guid : {pos_meta_guid}"; result.setFail(ServerErrorCode.BattleInstanceUsableSpawnPointNotExist, err_msg); @@ -97,12 +94,12 @@ public class BattlePlayerRespawnPacketHandler : PacketRecvHandler } var now = DateTimeHelper.Current; - next_respawn_time = now.AddSeconds(battle_instance_room.m_ffa_config_meta.PlayerRespawnTime); + next_respawn_time = now.AddSeconds(ffa.m_ffa_config_meta.PlayerRespawnTime); attribute.m_combat_pod_mode.m_respawns.AddOrUpdate(pos_meta_guid, next_respawn_time, (key, old) => next_respawn_time); attribute.modifiedEntityAttribute(true); - if (false == battle_instance_room.m_instance_room.getMap().m_anchors.TryGetValue(pos_meta_guid, out var anchorInfo)) + if (false == game_mode_base.getInstanceRoom().getMap().m_anchors.TryGetValue(pos_meta_guid, out var anchorInfo)) { err_msg = $"anchorInfo not exist pos_meta_guid : {pos_meta_guid}"; result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg); @@ -117,15 +114,15 @@ public class BattlePlayerRespawnPacketHandler : PacketRecvHandler cloned_anchor_pos.Z += 100; send_S2C_ACK_BATTLE_PLAYER_RESPAWN(player, cloned_anchor_pos, result); - BattleRoomNotifyHelper.send_GS2C_NTF_PLAYER_RESPAWN(battle_instance_room, cloned_anchor_pos, player); + BattleRoomNotifyHelper.send_GS2C_NTF_PLAYER_RESPAWN(ffa, cloned_anchor_pos, player); //로그 남긴다. var invokers = new List(); - var log_action = new LogActionEx(LogActionType.BattleUserRespawn); + var log_action = new LogAction(LogActionType.BattleUserRespawn.ToString()); var round = attribute.m_combat_pod_mode.m_current_round; var round_state = attribute.m_combat_pod_mode.m_round_state_type; - var users = battle_instance_room.m_instance_room.tryGetInstanceExistUserForLog(); + var users = ffa.getInstanceRoom().tryGetInstanceExistUserForLog(); BattleRespawnBusinessLog business_log = new(room_id, round, round_state, player.getUserGuid(), player.getUserNickname(), anchor_info.AnchorGuid, next_respawn_time); invokers.Add(business_log); BusinessLogger.collectLogs(log_action, player, invokers); diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/JoinBattleInstancePacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/JoinBattleInstancePacketHandler.cs similarity index 97% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/JoinBattleInstancePacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/JoinBattleInstancePacketHandler.cs index 47b157d..daba38e 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/JoinBattleInstancePacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/JoinBattleInstancePacketHandler.cs @@ -1,17 +1,8 @@ -using Google.Protobuf; + using Google.Protobuf.WellKnownTypes; - - -using ServerCore; using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -using static ClientToGameReq.Types; -using static ClientToGameRes.Types; - +using ServerCore; namespace GameServer.PacketHandler; @@ -120,7 +111,7 @@ public class JoinBattleInstancePacketHandler : PacketRecvHandler return result; } - var batch = new QueryBatchEx(player, LogActionType.JoinInstance, server_logic.getDynamoDbClient(), true); + var batch = new QueryBatch(player, LogActionType.JoinInstance.ToString(), server_logic.getDynamoDbClient(), true); { batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); batch.addQuery(new QueryFinal()); diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/LeaveBattleInstancePacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/LeaveBattleInstancePacketHandler.cs similarity index 95% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/LeaveBattleInstancePacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/LeaveBattleInstancePacketHandler.cs index 14a2b47..739c91a 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/LeaveBattleInstancePacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/LeaveBattleInstancePacketHandler.cs @@ -1,18 +1,10 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using MetaAssets; using Newtonsoft.Json; - - -using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -using static ClientToGameReq.Types; -using static ClientToGameRes.Types; - +using ServerCore; namespace GameServer.PacketHandler; @@ -167,8 +159,9 @@ public class LeaveBattleInstancePacketHandler : PacketRecvHandler return result; } - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(instance_room_Id); - if (battle_instance_room is null) + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(instance_room_Id); + + if (false == GameModeManager.It.tryGetGameMode(instance_room_Id, out var gameMode)) { err_msg = $"battle_instance_room not esist instance_room_Id : {instance_room_Id}, player : {player.toBasicString()}"; result.setFail(ServerErrorCode.BattleInstanceInfoNotExist, err_msg); @@ -176,7 +169,10 @@ public class LeaveBattleInstancePacketHandler : PacketRecvHandler return result; } - var battle_instance_room_attribute = battle_instance_room.getEntityAttribute(); + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!! - {player.toBasicString()}"); + + var battle_instance_room_attribute = ffa.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(battle_instance_room_attribute, () => $"battle_instance_room_attribute is null !!! - {player.toBasicString()}"); // 2. move to channel diff --git a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs similarity index 83% rename from GameServer/Contents/GameMode/Mode-Battle/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs index a95ba15..7107bb2 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/PacketHandler/PreparationForLeavingBattleInstancePacketHandler.cs @@ -1,15 +1,7 @@ -using Nettention.Proud; -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; +using GameServer.Contents.GameMode.Mode_Battle.Manage; +using Nettention.Proud; using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - +using ServerCore; namespace GameServer.PacketHandler; @@ -61,8 +53,8 @@ public class PreparationForLeavingBattleInstancePacketHandler : PacketRecvHandle var room_id = player.getCurrentInstanceRoomId(); - var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); - if (battle_instance_room == null) + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) { err_msg = $"battle_instance_room is null : room_id - {room_id}"; Log.getLogger().error(err_msg); @@ -72,14 +64,15 @@ public class PreparationForLeavingBattleInstancePacketHandler : PacketRecvHandle } var user_guid = player.getUserGuid(); - + var ffa = gameMode as GameModeTPSFreeForAll; + NullReferenceCheckHelper.throwIfNull(ffa, () => $"ffa is null !!!"); var fn_preparation_for_leaving = async delegate() { bool need_pod_combat_drop_noti = false; - using (var releaser = await battle_instance_room.getAsyncLock()) + using (var releaser = await ffa.getAsyncLock()) { - var attribute = battle_instance_room.getEntityAttribute(); + var attribute = ffa.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); var current_owner_guid = attribute.m_combat_pod_mode.m_pod_combat.m_current_occupier_guid; need_pod_combat_drop_noti = user_guid.Equals(current_owner_guid); @@ -92,20 +85,20 @@ public class PreparationForLeavingBattleInstancePacketHandler : PacketRecvHandle } send_S2C_ACK_PREPARE_FOR_LEAVING_BATTLE_INSTANCE(player, result); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(battle_instance_room, user_guid); + BattleRoomNotifyHelper.broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(ffa, user_guid); if (need_pod_combat_drop_noti) { - BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(battle_instance_room); + BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(ffa); } - var host_guid = battle_instance_room.m_host_migrator.getHostUserGuid(); + var host_guid = ffa.m_host_migrator.getHostUserGuid(); if (user_guid.Equals(host_guid)) { var hosts = new List(); hosts.Add(player.getHostId()); - var p2p_group_id = battle_instance_room.m_instance_room.getMap().getP2PGroupId(); - var define_result = battle_instance_room.m_host_migrator.defineHost(p2p_group_id, new SuperPeerSelectionPolicy(), hosts.ToArray()); + var p2p_group_id = ffa.getInstanceRoom().getMap().getP2PGroupId(); + var define_result = ffa.m_host_migrator.defineHost(p2p_group_id, new SuperPeerSelectionPolicy(), hosts.ToArray()); if (define_result.isFail()) { Log.getLogger().warn(define_result.toBasicString()); @@ -113,8 +106,8 @@ public class PreparationForLeavingBattleInstancePacketHandler : PacketRecvHandle return result; } - var new_host_user_guid = battle_instance_room.m_host_migrator.getHostUserGuid(); - BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battle_instance_room.m_instance_room, new_host_user_guid); + var new_host_user_guid = ffa.m_host_migrator.getHostUserGuid(); + BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(ffa.getInstanceRoom(), new_host_user_guid); } return result; }; diff --git a/GameServer/Contents/GameMode/Mode-Battle/Redis/BattleInstanceRoomStorage.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Redis/BattleInstanceRoomStorage.cs similarity index 97% rename from GameServer/Contents/GameMode/Mode-Battle/Redis/BattleInstanceRoomStorage.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Redis/BattleInstanceRoomStorage.cs index 43c5c67..d605d21 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Redis/BattleInstanceRoomStorage.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Redis/BattleInstanceRoomStorage.cs @@ -2,25 +2,13 @@ using MetaAssets; using Newtonsoft.Json; using ServerControlCenter; -using ServerCore; using ServerBase; +using ServerCore; using StackExchange.Redis; using System.Numerics; +using ServerBase; namespace ServerCommon; - // public class InstanceRoomInfo - // { - // public string roomId { get; set; } = string.Empty; - // public string InstanceAddress { get; set; } = string.Empty; - // public int InstancePort { get; set; } = 0; - // public int InstanceId { get; set; } = 0; - // public int UgcNpcCount { get; set; } = 0; - // public string MyhomeGuid { get; set; } = string.Empty; - // public EPlaceType InstancePlaceType { get; set; } = EPlaceType.NONE; - // public Timestamp InstanceStartTime { get; set; } = DateTimeHelper.MinTime.ToTimestamp(); - // } - - public class BattleInstanceRoomStorage { @@ -35,6 +23,7 @@ public class BattleInstanceRoomStorage public void Init(IDatabase redisDB, string keyPrefix) { _database = redisDB; + _roomKeyPrefix = keyPrefix; if (_roomKeyPrefix != string.Empty && !_roomKeyPrefix.EndsWith(":")) { diff --git a/GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPickupPod.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPickupPod.cs similarity index 100% rename from GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPickupPod.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPickupPod.cs diff --git a/GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPodCombat.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPodCombat.cs similarity index 77% rename from GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPodCombat.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPodCombat.cs index f5e2c2c..23b7cd7 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPodCombat.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPodCombat.cs @@ -1,15 +1,4 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; +namespace GameServer.Contents.Battle.Reward; public class RewardPodCombat : RewardBase { diff --git a/GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPodStorage.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPodStorage.cs similarity index 100% rename from GameServer/Contents/GameMode/Mode-Battle/Reward/RewardPodStorage.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Reward/RewardPodStorage.cs diff --git a/GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventCheckTicker.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventCheckTicker.cs similarity index 99% rename from GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventCheckTicker.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventCheckTicker.cs index de01601..14940e3 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventCheckTicker.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventCheckTicker.cs @@ -3,8 +3,9 @@ using System.Net; using GameServer.Contents.Battle.Doc; using MetaAssets; using Newtonsoft.Json; +using ServerBase; using ServerCommon; -using ServerCore; using ServerBase; +using ServerCore; namespace GameServer; @@ -20,8 +21,6 @@ public class BattleEventCheckTicker : EntityTicker public override async Task onTaskTick() { - if (false == BattleRoomHelper.checkBattleActive()) return; - var result = await refreshEvent(); if (result.isFail()) { diff --git a/GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventNotifyTicker.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventNotifyTicker.cs similarity index 82% rename from GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventNotifyTicker.cs rename to GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventNotifyTicker.cs index 4c227f7..64bf04f 100644 --- a/GameServer/Contents/GameMode/Mode-Battle/Tickers/BattleEventNotifyTicker.cs +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeFreeForAll/Tickers/BattleEventNotifyTicker.cs @@ -1,15 +1,8 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerBase; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; +using ServerCore; - -namespace GameServer; +namespace GameServer.Contents.Battle.Tickers; public class BattleEventNotifyTicker : EntityTicker { @@ -21,11 +14,7 @@ public class BattleEventNotifyTicker : EntityTicker public override async Task onTaskTick() { - if (false == BattleRoomHelper.checkBattleActive()) return; - - //필요한 Noti가 있다면 broadCast await notifyBattleEvent(); - } private async Task notifyBattleEvent() diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatch.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatch.cs new file mode 100644 index 0000000..48a8d7c --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatch.cs @@ -0,0 +1,19 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class GameModeTPSTeamDeathMatch : GameModeTPS where T : ITPSMode +{ + T m_tps_mode_data; + + public GameModeTPSTeamDeathMatch(T tpsModeData, InstanceRoom instanceRoom) : base(EntityType.GameModeTpsteamDeathMatch, instanceRoom) + { + m_tps_mode_data = tpsModeData; + } + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeTPSTeamDeathMatch...."; + return basic_string; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatchData.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatchData.cs new file mode 100644 index 0000000..f7eae5d --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/GameModeTPSTeamDeathMatchData.cs @@ -0,0 +1,13 @@ +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class GameModeTPSTeamDeathMatchData : ITPSMode +{ + public async Task initTPSMode() + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchDestroyHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchDestroyHandler.cs new file mode 100644 index 0000000..c9eb7a5 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchDestroyHandler.cs @@ -0,0 +1,21 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSTeamDeathMatchDestroyHandler : GameModeDestroyHandlerBase +{ + public TPSTeamDeathMatchDestroyHandler(string roomId) : base(roomId, GameModeType.TPS_TDM) + { + + } + + public override async Task postDestroy(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchInitHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchInitHandler.cs new file mode 100644 index 0000000..216f22d --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchInitHandler.cs @@ -0,0 +1,17 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSTeamDeathMatchInitHandler : GameModeInitHandlerBase +{ + public TPSTeamDeathMatchInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.TPS_TDM) + { + } + + public override Result gamedModeInstanceInitValidate() + { + var result = new Result(); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinHandler.cs new file mode 100644 index 0000000..175137e --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinHandler.cs @@ -0,0 +1,30 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSTeamDeathMatchJoinHandler : GameModeJoinHandlerBase +{ + public TPSTeamDeathMatchJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.TPS_TDM) + { + + } + + public override Result gamedModeInstanceJoinValidate() + { + var result = new Result(); + return result; + } + + public override Result gamedModeInstanceJoin(Player player) + { + Log.getLogger().debug("tps tdm gamedModeInstanceJoin called"); + + var result = new Result(); + string err_msg = string.Empty; + + Log.getLogger().debug("tps tdm gamedModeInstanceJoin done"); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinSuccessHandler.cs new file mode 100644 index 0000000..f982658 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchJoinSuccessHandler.cs @@ -0,0 +1,48 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSTeamDeathMatchJoinSuccessHandler : GameModeJoinSuccessHandlerBase +{ + //private readonly BattleInstanceRoom m_battle_instance_room; + + + public TPSTeamDeathMatchJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, GameModeType.TPS_TDM, instanceRoom) + { + var room_id = instanceRoom.getMap().m_room_id; + //var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id); + //NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"m_battle_instance_room is null !!!"); + //m_battle_instance_room = battle_instance_room; + } + + public override Result joinSuccessValidate() + { + var result = new Result(); + return result; + } + + public override async Task joinSuccessConfirmation() + { + var result = new Result(); + string err_msg = string.Empty; + + await Task.CompletedTask; + + return result; + } + + public override async Task joinSuccessNotify() + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } + + public override void joinSuccessWriteLog() + { + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchLeaveHandler.cs b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchLeaveHandler.cs new file mode 100644 index 0000000..952c124 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Battle/ModeTeamDeathMatch/Manage/TPSTeamDeathMatchLeaveHandler.cs @@ -0,0 +1,39 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Battle.Manage; + +public class TPSTeamDeathMatchLeaveHandler : GameModeLeaveHandlerBase +{ + public TPSTeamDeathMatchLeaveHandler(Player player, string roomId) : base(player, roomId, GameModeType.TPS_TDM) + { + } + + + public override async Task postLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return new Result(); + } + + public override async Task notifyAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } + + public override async Task logAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceInitHandler.cs b/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceInitHandler.cs deleted file mode 100644 index 10eb8fa..0000000 --- a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceInitHandler.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - -public class ArcadeRunningInstanceInitHandler : GameModeInitHandlerBase -{ - public ArcadeRunningInstanceInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.ArcadeRunning) - { - } - - public override Result gamedModeInstanceInitValidate() - { - var result = new Result(); - - //kihoon todo : running 추가 - - return result; - } - - public override Result gamedModeInstanceInit() - { - var result = new Result(); - //kihoon todo : running 추가 - - return result; - } - -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinHandler.cs deleted file mode 100644 index 6746fe0..0000000 --- a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinHandler.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - - -public class ArcadeRunningInstanceJoinHandler : GameModeJoinHandlerBase -{ - public ArcadeRunningInstanceJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, EPlaceType.ArcadeRunning) - { - - } - - public override Result gamedModeInstanceJoinValidate(EPlaceType placeType) - { - var result = new Result(); - return result; - } - - public override Result gamedModeInstanceJoin(Player player) - { - var result = new Result(); - string err_msg = string.Empty; - - - return result; - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinSuccessHandler.cs deleted file mode 100644 index e3d8bb0..0000000 --- a/GameServer/Contents/GameMode/Mode-Running/Manage/ArcadeRunningInstanceJoinSuccessHandler.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; -using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; - - -namespace GameServer; - -public class ArcadeRunningInstanceJoinSuccessHandler : GameModeJoinSuccessHandlerBase -{ - public ArcadeRunningInstanceJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, EPlaceType.ArcadeRunning) - { - } - - public override Result joinSuccessValidate() - { - var result = new Result(); - - return result; - } - - public override Task joinSuccessConfirmation() - { - var result = new Result(); - - return Task.FromResult(result); - } - - public override Task joinSuccessNotify() - { - var result = new Result(); - - return Task.FromResult(result); - } - - public override void joinSuccessWriteLog() - { - - } -} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/Manage/GameModeRun.cs b/GameServer/Contents/GameMode/Mode-Running/Manage/GameModeRun.cs new file mode 100644 index 0000000..b626ada --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/Manage/GameModeRun.cs @@ -0,0 +1,40 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class GameModeRun : GameModeBase, IGameModeGenre +{ + public GameModeRun(EntityType type, InstanceRoom instanceRoom) : base(type, instanceRoom) + { + + } + + public override Task onInit() + { + return base.onInit(); + } + + public override Task taskUpdate() + { + Log.getLogger().debug("run race taskUpdate called"); + + + Log.getLogger().debug("run race taskUpdate done"); + + return Task.CompletedTask; + } + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeRun...."; + return basic_string; + } + + public override Task initAfterTimerCreate() + { + m_current_game_mode_state = new RaceStateReady(this); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/Manage/IRunningMode.cs b/GameServer/Contents/GameMode/Mode-Running/Manage/IRunningMode.cs new file mode 100644 index 0000000..3fc53e2 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/Manage/IRunningMode.cs @@ -0,0 +1,6 @@ +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public interface IRunningMode +{ + Task initRunningMode(); +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventure.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventure.cs new file mode 100644 index 0000000..6cda07e --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventure.cs @@ -0,0 +1,18 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class GameModeRunAdventure : GameModeRun where T : IRunningMode +{ + T m_run_mode_data; + public GameModeRunAdventure(T runModeData, InstanceRoom instanceRoom) : base(EntityType.GameModeRunAdventure, instanceRoom) + { + m_run_mode_data = runModeData; + } + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeRunAdventure...."; + return basic_string; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventureData.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventureData.cs new file mode 100644 index 0000000..2c0c513 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/GameModeRunAdventureData.cs @@ -0,0 +1,12 @@ +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class GameModeRunAdventureData : IRunningMode +{ + public async Task initRunningMode() + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureDestroyHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureDestroyHandler.cs new file mode 100644 index 0000000..c722392 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureDestroyHandler.cs @@ -0,0 +1,20 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunAdventureDestroyHandler : GameModeDestroyHandlerBase +{ + public RunAdventureDestroyHandler(string roomId) : base(roomId, GameModeType.RUN_ADV) + { + } + + public override async Task postDestroy(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureInitHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureInitHandler.cs new file mode 100644 index 0000000..9a35547 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureInitHandler.cs @@ -0,0 +1,18 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunAdventureInitHandler : GameModeInitHandlerBase +{ + public RunAdventureInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.RUN_ADV) + { + } + + public override Result gamedModeInstanceInitValidate() + { + var result = new Result(); + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinHandler.cs new file mode 100644 index 0000000..c252fe3 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinHandler.cs @@ -0,0 +1,30 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunAdventureJoinHandler : GameModeJoinHandlerBase +{ + public RunAdventureJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.RUN_ADV) + { + + } + + public override Result gamedModeInstanceJoinValidate() + { + var result = new Result(); + return result; + } + + public override Result gamedModeInstanceJoin(Player player) + { + Log.getLogger().debug("run race gamedModeInstanceJoin called"); + + var result = new Result(); + string err_msg = string.Empty; + + Log.getLogger().debug("run race gamedModeInstanceJoin done"); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Manage/GameRoomJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinSuccessHandler.cs similarity index 59% rename from GameServer/Contents/GameMode/Manage/GameRoomJoinSuccessHandler.cs rename to GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinSuccessHandler.cs index c60145d..2b984e8 100644 --- a/GameServer/Contents/GameMode/Manage/GameRoomJoinSuccessHandler.cs +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureJoinSuccessHandler.cs @@ -1,13 +1,11 @@ -using ServerCommon; +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +namespace GameServer.Contents.GameMode.Mode_Running.Manage; - -namespace GameServer; - - -public class GameRoomJoinSuccessHandler: GameModeJoinSuccessHandlerBase +public class RunAdventureJoinSuccessHandler : GameModeJoinSuccessHandlerBase { - public GameRoomJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, EPlaceType.GameRoom) + public RunAdventureJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, GameModeType.RUN_ADV, instanceRoom) { } diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureLeaveHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureLeaveHandler.cs new file mode 100644 index 0000000..8a05dd6 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeAdventure/Manage/RunAdventureLeaveHandler.cs @@ -0,0 +1,38 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunAdventureLeaveHandler : GameModeLeaveHandlerBase +{ + public RunAdventureLeaveHandler(Player player, string roomId) : base(player, roomId, GameModeType.RUN_ADV) + { + } + + public override async Task postLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return new Result(); + } + + public override async Task notifyAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } + + public override async Task logAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceGameObjectSavePointInteractAction.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceGameObjectSavePointInteractAction.cs new file mode 100644 index 0000000..d8af1e6 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceGameObjectSavePointInteractAction.cs @@ -0,0 +1,43 @@ +using System.Collections.Concurrent; +using GameServer.Contents.GameMode.Action; +using GameServer.Contents.GameMode.InteractionObject; +using GameServer.Contents.GameMode.Manage.PlayManage; +using MetaAssets; +using ServerBase; +using ServerCommon; + +namespace GameServer; + +public class RaceGameObjectSavePointInteractAction : GameGameObjectAction +{ + protected ConcurrentDictionary m_game_objects = new(); //kihoon todo : 이거 위로 올릴지 말지, 하니면 GameModeBase에서 들고 있을지... 고민해볼것.. + public RaceGameObjectSavePointInteractAction (EntityBase owner) + : base(owner, EGameObjectType.Save_Point) + { + } + + public override async Task onInit() + { + await Task.CompletedTask; + var result = new Result(); + return result; + } + + public override void onClear() + { + return; + } + + public override async Task interact(string anchorGuid, DateTime interactionTime) + { + //여기에 interact 로직 추가해야 된다... + await Task.CompletedTask; + var result = new Result(); + return result; + } + + public override string toBasicString() + { + return $"class name : {nameof(RaceGameObjectSavePointInteractAction)}...." + base.toBasicString(); + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceStateCheckAction.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceStateCheckAction.cs new file mode 100644 index 0000000..c10ecbc --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Actions/RaceStateCheckAction.cs @@ -0,0 +1,63 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Running.Manage; +using GameServer.Contents.GameMode.Mode_Running.ModeRace.Helper; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.ModeRace.Actions; + +public class RaceStateCheckAction : EntityActionBase +{ + public RaceStateCheckAction(EntityBase owner) + : base(owner) + { + } + public override void onClear() + { + return; + } + + public override async Task onInit() + { + await Task.CompletedTask; + + var result = new Result(); + + return result; + } + + public async Task stateUpdate() + { + var run_race = getOwner() as GameModeBase; + NullReferenceCheckHelper.throwIfNull(run_race, () => $"GameModeRunRace is null !!"); + + var game_mode = getOwner() as IGameMode; + NullReferenceCheckHelper.throwIfNull(game_mode, () => $"game_mode is null !!"); + var current_state = run_race.getGameModeState(); + + //kihoon todo : 해당 sate에 따른 업데이트 내용 처리 할게 있으면 여기서 처리 Update를 어떻게 써야 되나.... + current_state.update(); + + var next_state_type = current_state.checkState(); + var current_state_type = current_state.getStateType(); + + //다르면 상태 변경 + if (!current_state_type.Equals(next_state_type)) + { + var next_state = RunRaceHelper.createRaceGameState(game_mode, next_state_type); + + current_state.exit(); + run_race.setGameModeState(next_state); + current_state = run_race.getGameModeState(); + + current_state.enter(); + } + + var result = new Result(); + + await Task.CompletedTask; + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Helper/RunRaceHelper.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Helper/RunRaceHelper.cs new file mode 100644 index 0000000..26dfcaa --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Helper/RunRaceHelper.cs @@ -0,0 +1,27 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; +using GameServer.Contents.GameMode.Mode_Running.Manage; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.ModeRace.Helper; + +public class RunRaceHelper +{ + public static IGameModeState createRaceGameState(IGameMode gameMode, GameModeState state) + { + switch (state) + { + case GameModeState.Start: + return new RaceStateStart(gameMode); + case GameModeState.Ready: + return new RaceStateReady(gameMode); + case GameModeState.End: + return new RaceStateReady(gameMode); + case GameModeState.Destroyed: + return new RaceStateReady(gameMode); + default: + Log.getLogger().error($"createRaceGameState not defined GameModeState : {state}"); + return new RaceStateEnd(gameMode); + } + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRace.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRace.cs new file mode 100644 index 0000000..758b358 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRace.cs @@ -0,0 +1,88 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Mode_Running.Manage; +using GameServer.Contents.GameMode.Mode_Running.ModeRace.Actions; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer; + +public class GameModeRunRace : GameModeRun where T : IRunningMode +{ + T m_run_mode_data; + + public GameModeRunRace(T runModeData, InstanceRoom instanceRoom) : base(EntityType.GameModeRunRace, instanceRoom) + { + Log.getLogger().debug("run race constructor called"); + + m_run_mode_data = runModeData; + + Log.getLogger().debug("run race constructor done"); + } + + + public override Task onInit() + { + Log.getLogger().debug("run race onInit called"); + + //제너릭 init + m_run_mode_data.initRunningMode(); + + //레이스 모드에 필요한 액션 추가 + addRaceEntityAction(); + + //게임 모드에 필요한 상수값 입력 + setDefaultMetaConstants(); + + + + //다 마무리 되면 부모 init 호출 + var result = base.onInit(); + + + Log.getLogger().debug("run race onInit done"); + return result; + } + + public override Task initAfterTimerCreate() + { + m_current_game_mode_state = new RaceStateReady(this); + + return Task.CompletedTask; + } + + + private void addRaceEntityAction() + { + Log.getLogger().debug("run race addEntityAction called"); + + addEntityAction(new RaceStateCheckAction(this)); + addEntityAction(new RaceGameObjectSavePointInteractAction(this)); + + Log.getLogger().debug("run race addEntityAction done"); + } + + private void setDefaultMetaConstants() + { + m_ticker_interval_msecs = GameModeConstants.GAME_MODE_RUN_RACE_CHECK_INTERVAL_MSECS; + } + + public override async Task taskUpdate() + { + + var state_check_action = getEntityAction(); + NullReferenceCheckHelper.throwIfNull(state_check_action, () => $"location attribute is null !!"); + + var result = await state_check_action.stateUpdate(); + if (result.isFail()) return; + + } + + public override string toBasicString() + { + var basic_string = base.toBasicString() + $"GameModeRunRace....roomId : {getRoomId()}"; + return basic_string; + } + + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRaceData.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRaceData.cs new file mode 100644 index 0000000..ea68369 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/GameModeRunRaceData.cs @@ -0,0 +1,21 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class GameModeRunRaceData : IRunningMode +{ + public async Task initRunningMode() + { + Log.getLogger().debug("run race data initRunningMode called"); + + + + var result = new Result(); + + await Task.CompletedTask; + + Log.getLogger().debug("run race data initRunningMode done"); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceDestroyHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceDestroyHandler.cs new file mode 100644 index 0000000..5b5629b --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceDestroyHandler.cs @@ -0,0 +1,24 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Mode_Running.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.ModeRace.Manage; + +public class RunRaceDestroyHandler : GameModeDestroyHandlerBase +{ + public RunRaceDestroyHandler(string roomId) : base(roomId, GameModeType.RUN_RACE) + { + + } + + public override async Task postDestroy(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceInitHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceInitHandler.cs new file mode 100644 index 0000000..6c56d38 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceInitHandler.cs @@ -0,0 +1,21 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunRaceInitHandler : GameModeInitHandlerBase +{ + public RunRaceInitHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.RUN_RACE) + { + } + + public override Result gamedModeInstanceInitValidate() + { + var result = new Result(); + + //kihoon todo : running 추가 + + return result; + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinHandler.cs new file mode 100644 index 0000000..d2bb446 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinHandler.cs @@ -0,0 +1,31 @@ +using GameServer.Contents.GameMode.Manage; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunRaceJoinHandler : GameModeJoinHandlerBase +{ + public RunRaceJoinHandler(InstanceRoom instanceRoom) : base(instanceRoom, GameModeType.RUN_RACE) + { + + } + + public override Result gamedModeInstanceJoinValidate() + { + var result = new Result(); + return result; + } + + public override Result gamedModeInstanceJoin(Player player) + { + Log.getLogger().debug("run race gamedModeInstanceJoin called"); + + var result = new Result(); + string err_msg = string.Empty; + + + Log.getLogger().debug("run race gamedModeInstanceJoin done"); + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinSuccessHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinSuccessHandler.cs new file mode 100644 index 0000000..e3475c2 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceJoinSuccessHandler.cs @@ -0,0 +1,65 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RunRaceJoinSuccessHandler : GameModeJoinSuccessHandlerBase +{ + public RunRaceJoinSuccessHandler(Player player, InstanceRoom instanceRoom) : base(player, GameModeType.RUN_RACE, instanceRoom) + { + } + + public override Result joinSuccessValidate() + { + var result = new Result(); + + return result; + } + + public override Task joinSuccessConfirmation() + { + var result = new Result(); + + return Task.FromResult(result); + } + + public override async Task joinSuccessNotify() + { + var result = new Result(); + + var room_id = m_instance_room.getMap().m_room_id; + + var err_msg = string.Empty; + if (false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + err_msg = $"not exist GameMode after join success!!!! roomId : {room_id}"; + + result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg); + Log.getLogger().error(err_msg); + return result; + } + + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!"); + + var state = game_mode_base.getGameModeState(); + + var state_base = state as GameModeStateBase; + NullReferenceCheckHelper.throwIfNull(state_base, () => $"state_base is null !!!"); + + GameNotifyHelper.send_GS2C_NTF_GAME_STATE_UPDATE(m_player, m_instance_room, state.getStateType(), state_base.getNextStateChangeTime()); + + await Task.CompletedTask; + return result; + } + + public override void joinSuccessWriteLog() + { + + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceLeaveHandler.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceLeaveHandler.cs new file mode 100644 index 0000000..7387ea4 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/Manage/RunRaceLeaveHandler.cs @@ -0,0 +1,37 @@ +using GameServer.Contents.GameMode.Manage.LeaveManage; +using GameServer.Contents.GameMode.Manage.PlayManage; +using ServerCommon; + +namespace GameServer.Contents.GameMode.Mode_Running.ModeRace.Manage; + +public class RunRaceLeaveHandler : GameModeLeaveHandlerBase +{ + public RunRaceLeaveHandler(Player player, string roomId) : base(player, roomId, GameModeType.RUN_RACE) + { + + } + + public override async Task postLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } + + public override async Task notifyAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } + + public override async Task logAfterLeave(IGameMode gameMode) + { + var result = new Result(); + + await Task.CompletedTask; + return result; + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateDestroyed.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateDestroyed.cs new file mode 100644 index 0000000..39f3ba5 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateDestroyed.cs @@ -0,0 +1,34 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RaceStateDestroyed: GameModeStateBase +{ + public RaceStateDestroyed(IGameMode gameMode) : base(gameMode, GameModeState.Destroyed) + { + + } + + public override void enter() + { + + } + + public override void update() + { + + } + + public override void exit() + { + + } + + public override GameModeState checkState() + { + + return getStateType(); + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateEnd.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateEnd.cs new file mode 100644 index 0000000..d27ca12 --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateEnd.cs @@ -0,0 +1,33 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RaceStateEnd : GameModeStateBase +{ + public RaceStateEnd(IGameMode gameMode) : base(gameMode, GameModeState.End) + { + + } + + public override void enter() + { + + } + + public override void update() + { + + } + + public override void exit() + { + + } + + public override GameModeState checkState() + { + return getStateType(); + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateReady.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateReady.cs new file mode 100644 index 0000000..01efabe --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateReady.cs @@ -0,0 +1,38 @@ +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; +using ServerCore; + +namespace GameServer; + +public class RaceStateReady : GameModeStateBase +{ + public RaceStateReady(IGameMode gameMode) : base(gameMode, GameModeState.Ready) + { + } + + public override void enter() + { + + } + + public override void update() + { + + } + + public override void exit() + { + //Ready 상태에서 나갈때는 딱히 할게 없다. + } + + public override GameModeState checkState() + { + var now = DateTimeHelper.Current; + if (m_next_state_change_time <= now) + { + return GameModeState.Start; + } + + return getStateType(); + } +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateStart.cs b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateStart.cs new file mode 100644 index 0000000..b86133b --- /dev/null +++ b/GameServer/Contents/GameMode/Mode-Running/ModeRace/State/RaceStateStart.cs @@ -0,0 +1,45 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using GameServer.Contents.GameMode.Manage.StateManage; +using ServerCore; + +namespace GameServer.Contents.GameMode.Mode_Running.Manage; + +public class RaceStateStart : GameModeStateBase +{ + public RaceStateStart(IGameMode gameMode) : base(gameMode, GameModeState.Start) + { + + } + + public override void enter() + { + getStateType(); + + + + var instance_room = m_game_mode_base.getInstanceRoom(); + + var next_update_time = DateTimeHelper.Current.AddMinutes(10); //kihoon todo : 이거 meta로 빼야된다. + + GameNotifyHelper.broadcast_GS2C_NTF_GAME_STATE_UPDATE(instance_room, getStateType(), next_update_time); + + } + + public override void update() + { + + } + + public override void exit() + { + + } + + public override GameModeState checkState() + { + + return getStateType(); + } + +} \ No newline at end of file diff --git a/GameServer/Contents/GameMode/PacketHandler/GameObjectInteractionPacketHandler.cs b/GameServer/Contents/GameMode/PacketHandler/GameObjectInteractionPacketHandler.cs new file mode 100644 index 0000000..1a6d217 --- /dev/null +++ b/GameServer/Contents/GameMode/PacketHandler/GameObjectInteractionPacketHandler.cs @@ -0,0 +1,121 @@ +using GameServer.Contents.GameMode.Helper; +using GameServer.Contents.GameMode.Manage.PlayManage; +using Google.Protobuf; +using ServerBase; +using ServerCommon; +using ServerCore; + +namespace GameServer.PacketHandler; + +[PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_GAME_OBJECT_INTERACTION), typeof(GameObjectInteractionPacketHandler), typeof(GameLoginListener))] +public class GameObjectInteractionPacketHandler : PacketRecvHandler +{ + public override async Task onProcessPacket(ISession session, IMessage recvMessage) + { + await Task.CompletedTask; + var result = new Result(); + + var err_msg = string.Empty; + + var server_logic = GameServerApp.getServerLogic(); + + var player = session as Player; + NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); + + var req_msg = recvMessage as ClientToGame; + ArgumentNullReferenceCheckHelper.throwIfNull(req_msg, () => $"req_msg is null !!! - {player.toBasicString()}"); + + var request = req_msg.Request.ReqGameObjectInteraction; + if (null == request) + { + err_msg = $"failed to get request message : Invalid Request message - {req_msg.Request.MsgCase}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.InvalidArgument, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, ""); + return result; + } + + var anchor_guid = request.AnchorGuid; + ArgumentNullReferenceCheckHelper.throwIfNull(anchor_guid, () => $"anchor_guid is null !!! - {player.toBasicString()}"); + var paacket_create_time = request.PacketCreateTime; + ArgumentNullReferenceCheckHelper.throwIfNull(paacket_create_time, () => $"paacket_create_time is null !!! - {player.toBasicString()}"); + + DateTime interaction_time = paacket_create_time.ToDateTime(); + + var room_id = player.getCurrentInstanceRoomId(); + if(false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode)) + { + err_msg = $"gameMode is null : room_id - {room_id}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + + var game_mode_base = gameMode as GameModeBase; + NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_moce_base is null !!!"); + if (false == MapDataTable.Instance.getAnchor(anchor_guid, out var anchor)) + { + err_msg = $"anchor_guid invalid : room_id - {room_id}, anchor_guid : {anchor_guid}, player : {player.toBasicString()}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeInvalidAnchorGuid, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + if(false == game_mode_base.getInstanceRoom().getMap().getAnchors().TryGetValue(anchor_guid, out var anchor2)) + { + err_msg = $"anchor_guid invalid : room_id - {room_id}, anchor_guid : {anchor_guid}, player : {player.toBasicString()}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeInvalidAnchorGuid, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + var anchor_info = game_mode_base.getInstanceRoom().getMap().findAnchorInfo(anchor_guid); + if(anchor_info is null) + { + err_msg = $"anchor_guid invalid : room_id - {room_id}, anchor_guid : {anchor_guid}, player : {player.toBasicString()}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeInvalidAnchorGuid, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + var interact_action = GameModeHelper.getObjectInteractAction(game_mode_base, anchor); //kihoon todo : 어떤 anchor를 가져다 쓸지 추후 확인 필요 + if (interact_action is null) + { + err_msg = $"anchor_guid invalid : room_id - {room_id}, anchor_guid : {anchor_guid}, player : {player.toBasicString()}"; + Log.getLogger().error(err_msg); + result.setFail(ServerErrorCode.GameModeInvalidAnchorGuid, err_msg); + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + result = await interact_action.interact(anchor_guid, interaction_time); + if (result.isFail()) + { + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + return result; + } + + send_S2C_ACK_GAME_OBJECT_INTERACTION(player, result, anchor_guid); + + + return result; + } + + public bool send_S2C_ACK_GAME_OBJECT_INTERACTION(Player player, Result result, string anchorGuid) + { + var ack_packet = new ClientToGame(); + ack_packet.Response = new ClientToGameRes(); + + ack_packet.Response.ErrorCode = result.ErrorCode; + ack_packet.Response.AckGameObjectInteraction = new ClientToGameRes.Types.GS2C_ACK_GAME_OBJECT_INTERACTION(); + ack_packet.Response.AckGameObjectInteraction.AnchorGuid = anchorGuid; + + return GameServerApp.getServerLogic().onSendPacket(player, ack_packet); + + } +} \ No newline at end of file diff --git a/GameServer/Contents/ItemCloth/Action/ItemClothAction.cs b/GameServer/Contents/ItemCloth/Action/ItemClothAction.cs index 7198655..fd7bf51 100644 --- a/GameServer/Contents/ItemCloth/Action/ItemClothAction.cs +++ b/GameServer/Contents/ItemCloth/Action/ItemClothAction.cs @@ -389,7 +389,7 @@ namespace GameServer var item_attribute = found_item.getOriginEntityAttribute(); NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {owner.toBasicString()}"); - var equiped_inven_type = item_attribute.EquipedIvenType; + var equiped_inven_type = item_attribute.EquipedInvenType; var equiped_pos = item_attribute.EquipedPos; if ( InvenEquipType.None != equiped_inven_type ) { diff --git a/GameServer/Contents/Loginout/Action/GameLogoutAction.cs b/GameServer/Contents/Loginout/Action/GameLogoutAction.cs index 853ffdb..a318d99 100644 --- a/GameServer/Contents/Loginout/Action/GameLogoutAction.cs +++ b/GameServer/Contents/Loginout/Action/GameLogoutAction.cs @@ -137,24 +137,7 @@ public partial class GameLogoutAction : EntityActionBase var current_indun_location = location_action.getCurrentLocation() as IndunLocation; NullReferenceCheckHelper.throwIfNull(current_indun_location, () => $"current_indun_location is null !!! - {owner.toBasicString()}"); - var instance_room_Id = current_indun_location.InstanceRoomId; - - //LeaveInstanceRoom 전에 배틀 인스턴스 메모리 정리 - if (instance_room_Id != string.Empty) - { - await BattleInstanceManager.It.tryLeaveBattelInstance(owner, instance_room_Id); - } - else - { - Log.getLogger().warn("instance_room_Id is Empty!!!!!"); - } - await game_zone_action.tryLeaveInstanceRoom(); - - if (instance_room_Id != string.Empty) - { - await BattleInstanceManager.It.tryDestroyBattleRoom(instance_room_Id); - } } var player_action = owner.getEntityAction(); diff --git a/GameServer/Contents/MyHome/PacketHandler/SaveMyhomeUgcPacketHandler.cs b/GameServer/Contents/MyHome/PacketHandler/SaveMyhomeUgcPacketHandler.cs index 88112ef..0991e72 100644 --- a/GameServer/Contents/MyHome/PacketHandler/SaveMyhomeUgcPacketHandler.cs +++ b/GameServer/Contents/MyHome/PacketHandler/SaveMyhomeUgcPacketHandler.cs @@ -143,6 +143,21 @@ internal class SaveMyhomeUgcPacketHandler : PacketRecvHandler // myhome_info = myhome_action.toMyHomeInfo(); //} + //beaconShop Deactive item + foreach (var (ugc_npc_guid, ugc_npc_state_info) in res.ModigyUgcNpcStateInfos) + { + if (ugc_npc_state_info.StateType == EntityStateType.None) + { + var beaconShopAction = player.getEntityAction(); + result = await beaconShopAction.BeaconShopDeactiveItems(ugc_npc_guid, player.getUserGuid(), business_logs); + if (result.isFail()) + { + send_S2C_ACK_SAVE_MYHOME_UGC(player, result, res); + return result; + } + } + } + result = await myhome_action.tryUploadMyhomeUgcInfoToS3(); if (result.isFail()) { diff --git a/GameServer/Contents/Quest/QuestCheat.cs b/GameServer/Contents/Quest/QuestCheat.cs index 490d204..5948bf3 100644 --- a/GameServer/Contents/Quest/QuestCheat.cs +++ b/GameServer/Contents/Quest/QuestCheat.cs @@ -1,12 +1,9 @@ -using Google.Protobuf; -using Google.Protobuf.WellKnownTypes; - - -using ServerCore; -using ServerBase; +using ServerCore; using ServerCommon; -using ServerCommon.BusinessLogDomain; -using MetaAssets; +using Nettention.Proud; + + + namespace GameServer; @@ -104,15 +101,25 @@ internal class ChatCommandMethodTest : ChatCommandBase if (id == 1) { - + + // foreach (var room in BattleInstanceManager.It.getBattleInstanceRooms().Values) + // { + // var p2p_group_id = room.m_instance_room.getMap().getP2PGroupId(); + // room.m_host_migrator.defineHost(p2p_group_id); + // var host_id = room.m_host_migrator.getHostUserGuid(); + // Log.getLogger().warn($"{host_id}"); + // } + + + // var packet = new ClientToGame(); // packet.Request = new ClientToGameReq(); // var req_msg = new ClientToGameReq.Types.C2GS_REQ_JOIN_BATTLE_INSTANCE(); // packet.Request.ReqJoinBattleInstance = req_msg; // // packet.Request.ReqJoinBattleInstance.EventId = 13; - - + + // var packet = new ClientToGame(); // packet.Request = new ClientToGameReq(); // var req_msg = new ClientToGameReq.Types.C2GS_REQ_BATTLE_PLAYER_DEATH(); @@ -130,9 +137,17 @@ internal class ChatCommandMethodTest : ChatCommandBase } else if (id == 2) { - // var server_logic = GameServerApp.getServerLogic(); - // var systemMailManager = server_logic.getSystemMailManager(); - // await systemMailManager.CheatFuncSaveSystemMetaMail(); + var host_a = int.Parse(args[1]); + var host_b = int.Parse(args[2]); + player.getSessionId().toHostID(); + var roomId = player.getCurrentInstanceRoomId(); + + if (false == GameModeManager.It.tryGetGameMode(roomId, out var gameMode)) return; + + + var ping = GameServerApp.getServerLogic().getProudNetListener().getNetServer().GetP2PRecentPingMs((HostID)host_a, (HostID)host_b); + int cc = 0; + Log.getLogger().info($"{cc}"); } else if (id == 3) { diff --git a/GameServer/Contents/Rental/Action/RentalAgentAction.cs b/GameServer/Contents/Rental/Action/RentalAgentAction.cs index ae9e256..0bc8cd9 100644 --- a/GameServer/Contents/Rental/Action/RentalAgentAction.cs +++ b/GameServer/Contents/Rental/Action/RentalAgentAction.cs @@ -91,6 +91,21 @@ namespace GameServer return false; } + public DateTime? getRentalMyhomeFinishTime(string myhomeGuid) + { + foreach (var rental in m_rentals.Values) + { + var rental_attribute = rental.getEntityAttribute(); + if (rental_attribute == null) + continue; + + if (rental_attribute.MyhomeGuid == myhomeGuid) + return rental_attribute.RentalFinishTime; + } + + return null; + } + public (int, int, int) getAddrressFromMyhome(string myhomeGuid) { var land_meta_id = 0; diff --git a/GameServer/Contents/Shop/Action/ShopAction.cs b/GameServer/Contents/Shop/Action/ShopAction.cs index 46ffdcb..87f147d 100644 --- a/GameServer/Contents/Shop/Action/ShopAction.cs +++ b/GameServer/Contents/Shop/Action/ShopAction.cs @@ -239,7 +239,7 @@ public class ShopAction : EntityActionBase } // 1. 착용 여부 확인 - if (InvenEquipType.None != attribute.EquipedIvenType) + if (InvenEquipType.None != attribute.EquipedInvenType) { err_msg = $"Failed to check equipped item : already equipped - {attribute.ItemGuid}"; result.setFail(ServerErrorCode.SlotsAlreadyEquiped, err_msg); diff --git a/GameServer/Entity/Inventory/Base/Action/InventoryActionBase.cs b/GameServer/Entity/Inventory/Base/Action/InventoryActionBase.cs index 35edb29..59cda80 100644 --- a/GameServer/Entity/Inventory/Base/Action/InventoryActionBase.cs +++ b/GameServer/Entity/Inventory/Base/Action/InventoryActionBase.cs @@ -286,7 +286,7 @@ namespace GameServer NullReferenceCheckHelper.throwIfNull(doc_item_attrib, () => $"doc_item_attrib is null !!! - {owner.toBasicString()}"); // InvenEquipType 비장작 상태인 경우만 허용 한다. !!! - kangms - if (InvenEquipType.None != doc_item_attrib.EquipedIvenType) + if (InvenEquipType.None != doc_item_attrib.EquipedInvenType) { err_msg = $"Not found InventoryRule !!! : ItemMetaId:{doc_item_attrib.ItemMetaId}, itemGuid:{doc_item_attrib.OwnerGuid} - {owner.toBasicString()}"; result.setFail(ServerErrorCode.InvenEquipTypeInvalid, err_msg); @@ -363,7 +363,7 @@ namespace GameServer NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {owner.toBasicString()}"); // InvenEquipType 장착 상태인 경우만 장착 시켜준다 !!! - kangms - if (InvenEquipType.None != item_attribute.EquipedIvenType) + if (InvenEquipType.None != item_attribute.EquipedInvenType) { var equiped_pos = item_attribute.EquipedPos; result = await tryTakableToEquip(took_in_item, (Int16)equiped_pos); @@ -372,10 +372,10 @@ namespace GameServer return (result, took_in_item); } - if(false == reservedSlotTypes.TryGetValue(item_attribute.EquipedIvenType, out var reserved_slots)) + if(false == reservedSlotTypes.TryGetValue(item_attribute.EquipedInvenType, out var reserved_slots)) { reserved_slots = new HashSet(); - reservedSlotTypes.Add(item_attribute.EquipedIvenType, reserved_slots); + reservedSlotTypes.Add(item_attribute.EquipedInvenType, reserved_slots); } reserved_slots.Add((Int16)equiped_pos); } @@ -616,7 +616,7 @@ namespace GameServer } break; } - item_attribute.EquipedIvenType = equipRuleBase.InvenEquipType; + item_attribute.EquipedInvenType = equipRuleBase.InvenEquipType; item_attribute.EquipedPos = (UInt16)to_equip_pos; item_attribute.modifiedEntityAttribute(); @@ -646,7 +646,7 @@ namespace GameServer NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {owner.toBasicString()}"); // 2. 장착 인벤으로 설정되어 있는 경우, 장착을 해제 한다. - if (InvenEquipType.None != item_attribute.EquipedIvenType) + if (InvenEquipType.None != item_attribute.EquipedInvenType) { (result, var unequiped_item) = await tryTakableOutFromEquip(reserved_item); if (result.isFail()) @@ -680,7 +680,7 @@ namespace GameServer NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {owner.toBasicString()}"); // 2. 장착 인벤으로 설정되어 있는 경우, 장착을 해제 한다. - if (InvenEquipType.None != item_attribute.EquipedIvenType) + if (InvenEquipType.None != item_attribute.EquipedInvenType) { (result, var unequiped_item) = await tryTakableOutFromEquip(reserved_item); if (result.isFail()) @@ -884,7 +884,7 @@ namespace GameServer } break; } - item_attribute.EquipedIvenType = InvenEquipType.None; + item_attribute.EquipedInvenType = InvenEquipType.None; item_attribute.EquipedPos = 0; item_attribute.modifiedEntityAttribute(); diff --git a/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcAction.cs b/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcAction.cs index 67d8cc3..8752896 100644 --- a/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcAction.cs +++ b/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcAction.cs @@ -832,7 +832,7 @@ public class UgcNpcAction : EntityActionBase { var beacon_shop_action = masterEntity.getEntityAction(); if (beacon_shop_action != null) - ugc_summary.HasReceivePayment = beacon_shop_action.hasBeaconShopSoldRecord(ugc_summary.UgcNpcMetaGuid) == true ? BoolType.True : BoolType.False; + ugc_summary.HasReceivePayment = beacon_shop_action.getBeaconShopNumOfReceiptNotReceived(ugc_summary.UgcNpcMetaGuid) == 0 ? BoolType.False : BoolType.True; } return ugc_summary; diff --git a/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcBeaconShopAction.cs b/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcBeaconShopAction.cs index 56407b9..5eb4f4d 100644 --- a/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcBeaconShopAction.cs +++ b/GameServer/Entity/Npc/UgcNpc/Action/UgcNpcBeaconShopAction.cs @@ -181,5 +181,16 @@ namespace GameServer { m_isUpdateBeaconShopItem = true; } + + public void setDeactiveAllItems() + { + foreach(var beaconShopItem in m_beaconShopItems.Values) + { + var beacon_shop_item_attribute = beaconShopItem.getEntityAttribute(); + NullReferenceCheckHelper.throwIfNull(beacon_shop_item_attribute, () => $"beacon_shop_item_attribute is null !!! - {toBasicString()}"); + beacon_shop_item_attribute.IsActiveSelling = false; + beacon_shop_item_attribute.modifiedEntityAttribute(); + } + } } } diff --git a/GameServer/GameServer.csproj b/GameServer/GameServer.csproj index 9611fb5..cd560f7 100644 --- a/GameServer/GameServer.csproj +++ b/GameServer/GameServer.csproj @@ -43,10 +43,6 @@ - - - - ..\..\ThirdPartyPackages\ProudNet\1.9.58941\ProudNet\lib\DotNet\ProudDotNetClient.dll diff --git a/GameServer/MessageQueue/PacketHandler/NtfBeaconShopUpdateItemMQPacketHandler.cs b/GameServer/MessageQueue/PacketHandler/NtfBeaconShopUpdateItemMQPacketHandler.cs index 1ccaa3b..f306301 100644 --- a/GameServer/MessageQueue/PacketHandler/NtfBeaconShopUpdateItemMQPacketHandler.cs +++ b/GameServer/MessageQueue/PacketHandler/NtfBeaconShopUpdateItemMQPacketHandler.cs @@ -26,6 +26,7 @@ public class NtfBeaconShopUpdateItemMQPacketHandler : PacketRecvHandler BEACON_GUID beacon_guid = msg.NtfUpdateBeaconShopItem.TargetBeaconGuid; USER_GUID beacon_owner_guid = msg.NtfUpdateBeaconShopItem.TargetUserGuid; + BoolType hasBeaconShopItem = msg.NtfUpdateBeaconShopItem.HasBeaconShopItem; var server_logic = GameServerApp.getServerLogic(); ArgumentNullException.ThrowIfNull(server_logic); @@ -39,14 +40,14 @@ public class NtfBeaconShopUpdateItemMQPacketHandler : PacketRecvHandler var ugc_npc_beacon_shop_action = found_ugc_npc.getEntityAction(); ugc_npc_beacon_shop_action.setUpdateBeaconShopItem(); - var packet = BeaconShopNotifyHelper.makeAckBeaconShopRefreshPacket(beacon_guid); + var packet = BeaconShopNotifyHelper.makeAckBeaconShopRefreshPacket(beacon_guid, hasBeaconShopItem); if (server_logic.getServerType().toServerType() == ServerType.Channel) { var receivers = server_logic.getPlayerManager().getUsers(); foreach (var receiver in receivers) { - receiver.Value.send_S2C_NTF_BEACON_SHOP_REFRESH(beacon_guid); + receiver.Value.send_S2C_NTF_BEACON_SHOP_REFRESH(beacon_guid, hasBeaconShopItem); } } else if(server_logic.getServerType().toServerType() == ServerType.Indun) diff --git a/GameServer/Room/InstanceRoom.cs b/GameServer/Room/InstanceRoom.cs index 81fd8e3..6fd72ab 100644 --- a/GameServer/Room/InstanceRoom.cs +++ b/GameServer/Room/InstanceRoom.cs @@ -199,13 +199,13 @@ public partial class InstanceRoom } //GameMode - (var gamemode_init_result, var gamemode_init_handler) = GameModeHelper.getGameModeInitHandler(this, _placeType); + (var gamemode_init_result, var gamemode_init_handler) = GameModeHelper.getGameModeInitHandler(this, 1, _roomId); if (gamemode_init_result.isSuccess()) { var gamemode_validation_result = gamemode_init_handler.gamedModeInstanceInitValidate(); if (gamemode_validation_result.isFail()) return false; - var init_result = gamemode_init_handler.gamedModeInstanceInit(); + var init_result = await gamemode_init_handler.gamedModeInstanceInit(); if (init_result.isFail()) { Log.getLogger().error($"battleInstanceInit error roomId : {_roomId}"); @@ -266,12 +266,12 @@ public partial class InstanceRoom //GameMode - (var get_mode_result, var gamemode_join_handler) = GameModeHelper.getGameModeJoinHandler(this, _placeType); + (var get_mode_result, var gamemode_join_handler) = GameModeHelper.getGameModeJoinHandler(this, 1, _roomId); if (get_mode_result.isFail()) return true; //fail 이면 gamemode 인스턴스가 아니므로 그냥 정상 리턴 처리 if (get_mode_result.isSuccess()) { - get_mode_result = gamemode_join_handler.gamedModeInstanceJoinValidate(_placeType); + get_mode_result = gamemode_join_handler.gamedModeInstanceJoinValidate(); if (get_mode_result.isSuccess()) { //successs 면 gamemod join 설정 @@ -412,11 +412,9 @@ public partial class InstanceRoom //GameMode - (var handler_result, var gamemode_join_success_handler) = GameModeHelper.getGameModeJoinSuccessHandler(player, this, _placeType); + (var handler_result, var gamemode_join_success_handler) = GameModeHelper.getGameModeJoinSuccessHandler(player, this, 1, _roomId); if (handler_result.isFail() || gamemode_join_success_handler == null) return; await gamemode_join_success_handler.joinSuccess(); - - } async Task SendConcertStartPacket() diff --git a/GameServer/Ticker/BuildingUpdateTicker.cs b/GameServer/Ticker/BuildingUpdateTicker.cs index 429eda8..1207a17 100644 --- a/GameServer/Ticker/BuildingUpdateTicker.cs +++ b/GameServer/Ticker/BuildingUpdateTicker.cs @@ -50,6 +50,13 @@ namespace GameServer if (ugc_npc_guids.Count < 1) continue; + //beaconShop Deactive item + foreach(var ugc_npc_guid in ugc_npc_guids) + { + result= await BeaconShopHelper.DeactiveBeaconShopItems(ugc_npc_guid); + if(result.isFail()) continue; + } + var modify_floor_linked_info = MapHelper.makeModifyFloorLinkedInfo(ModifyType.Delete, land_meta_id, building_meta_id, floor, ugc_npc_guids); modify_floor_linked_infos.Add(modify_floor_linked_info); } diff --git a/Protocol/client-proto/.svn/pristine/b3/b319b4e84d37dc17d97d2ff284ad3fcd7b54aa74.svn-base b/Protocol/client-proto/.svn/pristine/b3/b319b4e84d37dc17d97d2ff284ad3fcd7b54aa74.svn-base new file mode 100644 index 0000000..8db7b59 --- /dev/null +++ b/Protocol/client-proto/.svn/pristine/b3/b319b4e84d37dc17d97d2ff284ad3fcd7b54aa74.svn-base @@ -0,0 +1,65 @@ +// See README.txt for information and build instructions. +// +// Note: START and END tags are used in comments to define sections used in +// tutorials. They are not part of the syntax for Protocol Buffers. +// +// To get an in-depth walkthrough of this file and the related examples, see: +// https://developers.google.com/protocol-buffers/docs/tutorials + +// [START declaration] +syntax = "proto3"; +package protocol; + +option csharp_namespace = "Google.Protobuf.CES.Packet"; +//import "google/protobuf/timestamp.proto"; + + enum Protocol{ + + MOVE_NEXT = 0; + MOVE_COMBINE = 1; + VOICE = 30; + VOICE_STATE = 31; + MUSIC = 40; + MUSICBox = 41; + DANCE = 50; + DANCE_ReqRoomTime = 51; + DANCE_ResRoomTime = 52; + DANCE_StateUpdate = 53; + JUMP = 70; + GUIDE = 80; + PRESENTATION_PAGE = 81; + AIM = 100; + PARTY_MOVE_MEMBER = 110; + + BATTLE_MOVE = 120; // 이동,멈춤,점프... + BATTLE_AIM = 121; // 조준. + BATTLE_STATUS = 122; // 현재상태. + BATTLE_MANTLE = 123; // 기어오르기. + BATTLE_SHOOT = 130; // 총알발사. + BATTLE_DAMAGE = 131; // 피격. + BATTLE_RELOAD = 132; // 재장전 + BATTLE_DODGE = 133; // 구르기 + BATTLE_WEAPON_CHANGE = 134; // 무기교환 + BATTLE_WEAPON_ADD = 135; // 무기추가 + BATTLE_RESPAWN = 136; // 사망후 리스폰. + BATTLE_OBJECT_INTERACTION = 137; // 오브젝트 인터렉션 + BATTLE_FINISHED_LODING = 138; // 인게임 로딩 끝 + BATTLE_READY_TO_EXIT = 139; // 인던 나가기 전에 결과창 보는 중 + BATTLE_LAUNCH_CHARACTER = 140; // 범위 타격에 의해서 날아감 + BATTLE_PLAY_ANIMATION = 141; // 특정 상황에서 에니메이션 실행 할 때 + BATTLE_HIT_EFFECT = 142; // 캐릭터나 사물에 이펙트 표시 + + MOB_AI_ATTACK = 200; + MOB_AI_MOVETO = 201; + MOB_AI_FOCUS = 202; + MOB_AI_SYNCVAR = 203; + MOB_AI_SPAWN = 204; + MOB_AI_SHOOT = 205; + MOB_AI_RELOAD = 206; + + RUNNING_TRIGGER = 300; + + }; + + +// [END messages] diff --git a/Protocol/client-proto/.svn/pristine/d5/d58580b99025188018cf545592fb1296325f3377.svn-base b/Protocol/client-proto/.svn/pristine/d5/d58580b99025188018cf545592fb1296325f3377.svn-base new file mode 100644 index 0000000..6416bab --- /dev/null +++ b/Protocol/client-proto/.svn/pristine/d5/d58580b99025188018cf545592fb1296325f3377.svn-base @@ -0,0 +1,459 @@ +// See README.txt for information and build instructions. +// +// Note: START and END tags are used in comments to define sections used in +// tutorials. They are not part of the syntax for Protocol Buffers. +// +// To get an in-depth walkthrough of this file and the related examples, see: +// https://developers.google.com/protocol-buffers/docs/tutorials + +// [START declaration] +syntax = "proto3"; +package Packet; + +//import "google/protobuf/timestamp.proto"; +// [END declaration] + +// [START csharp_declaration] +option csharp_namespace = "Google.Protobuf.CES.Packet"; +// [END csharp_declaration] + +// [START messages] + +message SM_REQ_MOVE_NEXT +{ + optional float px =1; // + optional float py =2; // + optional float pz =3; // + optional float ang =4; // + optional float movevalue =5; // + optional int32 start =6; // ù ̵̸ true ̵θ false +} + +message SM_REQ_MOVE_COMBINE +{ + optional float px =1; // + optional float py =2; // + optional float pz =3; // + optional float lx =4; // + optional float ly =5; // + optional float lz =6; // + optional float ang =7; // + optional int32 move_speed =8; // + optional int32 start =9; // ù ̵̸ true ̵θ false +} + +message SM_REQ_TRACKING_TYPE +{ + optional int32 type =1; +} + +message SM_REQ_VOICE +{ + optional int32 sampleRate = 1; // + optional int32 numchannels = 2; // + optional int32 PCMSize = 3; // + repeated int32 data = 4; + optional int32 dataSize = 5; // +} + +message SM_REQ_MUSICBOX +{ + optional string propguid = 1; + optional int32 sampleRate = 2; // + optional int32 numchannels = 3; // + optional int32 PCMSize = 4; // + repeated int32 data = 5; + optional int32 dataSize = 6; // +} + +message SM_REQ_JUMP +{ + optional float sx =1; // + optional float sy =2; // + optional float sz =3; // + optional float lx =4; // + optional float ly =5; // + optional float lz =6; // + optional float ang =7; // + optional int32 start =8; // ù ̵̸ true ̵θ false +} + +message SM_REQ_GUIDE +{ + optional string guoup =1; // + optional int32 operatorid =2; // + optional int32 guidetype =3; // +} + +message SM_REQ_PRESENTATION_PAGE +{ + string pageurl =1; // + int32 pageid =2; // +} + + +message SM_REQ_AIM +{ + optional float pitch =1; // +} + +message SM_REQ_PARTY_MOVE_MEMBER +{ + optional float px =1; // + optional float py =2; // + optional float pz =3; // +} + +message SM_REQ_VOICE_STATE +{ + optional string nickname =1; // + optional int32 state =2; // +} + +message SM_REQ_DANCE_INFO +{ + optional int32 danceid = 1; // ̵ + optional int32 motionid = 2; // + optional int32 dancetype = 3; // Ÿ޺ + optional int64 timestamp = 4; // ð +} + +message SM_REQ_DANCE_ROOMTIME +{ + int64 sendmytime = 1; +} + +message SM_SEND_DANCE_ROOMTIME +{ + int64 sendroomtime = 1; + string guid = 2; +} + +message SM_SEND_DANCE_STATE +{ + optional int32 state = 1; + optional int64 sendroomtime = 2; + optional int32 state01 = 3; + optional int32 state02 = 4; + optional int32 state03 = 5; + optional string str01 = 6; + optional string str02 = 7; + optional string str03 = 8; +} + + +////////////////////////////////////// + +// Ѿ +message SM_DATA_BATTLE_BULLET +{ + optional float px =1; // + optional float py =2; // + optional float pz =3; // + optional float yaw =4; // + optional float pitch =5; // + optional int32 damage =6; // +} + +message SM_DATA_WEAPON_DATA +{ + int32 weapontype = 1; + int32 currentbullet = 2; // Ѿ. + int32 maxbullet = 3; // źâ ִź +} + +message SM_REQ_BATTLE_MOVE +{ + float px =1; // + float py =2; // + float pz =3; // + float lx =4; // + float ly =5; // + float lz =6; // + float vx =7; // + float vy =8; // + float vz =9; // + float ang =10; // + int32 move_speed =11; // ̵Ÿ + int32 type =12; // ̵ȭŸ + float aim_yaw =13; // + float aim_pitch =14; // + int32 cur_hp=15; // + int32 shoot_type = 16; // ѱ߻ + int32 cur_weapontype=17;// Ȱȭ + int32 server_time=18; // Ŷ ð + repeated SM_DATA_WEAPON_DATA weapontypes=19; //ִ +} + +// ij . +message SM_REQ_BATTLE_STATUS +{ + float px =1; // + float py =2; // + float pz =3; // + float ang =4; // + float aim_yaw =5; // + float aim_pitch =6; // ī޶ + int32 cur_hp=7; // + int32 shoot_type = 8; // ѱ߻ + int32 cur_weapontype=9; //Ȱȭ + repeated SM_DATA_WEAPON_DATA weapontypes=10; //ִ + int32 podcarry = 11; // ִ. + int32 podcount = 12; // ȹ . + int32 killcount = 13; + int32 deathcount = 14; + int32 assistcount = 15; + int32 damagecount = 16; +} + +// /Ǯ +message SM_REQ_BATTLE_AIM +{ + float ang =1; // ij + float aim_yaw =2; // ī޶ + float aim_pitch =3; // ī޶ + int32 aim_type = 4; // Ÿ + int32 move_type =5; // ̵Ÿ -- ߰ +} + +// ߻ +message SM_REQ_BATTLE_SHOOT +{ + int32 weapontype =1; // ߻繫 + int32 remainbullet = 2; // ź. : currentbullet + float aim_yaw =3; // ī޶ + float aim_pitch =4; // ī޶ + int32 aim_type = 5; // Ÿ + int32 server_time=6; // Ŷ ð + repeated SM_DATA_BATTLE_BULLET bullets = 7; // ߻Ѿ. ϼִ. + +} + +message SM_CHARACTER_KEY +{ + int32 type = 1; + string guid = 2; +} + +// ǰ, ڽ hp . -> ȣƮ ¾Ҵٰ . +message SM_REQ_BATTLE_DAMAGE +{ + int32 damage =1; // + int32 cur_hp=2; // . 0̸ . + SM_CHARACTER_KEY attacker=3; // . + SM_CHARACTER_KEY victim=4; // ǰ. + int32 attack_weapon_type = 5; // ݹŸ. +} + +// +message SM_REQ_BATTLE_RELOAD +{ + int32 cur_hp=1; // + int32 cur_weapontype=2; //Ȱȭ + int32 currentbullet = 3; // źâ ź + int32 maxbullet=4; // ִź +} + +// +message SM_REQ_BATTLE_DODGE +{ + float px =1; // + float py =2; // + float pz =3; // + float ang =4; // + int32 dir_id = 5; // Ÿ +} + +// +message SM_REQ_BATTLE_WEAPON_CHANGE +{ + int32 cur_weapontype=1; //Ȱȭ + repeated SM_DATA_WEAPON_DATA weapontypes=2; //ִ +} + +// ߰ +message SM_REQ_BATTLE_WEAPON_ADD +{ + int32 cur_weapontype=1; //Ȱȭ + repeated SM_DATA_WEAPON_DATA weapontypes=2; //ִ +} + +// ij . +message SM_REQ_BATTLE_RESPAWN +{ + float px =1; // + float py =2; // + float pz =3; // + float ang =4; // + float aim_yaw =5; // + float aim_pitch =6; // ī޶ + int32 cur_hp=7; // + int32 cur_weapontype=8; //Ȱȭ + repeated SM_DATA_WEAPON_DATA weapontypes=9; //ִ +} + +// Ʈ ͷ +message SM_REQ_BATTLE_OBJECT_INTERACTION +{ + int32 objecttableid=1; // ͷ Ʋ Ʈ Table ID + string objectguid=2; // ͷ Ʋ Ʈ GUID +} + +// . +message SM_REQ_BATTLE_MANTLE +{ + float px =1; // + float py =2; // + float pz =3; // + float lx =4; // + float ly =5; // + float lz =6; // + float vx =7; // + float vy =8; // + float vz =9; // + float ang =10; // + float tx =11; // + float ty =12; // + float tz =13; // + int32 height = 14;// +} + +// ΰ ε +message SM_REQ_BATTLE_FINISHED_LODING +{ + float px =1; // + float py =2; // + float pz =3; // + float ang =4; // +} + +// غ : δ â +message SM_REQ_BATTLE_READY_TO_EXIT +{ +} + +// Ÿݿ ؼ ư +message SM_REQ_BATTLE_LAUNCH_CHARACTER +{ + SM_CHARACTER_KEY target=1; // ư + float vx =2; // LaunchVelocity + float vy =3; // + float vz =4; // + int32 xyoverride = 5;//bXYOverride + int32 zoverride = 6;//bZOverride +} + +// Ư Ȳ ϸ̼ +message SM_REQ_BATTLE_PLAY_ANIMATION +{ + SM_CHARACTER_KEY target =1; // + int32 type = 2; // + int32 value = 3; // +} + +// Ʈ +message SM_REQ_BATTLE_HIT_EFFECT +{ + SM_CHARACTER_KEY target =1; // + int32 weapontype = 2; // + int32 hiteffecttype = 3; // + float nx =4; // ImpactNormal + float ny =5; // + float nz =6; // + float px =7; // ImpactPoint + float py =8; // + float pz =9; // +} + +message SM_MOB_AI_VECTOR +{ + float px =1; // ImpactPoint + float py =2; // + float pz =3; // +} + +message SM_MOB_AI_AGGRO +{ + SM_CHARACTER_KEY target = 1; + int32 aggropoint = 2; +} + +message SM_MOB_AI_SYNCDATA +{ + string mobguid = 1; + int32 currentAiBehavior = 2; + + int32 taskflags = 3; + + SM_MOB_AI_VECTOR startLocation = 4; + SM_MOB_AI_VECTOR lastKnownLocation = 5; + SM_MOB_AI_VECTOR lastHearingLocation = 6; + + SM_CHARACTER_KEY targetCharacter = 7; + SM_CHARACTER_KEY lastHearingCharacter = 8; + + repeated SM_MOB_AI_AGGRO targetCharacterList = 9; // +} + +message SM_MOB_AI_ATTACK +{ + string mobguid = 1; + float attack_time = 2; + SM_CHARACTER_KEY targetCharacter = 3; + int32 attack_type = 4; + SM_MOB_AI_VECTOR location = 5; +} + +// Ѿ ߻. +message SM_MOB_AI_SHOOT +{ + string mobguid = 1; + float aim_yaw =2; // ī޶ + float aim_pitch =3; // ī޶ + int32 server_time=4; // Ŷ ð + repeated SM_DATA_BATTLE_BULLET bullets = 5; // ߻Ѿ. ϼִ. +} + +// . +message SM_MOB_AI_RELOAD +{ + string mobguid = 1; +} + +message SM_MOB_AI_FOCUS +{ + string mobguid = 1; + int32 focus = 2; + SM_CHARACTER_KEY targetCharacter = 3; +} + +message SM_MOB_MOVETO +{ + string mobguid = 1; + int32 targetType = 2; + SM_MOB_AI_VECTOR tagetLocation = 3; + float radius = 4; + int32 stop = 5; + float moveSpeed = 6; +} + +message SM_MOB_SPAWN +{ + string mobguid = 1; + int32 mob_type = 2; + SM_MOB_AI_VECTOR location = 3; + float angle = 4; + string anchorguid = 5; +} + +message SM_RUNNING_TRIGGER +{ + string Anchor_GUID = 1; + string User_GUID = 2; + int32 Event_Time = 3; + float force_x = 4; + float force_y = 5; + float force_z = 6; + int32 Event_type = 7; + BoolType Event_active = 8; +} \ No newline at end of file diff --git a/Protocol/client-proto/.svn/wc.db b/Protocol/client-proto/.svn/wc.db index 830b490..0889264 100644 Binary files a/Protocol/client-proto/.svn/wc.db and b/Protocol/client-proto/.svn/wc.db differ diff --git a/Protocol/client-proto/Packet.proto b/Protocol/client-proto/Packet.proto index 442226d..6416bab 100644 --- a/Protocol/client-proto/Packet.proto +++ b/Protocol/client-proto/Packet.proto @@ -446,12 +446,6 @@ message SM_MOB_SPAWN string anchorguid = 5; } -message SM_HOST_ROOM_INFO -{ - string Host_GUID = 1; - int32 Room_Start_Time = 2; -} - message SM_RUNNING_TRIGGER { string Anchor_GUID = 1; @@ -460,4 +454,6 @@ message SM_RUNNING_TRIGGER float force_x = 4; float force_y = 5; float force_z = 6; + int32 Event_type = 7; + BoolType Event_active = 8; } \ No newline at end of file diff --git a/Protocol/client-proto/Protocol.proto b/Protocol/client-proto/Protocol.proto index a554b73..8db7b59 100644 --- a/Protocol/client-proto/Protocol.proto +++ b/Protocol/client-proto/Protocol.proto @@ -57,8 +57,7 @@ option csharp_namespace = "Google.Protobuf.CES.Packet"; MOB_AI_SHOOT = 205; MOB_AI_RELOAD = 206; - HOST_ROOM_INFO = 300; - RUNNING_TRIGGER = 301; + RUNNING_TRIGGER = 300; }; diff --git a/Protocol/proto/ClientToGame.proto b/Protocol/proto/ClientToGame.proto index eaffe47..244b12a 100644 --- a/Protocol/proto/ClientToGame.proto +++ b/Protocol/proto/ClientToGame.proto @@ -1227,14 +1227,20 @@ message ClientToGameReq { google.protobuf.Timestamp packetCreateTime = 1; } - - - - //Ʋ Ŷ // ============================================================================================ + //============================================================================================= + // GameMode + + message C2GS_REQ_GAME_OBJECT_INTERACTION + { + string anchorGuid = 1; + google.protobuf.Timestamp packetCreateTime = 2; + } + // GameMode + //============================================================================================= //============================================================================================= // REQ Ŷ @@ -1487,6 +1493,11 @@ message ClientToGameReq C2GS_REQ_BATTLE_PLAYER_RESPAWN reqBattlePlayerRespawn = 100003; C2GS_REQ_BATTLE_OBJECT_INTERACTION reqBattleObjectInteraction = 100004; C2GS_REQ_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE reqPreparationForLeavingInstance = 100005; + + //============================================================================================= + // GameMode Ŷ - ϴ ⿡ ϰ ߿ ø Ѵ. + C2GS_REQ_GAME_OBJECT_INTERACTION reqGameObjectInteraction = 100010; + } } @@ -2724,9 +2735,20 @@ message ClientToGameRes google.protobuf.Timestamp packetProcessStartTime = 1; google.protobuf.Timestamp beforSendAckTime = 2; } - //Ʋ Ŷ // ============================================================================================ + + + // ============================================================================================ + //Ӹ Ŷ + message GS2C_ACK_GAME_OBJECT_INTERACTION + { + string anchorGuid = 1; + } + //Ӹ Ŷ + // ============================================================================================ + + //============================================================================================= // ACK Ŷ @@ -2981,7 +3003,10 @@ message ClientToGameRes GS2C_ACK_BATTLE_PLAYER_RESPAWN ackBattlePlayerRespawn = 100003; GS2C_ACK_BATTLE_OBJECT_INTERACTION ackBattleObjectInteraction = 100004; GS2C_ACK_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE ackPreparationForLeavingInstance = 100005; - + + //============================================================================================= + // GameMode Ŷ - ϴ ⿡ ϰ ߿ ø Ѵ. + GS2C_ACK_GAME_OBJECT_INTERACTION ackGameObjectInteraction = 100010; } } @@ -3807,6 +3832,15 @@ message ClientToGameMessage } + //================================================================================================= + // GameMode Notify + //================================================================================================= + message GS2C_NTF_GAME_STATE_UPDATE_NOTI + { + GameModeState currentState = 1; + google.protobuf.Timestamp nextUpdatableTime = 2; //ð · ȯǴ ð ° ٲ𽺵 ִ.ʿ ó + } + message GS2C_NTF_POD_COMBAT_STATE { repeated BattlePodCombatState podCombatState = 1; @@ -3882,6 +3916,7 @@ message ClientToGameMessage message GS2C_NTF_BEACON_SHOP_REFRESH { string beaconGuid = 1; + BoolType hasBeaconShopItem = 2; } // @@ -4082,6 +4117,9 @@ message ClientToGameMessage GS2C_NTF_BATTLE_EVENT ntfBattleEvent = 100008; GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE ntfPreparationForLeavingBattleInstance = 100009; GS2C_NTF_P2P_HOST_UPDATE ntfP2PHostUpdate = 100010; + + //GameMode + GS2C_NTF_GAME_STATE_UPDATE_NOTI ntfGameStateUpdate = 110000; } } diff --git a/Protocol/proto/Define_Result.proto b/Protocol/proto/Define_Result.proto index 66e19d9..250b9c6 100644 --- a/Protocol/proto/Define_Result.proto +++ b/Protocol/proto/Define_Result.proto @@ -1191,6 +1191,8 @@ enum ServerErrorCode BeaconShopFailedToFindOrUpdate = 57028; // BeaconShop db에서 찾지 못하거나 update에 실패했습니다. BeaconShopDbException = 57029; // BeaconShop db에서 Exception이 발생했습니다. BeaconShopOverSellingPrice = 57030; // BeaconShop에 판매가격이 최대값보다 높습니다. + BeaconShopOverRentalSafeTime = 57031; // BeaconShop이 있는 마이홈 랜탈 기간이 곧 만료됩니다. + BeaconShopDeactiveItemForSell = 57032; // BeaconShop에 판매 아이템의 판매가 비활성화 되었습니다. //============================================================================================= // UGQ 관련 오류. Web Api 오류 @@ -1326,7 +1328,10 @@ enum ServerErrorCode GameModeJoinHandlerNotExist = 11000100; // 게임모드 조인 핸들러가 없습니다. GameModeInitHandlerNotExist = 11000101; // 게임모드 Init 핸들러가 없습니다. GameModeJoinSuccessHandlerNotExist = 11000102; // 게임모드 조인 성공 핸들러가 없습니다. - + GameModeCreateFail = 11000103; // 게임모드 생성 실패 + GameModeClassIsNull = 11000104; // 게임모드가 null + GameModeAlreadyExist = 11000105; // 게임모드가 존재 + GameModeInvalidAnchorGuid = 11000106; // 유효하지 않은 AnchorGuid 입니다. diff --git a/Protocol/proto/Game_Define.proto b/Protocol/proto/Game_Define.proto index 9383d79..71da0c8 100644 --- a/Protocol/proto/Game_Define.proto +++ b/Protocol/proto/Game_Define.proto @@ -120,7 +120,19 @@ enum EntityType EntityType_BattleInstance = 901; //ϴ ⿡ EntityType_BattleEvent = 902; //ϴ ⿡ EntityType_SystemBattleEvent = 903; //ϴ ⿡ - + EntityType_GameRoom = 904; + EntityType_GameModeTPSFreeForAll = 90401; + EntityType_GameModeTPSTeamDeathMatch = 90402; + EntityType_GameModeRunAdventure = 90411; + EntityType_GameModeRunRace = 90412; + EntityType_GameObject = 905; + EntityType_GameObjectWeapon = 90501; + EntityType_GameObjectBuff = 90502; + EntityType_GameObjectPodStorage = 90503; + EntityType_GameObjectCombatPod = 90504; + EntityType_GameObjectPickupPod = 90505; + EntityType_GameObjectSavePoint = 90506; + // ۷ι Ƽ EntityType_Party = 10; // Ƽ ƼƼ @@ -160,9 +172,9 @@ enum EntityType EntityType_CaliumEventTicker = 1417; EntityType_BattleEventCheckTicker = 1418; EntityType_BattleInstanceStateCheckTicker = 1419; - - EntityType_LandAuctionReservationConfigureTicker = 1420; - EntityType_LandAuctionCheckTicker = 1421; + EntityType_LandAuctionReservationConfigureTicker = 1420; + EntityType_LandAuctionCheckTicker = 1421; + EntityType_GameModeLifeCycleTicker = 1422; // EntityType_BlockUser = 15; @@ -1954,10 +1966,26 @@ message BattleEventInfo int32 roundCount = 7; } -//message BattleResult -//{ -// string userGuid = 1; -// int32 killCount = 2; -// int32 deathCount = 3; -// repeated ItemAmount rewardedItem = 4; -//} +//================================================================================================= +// - khlee +//================================================================================================= +enum GameModeState +{ + GameModeState_None = 0; + + //common + GameModeState_Destroyed = 1; + + //TPS FFA + GameModeState_Rounding = 11; + GameModeState_RoundWait = 12; + GameModeState_RoundEndAll = 13; + + + GameModeState_Ready = 21; + GameModeState_Start = 22; + GameModeState_End = 23; + +} + + diff --git a/Protocol/proto/ServerMessage.proto b/Protocol/proto/ServerMessage.proto index 716c6ee..34478fa 100644 --- a/Protocol/proto/ServerMessage.proto +++ b/Protocol/proto/ServerMessage.proto @@ -589,6 +589,7 @@ message ServerMessage { string targetUserGuid = 1; string targetBeaconGuid = 2; + BoolType hasBeaconShopItem = 3; } google.protobuf.Timestamp messageTime = 1; diff --git a/ServerBase/Entity/Task/EntityTicker.cs b/ServerBase/Entity/Task/EntityTicker.cs index 6e29d56..6a0d6a2 100644 --- a/ServerBase/Entity/Task/EntityTicker.cs +++ b/ServerBase/Entity/Task/EntityTicker.cs @@ -38,7 +38,7 @@ public abstract class EntityTicker : EntityBase, ITaskTicker } } - public EntityTicker(EntityType entityType, EntityBase parent, Int32 onTickIntervalMilliseconds, CancellationTokenSource toCancelToken) + public EntityTicker(EntityType entityType, EntityBase parent, Int32 onTickIntervalMilliseconds, CancellationTokenSource? toCancelToken) : base(entityType, parent) { m_tick_interval_milliseconds = onTickIntervalMilliseconds; diff --git a/ServerBase/Helper/ResultHelper.cs b/ServerBase/Helper/ResultHelper.cs index 65ea3d4..c262416 100644 --- a/ServerBase/Helper/ResultHelper.cs +++ b/ServerBase/Helper/ResultHelper.cs @@ -5,84 +5,135 @@ using System.Text; using System.Threading.Tasks; -using ServerCore; using ServerBase; +using ServerCore; namespace ServerBase; -//============================================================================================= -// Result 관련 확장 함수 -// -// author : kangms -// -//============================================================================================= +/*============================================================================================= + Result 관련 확장 함수 + + 1. Result + Guard 조합 처리 + + public Result doFunction(string input) + { + var owner = getOwner(); + NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!") + ArgumentNullReferenceCheckHelper.throwIfNull(input, () => $"input is null !!! - {owner.toBasicString()}") + + var result = new Result(); + + try + { + // 내부 로직 수행 + if (input.isNullOrWhiteSpace()) + { + result.setFail(ServerErrorCode.InvalidArgument, "Input is empty."); + return result; + } + + // 비즈니스 로직 처리 성공 + result.setSuccess("Operation completed."); + return result; + } + catch (Exception e) + { + // 예상치 못한 예외 발생시 실패 처리 + err_msg = $"Exception !!!, Failed to perform, in xxx() !!! : exception:{e} - {owner.toBasicString()}"; + result.setFail(ServerErrorCode.InternalError, err_msg); + return result; + } + } + + 2. Result 값에 따른 예외 처리 + + var result = server_logic.doFunction(); + + // 실패시, 예외가 발생 한다 !!!, (발생되기 원하는 예외타입을 작성) + result.throwIfFail( + () => $"Failed to doFunction() !!!, Details: {result.toBasicString()}", + msg => new DesiredException(msg) + ); + + author : kangms + +=============================================================================================*/ public static class ResultHelper { public static bool isSuccess(this Result result) { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); - if (true == result.ErrorCode.isSuccess()) - { - return true; - } - - return false; + return result.ErrorCode.isSuccess(); } public static bool isFail(this Result result) { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); - if (true == result.ErrorCode.isFail()) - { - return true; - } - - return false; + return result.ErrorCode.isFail(); } public static void setSuccess(this Result result, string resultString = "") - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); result.set(ServerErrorCode.Success, resultString); } - public static void setFail(this Result result, ServerErrorCode errorCode, string resultString = "") - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + public static void setFail(this Result result, ServerErrorCode errorCode, string resultString = "") + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); result.set(errorCode, resultString); } - public static string getResultString(this Result result) - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + public static string getResultString(this Result result) + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); return result.ResultString; - } - - public static ServerErrorCode getErrorCode(this Result result) - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); - - return result.ErrorCode; - } - - public static void set(this Result result, ServerErrorCode errorCode, string resultString) - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); - - result.ErrorCode = errorCode; - result.ResultString = resultString; } - public static string toBasicString(this Result result) - { - ArgumentNullReferenceCheckHelper.throwIfNull(result, () => $"result is null !!!"); + public static ServerErrorCode getErrorCode(this Result result) + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); + + return result.ErrorCode; + } + + public static void set(this Result result, ServerErrorCode errorCode, string resultString) + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); + + result.ErrorCode = errorCode; + result.ResultString = resultString; + } + + public static void throwIfFail( this Result result + , Func? fnLog = null + , Func? overrideException = null ) + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); + + if (result.ErrorCode.isSuccess()) + return; + + string message = fnLog?.Invoke() ?? $"Operation failed. ErrorCode: {result.ErrorCode}, ResultString: {result.ResultString}"; + + if (null != overrideException) + { + throw overrideException(message); + } + + throw new InvalidOperationException(message); + } + + public static string toBasicString(this Result result) + { + ArgumentNullReferenceCheckHelper.throwIfNull(result, () => "Result is null !!!"); return $"ErrorInfo: errCode:{result.getErrorCode()}, errDesc:{result.getResultString()}"; - } + } } \ No newline at end of file diff --git a/ServerBase/MessageQueue/RabbitMqConnector.cs b/ServerBase/MessageQueue/RabbitMqConnector.cs index dc908ef..8b18e28 100644 --- a/ServerBase/MessageQueue/RabbitMqConnector.cs +++ b/ServerBase/MessageQueue/RabbitMqConnector.cs @@ -28,7 +28,7 @@ namespace ServerBase; public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbitMqSession, IModule, IWithPacketNamespaceVerifier { public delegate Task FnServerMessageRecvFromConsumer(BasicDeliverEventArgs ea, IMessage message); - public FnServerMessageRecvFromConsumer? _fnServerMessageRecvFromConsumer; + public FnServerMessageRecvFromConsumer? m_fn_server_message_recv_from_consumer; private readonly PacketReceiver m_packet_receiver; @@ -66,7 +66,7 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit { var packet_namespace = ".PacketHandler"; - if (null != toCheckNamespace + if ( null != toCheckNamespace && true == toCheckNamespace.Contains(packet_namespace)) { return true; @@ -132,14 +132,14 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit Log.getLogger().error("rabbitMq registerRecvHandler error"); return result; } - - _fnServerMessageRecvFromConsumer = fnFromConsumer; + + m_fn_server_message_recv_from_consumer = fnFromConsumer; return base.startConsumer(); } public async Task onRecvProtocol(BasicDeliverEventArgs ea, T recvProtocol) - where T : Google.Protobuf.IMessage + where T : Google.Protobuf.IMessage { Log.getLogger().info($"receive:{recvProtocol.ToString()} - {toBasicString()}"); @@ -227,13 +227,13 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit return; } - if(_fnServerMessageRecvFromConsumer == null) + if(m_fn_server_message_recv_from_consumer == null) { Log.getLogger().error("_fnServerMessageRecvFromConsumer is null"); return; } - await _fnServerMessageRecvFromConsumer.Invoke(ea, message); + await m_fn_server_message_recv_from_consumer.Invoke(ea, message); } protected override void onRecvProtoMessageFromConsumer(object? sender, BasicDeliverEventArgs ea) @@ -241,19 +241,19 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit } protected virtual bool onCheckByExchangeType(BasicDeliverEventArgs ea, T recvProtocol) - where T : Google.Protobuf.IMessage + where T : Google.Protobuf.IMessage { return true; } public Task? SendKick( string destServer, string name, Int32 delayMS , Action>? callback ) - { - int reqId = nextReqId(); + { + int reqId = nextReqId(); Task? waitTask = null; if (callback != null) - { + { CancellationTokenSource cancelTokenSrc = new CancellationTokenSource(delayMS); waitTask = registerCompletionSource(reqId, cancelTokenSrc.Token, callback); @@ -271,18 +271,19 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit SendMessage(destServer, message); return waitTask; - } + } - public void SendMessage(string to, ServerMessage message) + public void SendMessage(string to, ServerMessage message) + { + var con = getConnection(); + if(null == con) { - IConnection? con = getConnection(); - if(con == null) - { Log.getLogger().error("GetConnection return null"); - return; - } - using (var channel = con.CreateModel()) - { + return; + } + + using (var channel = con.CreateModel()) + { Stopwatch? stopwatch = null; var event_tid = string.Empty; @@ -301,16 +302,16 @@ public abstract partial class RabbitMqConnector : RabbitMQConnectorBase, IRabbit autoDelete: true, arguments: null ); - message.MessageTime = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.UtcNow); - message.MessageSender = getServiceName(); + message.MessageTime = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.UtcNow); + message.MessageSender = getServiceName(); - string messageJson = JsonFormatter.Default.Format(message); - var body = Encoding.UTF8.GetBytes(messageJson); + string messageJson = JsonFormatter.Default.Format(message); + var body = Encoding.UTF8.GetBytes(messageJson); - channel.BasicPublish( exchange: "", - routingKey: to, - basicProperties: null, - body: body ); + channel.BasicPublish( exchange: "", + routingKey: to, + basicProperties: null, + body: body ); Log.getLogger().info($"send to MQS !!!, msg:{messageJson} - receiver:{to}"); diff --git a/ServerCommon/1. Define/BusinessLog/Battle/BattleInstancesObjects.cs b/ServerCommon/1. Define/BusinessLog/Battle/BattleInstancesObjects.cs index 625eefe..5ecf4bc 100644 --- a/ServerCommon/1. Define/BusinessLog/Battle/BattleInstancesObjects.cs +++ b/ServerCommon/1. Define/BusinessLog/Battle/BattleInstancesObjects.cs @@ -31,7 +31,6 @@ public class BattleInstancesObject public class BattleObjectPodStorage : BattleInstancesObject { - //private ECombatPodType m_combat_pod_type { get; } = ECombatPodType.Storage; public Int32 m_reward_cnt { get; set; } = 0; public BattleObjectPodStorage(string anchorGuid) : base(EBattleObjectType.Pod_Combat, anchorGuid) diff --git a/ServerCommon/1. Define/BusinessLog/Domain/BeaconShopData.cs b/ServerCommon/1. Define/BusinessLog/Domain/BeaconShopData.cs index ab5968f..d20d3f5 100644 --- a/ServerCommon/1. Define/BusinessLog/Domain/BeaconShopData.cs +++ b/ServerCommon/1. Define/BusinessLog/Domain/BeaconShopData.cs @@ -45,6 +45,8 @@ public class BeaconShopLogData : ILogInvoker.IInfo public DateTime SellingFinishTime { get; set; } = new(); [JsonProperty] public string BuyerGuid { get; set; } = string.Empty; + [JsonProperty] + public bool IsActiveSelling { get; set; } = false; //===================================================================================== // 로그 생성용 객체 정의 @@ -64,6 +66,7 @@ public class BeaconShopLogData : ILogInvoker.IInfo BeaconMyHomeGuid = logData.BeaconMyHomeGuid; SellingFinishTime = logData.SellingFinishTime; BuyerGuid = logData.BuyerGuid; + IsActiveSelling = logData.IsActiveSelling; } //===================================================================================== diff --git a/ServerCommon/1. Define/BusinessLog/Domain/PlanetItemExchangeLogData.cs b/ServerCommon/1. Define/BusinessLog/Domain/PlanetItemExchangeLogData.cs index c62dc85..db7e5ba 100644 --- a/ServerCommon/1. Define/BusinessLog/Domain/PlanetItemExchangeLogData.cs +++ b/ServerCommon/1. Define/BusinessLog/Domain/PlanetItemExchangeLogData.cs @@ -5,7 +5,7 @@ using ServerBase; using ServerCommon; -namespace BrokerCore.BrokerBusinessLog; +namespace ServerCommon.BusinessLogDomain; public class PlanetItemExchangeLogData : ILogInvoker.IInfo diff --git a/ServerCommon/1. Define/BusinessLog/Domain/PlanetProviderAuthLogData.cs b/ServerCommon/1. Define/BusinessLog/Domain/PlanetProviderAuthLogData.cs index 8e58b5f..8f3baff 100644 --- a/ServerCommon/1. Define/BusinessLog/Domain/PlanetProviderAuthLogData.cs +++ b/ServerCommon/1. Define/BusinessLog/Domain/PlanetProviderAuthLogData.cs @@ -5,7 +5,7 @@ using ServerBase; using ServerCommon; -namespace BrokerCore.BrokerBusinessLog; +namespace ServerCommon.BusinessLogDomain; //========================================================================================= // Planet 컨텐츠 제공 업체 인증 로그 diff --git a/ServerCommon/1. Define/BusinessLog/Domain/PlanetUserAuthLogData.cs b/ServerCommon/1. Define/BusinessLog/Domain/PlanetUserAuthLogData.cs index a16e61d..5fa6b63 100644 --- a/ServerCommon/1. Define/BusinessLog/Domain/PlanetUserAuthLogData.cs +++ b/ServerCommon/1. Define/BusinessLog/Domain/PlanetUserAuthLogData.cs @@ -6,7 +6,7 @@ using ServerCommon; -namespace BrokerCore.BrokerBusinessLog; +namespace ServerCommon.BusinessLogDomain; //===================================================================================== // 플래닛 유저 인증 비즈니스 로그 diff --git a/ServerCommon/1. Define/BusinessLog/Enum/LogEnum.cs b/ServerCommon/1. Define/BusinessLog/Enum/LogEnum.cs index b25ccaf..f9da61e 100644 --- a/ServerCommon/1. Define/BusinessLog/Enum/LogEnum.cs +++ b/ServerCommon/1. Define/BusinessLog/Enum/LogEnum.cs @@ -933,6 +933,8 @@ namespace ServerCommon BeaconShopUpdateDailyCount, [BusinessLogEnum("비컨 상점 기록 영수증 제거", LogCategoryType.BeaconShop, LogSubCategoryType.None, "Game")] BeaconShopDeleteRecord, + [BusinessLogEnum("비컨 상점 아이템 비활성화", LogCategoryType.BeaconShop, LogSubCategoryType.None, "Game")] + BeaconShopDeactiveItems, BeaconShopEnd, #endregion diff --git a/ServerCommon/1. Define/TypeDefine.cs b/ServerCommon/1. Define/TypeDefine.cs index bc25deb..39894c8 100644 --- a/ServerCommon/1. Define/TypeDefine.cs +++ b/ServerCommon/1. Define/TypeDefine.cs @@ -421,6 +421,26 @@ public enum StageMoveType Leave = 2, } + +public enum GameGenreType +{ + None = 0, + + TPS = 1, + Running = 2, + //Dance = 3, +} +public enum GameModeType +{ + None = 0, + + TPS_FFA = 1, + TPS_TDM = 2, + RUN_ADV = 3, + RUN_RACE = 4, + //DANCE_ = 5, +} + //============================================================================================= // Broker Api 에서 사용하는 아이템 교환 Type //============================================================================================= diff --git a/ServerCommon/Doc/OwnerContents/BeaconShopItemDoc.cs b/ServerCommon/Doc/OwnerContents/BeaconShopItemDoc.cs index 8b06097..891320e 100644 --- a/ServerCommon/Doc/OwnerContents/BeaconShopItemDoc.cs +++ b/ServerCommon/Doc/OwnerContents/BeaconShopItemDoc.cs @@ -23,6 +23,9 @@ namespace ServerCommon [JsonProperty("price_for_unit")] public double PriceForUnit { get; set; } = 0; + [JsonProperty("is_active_selling")] + public bool IsActiveSelling { get; set; } = false; + public BeaconShopItemAttrib() : base(typeof(BeaconShopItemAttrib).Name, false) { } diff --git a/ServerCommon/Doc/OwnerContents/ItemDoc.cs b/ServerCommon/Doc/OwnerContents/ItemDoc.cs index a6e1dfd..4a0ab49 100644 --- a/ServerCommon/Doc/OwnerContents/ItemDoc.cs +++ b/ServerCommon/Doc/OwnerContents/ItemDoc.cs @@ -52,7 +52,7 @@ public class ItemAttrib : AttribBase public List Attributes { get; set; } = new(); [JsonProperty("equiped_inven_type")] - public InvenEquipType EquipedIvenType { get; set; } = InvenEquipType.None; + public InvenEquipType EquipedInvenType { get; set; } = InvenEquipType.None; [JsonProperty("equiped_pos")] public UInt16 EquipedPos { get; set; } = 0; @@ -150,10 +150,9 @@ public class ItemDoc : DynamoDbDocBase, ICopyDocFromEntityAttribute to_copy_doc_item_attrib.ItemStackCount = item_attribute.ItemStackCount; to_copy_doc_item_attrib.Level = item_attribute.Level; to_copy_doc_item_attrib.Attributes = item_attribute.Attributes.Select(x => x).ToList(); - to_copy_doc_item_attrib.EquipedIvenType = item_attribute.EquipedIvenType; + to_copy_doc_item_attrib.EquipedInvenType = item_attribute.EquipedInvenType; to_copy_doc_item_attrib.EquipedPos = item_attribute.EquipedPos; - return true; } } diff --git a/ServerCommon/Entity/Attribute/BeaconShopItemAttribute.cs b/ServerCommon/Entity/Attribute/BeaconShopItemAttribute.cs index 8f5d8a7..9305bf0 100644 --- a/ServerCommon/Entity/Attribute/BeaconShopItemAttribute.cs +++ b/ServerCommon/Entity/Attribute/BeaconShopItemAttribute.cs @@ -12,7 +12,7 @@ using Amazon.S3.Model; namespace ServerCommon { - public class BeaconShopItemAttribute : ItemAttributeBase + public class BeaconShopItemAttribute : ItemAttributeBase, IWithCommonResultFiller { [JsonProperty] public USER_GUID UserGuid { get; set; } = string.Empty; @@ -26,6 +26,8 @@ namespace ServerCommon [JsonProperty] public double PriceForUnit { get; set; } = 0.0; + [JsonProperty] + public bool IsActiveSelling { get; set; } = false; public BeaconShopItemAttribute(ItemBase owner, EntityBase entityOfOwnerEntityType) : base(owner, entityOfOwnerEntityType) @@ -41,6 +43,7 @@ namespace ServerCommon ItemGuid = string.Empty; SellingFinishTime = new(); PriceForUnit = 0; + IsActiveSelling = false; } public override EntityAttributeBase onCloned() @@ -59,13 +62,14 @@ namespace ServerCommon cloned.BeaconGuid = BeaconGuid; cloned.SellingFinishTime = SellingFinishTime; cloned.PriceForUnit = PriceForUnit; + cloned.IsActiveSelling = IsActiveSelling; cloned.ItemGuid = ItemGuid; cloned.ItemMetaId = ItemMetaId; cloned.ItemStackCount = ItemStackCount; cloned.Level = Level; cloned.Attributes = Attributes.Select(x => x).ToList(); - cloned.EquipedIvenType = EquipedIvenType; + cloned.EquipedInvenType = EquipedInvenType; cloned.EquipedPos = EquipedPos; return cloned; @@ -109,13 +113,14 @@ namespace ServerCommon to_copy_doc_attrib.BeaconGuid = BeaconGuid; to_copy_doc_attrib.SellingFinishTime = SellingFinishTime; to_copy_doc_attrib.PriceForUnit = PriceForUnit; + to_copy_doc_attrib.IsActiveSelling = IsActiveSelling; to_copy_doc_attrib.ItemGuid = ItemGuid; to_copy_doc_attrib.ItemMetaId = ItemMetaId; to_copy_doc_attrib.ItemStackCount = ItemStackCount; to_copy_doc_attrib.Level = Level; to_copy_doc_attrib.Attributes = Attributes.Select(x => x).ToList(); - to_copy_doc_attrib.EquipedIvenType = EquipedIvenType; + to_copy_doc_attrib.EquipedInvenType = EquipedInvenType; to_copy_doc_attrib.EquipedPos = EquipedPos; if (false == isForQuery) @@ -171,18 +176,26 @@ namespace ServerCommon BeaconGuid = doc_attrib.BeaconGuid; SellingFinishTime = doc_attrib.SellingFinishTime; PriceForUnit = doc_attrib.PriceForUnit; + IsActiveSelling = doc_attrib.IsActiveSelling; ItemGuid = doc_attrib.ItemGuid; ItemMetaId = doc_attrib.ItemMetaId; ItemStackCount = doc_attrib.ItemStackCount; Level = doc_attrib.Level; Attributes = doc_attrib.Attributes.Select(x => x).ToList(); - EquipedIvenType = doc_attrib.EquipedIvenType; + EquipedInvenType = doc_attrib.EquipedInvenType; EquipedPos = doc_attrib.EquipedPos; return true; } + public new void onFillCommonResult( EntityCommonResult commonResult + , EntityAttributeBase origin, QueryBatchBase? queryBatch = null ) + { + // commonResult 정보를 채우지 못하게 재정의 하여 그냥 반환 한다. + return; + } + public override Result onMerge(EntityAttributeBase otherEntityAttribute) { var owner = getOwner(); @@ -217,13 +230,14 @@ namespace ServerCommon BeaconGuid = beacon_shop_attribute.BeaconGuid; SellingFinishTime = beacon_shop_attribute.SellingFinishTime; PriceForUnit = beacon_shop_attribute.PriceForUnit; + IsActiveSelling = beacon_shop_attribute.IsActiveSelling; ItemGuid = beacon_shop_attribute.ItemGuid; ItemMetaId = beacon_shop_attribute.ItemMetaId; ItemStackCount = beacon_shop_attribute.ItemStackCount; Level = beacon_shop_attribute.Level; Attributes = beacon_shop_attribute.Attributes.Select(x => x).ToList(); - EquipedIvenType = beacon_shop_attribute.EquipedIvenType; + EquipedInvenType = beacon_shop_attribute.EquipedInvenType; EquipedPos = beacon_shop_attribute.EquipedPos; //===================================================================================== @@ -251,13 +265,14 @@ namespace ServerCommon beacon_shop_attrib.BeaconGuid = BeaconGuid; beacon_shop_attrib.SellingFinishTime = SellingFinishTime; beacon_shop_attrib.PriceForUnit = PriceForUnit; + beacon_shop_attrib.IsActiveSelling = IsActiveSelling; beacon_shop_attrib.ItemGuid = ItemGuid; beacon_shop_attrib.ItemMetaId = ItemMetaId; beacon_shop_attrib.ItemStackCount = ItemStackCount; beacon_shop_attrib.Level = Level; beacon_shop_attrib.Attributes = Attributes.Select(x => x).ToList(); ; - beacon_shop_attrib.EquipedIvenType = EquipedIvenType; + beacon_shop_attrib.EquipedInvenType = EquipedInvenType; beacon_shop_attrib.EquipedPos = EquipedPos; return result; diff --git a/ServerCommon/Entity/Attribute/ItemAttributeBase.cs b/ServerCommon/Entity/Attribute/ItemAttributeBase.cs index 2a6b251..1e7f2f0 100644 --- a/ServerCommon/Entity/Attribute/ItemAttributeBase.cs +++ b/ServerCommon/Entity/Attribute/ItemAttributeBase.cs @@ -71,9 +71,9 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib public List Attributes { get; set; } = new(); - // EquipedIvenType.None 일경우 EquipedPos = 0 이다 !!! - kangms + // EquipedInvenType.None 일경우 EquipedPos = 0 이다 !!! - kangms [JsonProperty] - public InvenEquipType EquipedIvenType { get; set; } = InvenEquipType.None; + public InvenEquipType EquipedInvenType { get; set; } = InvenEquipType.None; [JsonProperty] public UInt16 EquipedPos { get; set; } = 0; @@ -106,7 +106,7 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib ItemStackCount = 0; Level = 0; Attributes.Clear(); - EquipedIvenType = InvenEquipType.None; + EquipedInvenType = InvenEquipType.None; EquipedPos = 0; getAttributeState().reset(); @@ -151,7 +151,7 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib to_copy_doc_item_attrib.ItemStackCount = ItemStackCount; to_copy_doc_item_attrib.Level = Level; to_copy_doc_item_attrib.Attributes = Attributes.Select(x => x).ToList(); - to_copy_doc_item_attrib.EquipedIvenType = EquipedIvenType; + to_copy_doc_item_attrib.EquipedInvenType = EquipedInvenType; to_copy_doc_item_attrib.EquipedPos = EquipedPos; if (false == isForQuery) @@ -398,7 +398,7 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib ItemStackCount = other_item_attribute.ItemStackCount; Level = other_item_attribute.Level; Attributes = other_item_attribute.Attributes.Select(x => x).ToList(); - EquipedIvenType = other_item_attribute.EquipedIvenType; + EquipedInvenType = other_item_attribute.EquipedInvenType; EquipedPos = other_item_attribute.EquipedPos; //===================================================================================== @@ -428,7 +428,7 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib item_attrib.ItemStackCount = ItemStackCount; item_attrib.Level = Level; item_attrib.Attributes = Attributes.Select(x => x).ToList(); ; - item_attrib.EquipedIvenType = EquipedIvenType; + item_attrib.EquipedInvenType = EquipedInvenType; item_attrib.EquipedPos = EquipedPos; return result; @@ -469,7 +469,7 @@ public abstract class ItemAttributeBase : EntityAttributeBase, ICopyEntityAttrib ItemStackCount = item_attrib.ItemStackCount; Level = item_attrib.Level; Attributes = item_attrib.Attributes.Select(x => x).ToList(); - EquipedIvenType = item_attrib.EquipedIvenType; + EquipedInvenType = item_attrib.EquipedInvenType; EquipedPos = item_attrib.EquipedPos; return true; diff --git a/ServerCommon/Entity/Attribute/MyhomeItemAttribute.cs b/ServerCommon/Entity/Attribute/MyhomeItemAttribute.cs index 29d275d..c31ed50 100644 --- a/ServerCommon/Entity/Attribute/MyhomeItemAttribute.cs +++ b/ServerCommon/Entity/Attribute/MyhomeItemAttribute.cs @@ -61,7 +61,7 @@ namespace ServerCommon cloned.ItemStackCount = ItemStackCount; cloned.Level = Level; cloned.Attributes = Attributes.Select(x => x).ToList(); - cloned.EquipedIvenType = EquipedIvenType; + cloned.EquipedInvenType = EquipedInvenType; cloned.EquipedPos = EquipedPos; return cloned; diff --git a/ServerCommon/Entity/Attribute/UgcNpcItemAttribute.cs b/ServerCommon/Entity/Attribute/UgcNpcItemAttribute.cs index afa1d21..4184abe 100644 --- a/ServerCommon/Entity/Attribute/UgcNpcItemAttribute.cs +++ b/ServerCommon/Entity/Attribute/UgcNpcItemAttribute.cs @@ -72,7 +72,7 @@ namespace ServerCommon cloned.ItemStackCount = ItemStackCount; cloned.Level = Level; cloned.Attributes = Attributes.Select(x => x).ToList(); - cloned.EquipedIvenType = EquipedIvenType; + cloned.EquipedInvenType = EquipedInvenType; cloned.EquipedPos = EquipedPos; return cloned; diff --git a/ServerCommon/Entity/Attribute/UserItemAttribute.cs b/ServerCommon/Entity/Attribute/UserItemAttribute.cs index 2dbfcf2..0baae62 100644 --- a/ServerCommon/Entity/Attribute/UserItemAttribute.cs +++ b/ServerCommon/Entity/Attribute/UserItemAttribute.cs @@ -79,7 +79,7 @@ namespace ServerCommon cloned.ItemStackCount = ItemStackCount; cloned.Level = Level; cloned.Attributes = Attributes.Select(x => x).ToList(); - cloned.EquipedIvenType = EquipedIvenType; + cloned.EquipedInvenType = EquipedInvenType; cloned.EquipedPos = EquipedPos; return cloned; @@ -105,7 +105,7 @@ namespace ServerCommon to_copy_doc_item_attrib.ItemStackCount = ItemStackCount; to_copy_doc_item_attrib.Level = Level; to_copy_doc_item_attrib.Attributes = Attributes.Select(x => x).ToList(); - to_copy_doc_item_attrib.EquipedIvenType = EquipedIvenType; + to_copy_doc_item_attrib.EquipedInvenType = EquipedInvenType; to_copy_doc_item_attrib.EquipedPos = EquipedPos; return to_copy_doc; diff --git a/ServerCommon/MetaData/MetaEnums.cs b/ServerCommon/MetaData/MetaEnums.cs index 7baed88..cc788b2 100644 --- a/ServerCommon/MetaData/MetaEnums.cs +++ b/ServerCommon/MetaData/MetaEnums.cs @@ -577,4 +577,17 @@ public enum EPropSmallType EXIT = 5, SHORTCUT = 6, PLAY = 7, +} + + +[JsonConverter(typeof(StringEnumConverter))] +public enum EGameObjectType +{ + None = 0, + Weapon = 1, + Pod_Combat = 2, + Pod_Box = 3, + Buff = 4, + + Save_Point = 5, } \ No newline at end of file diff --git a/ServerCommon/ProudNet/ProudNetListener.cs b/ServerCommon/ProudNet/ProudNetListener.cs index c70bdc6..24fd11b 100644 --- a/ServerCommon/ProudNet/ProudNetListener.cs +++ b/ServerCommon/ProudNet/ProudNetListener.cs @@ -1,4 +1,6 @@ - +using System.Diagnostics; + + using Nettention.Proud; @@ -7,9 +9,6 @@ using ServerBase; using MODULE_ID = System.UInt32; -using ServerControlCenter; -using System.Diagnostics; -using System.Collections.Concurrent; namespace ServerCommon; diff --git a/ServerCore/Config/ConfigManager.cs b/ServerCore/Config/ConfigManager.cs index f6abe04..497d00d 100644 --- a/ServerCore/Config/ConfigManager.cs +++ b/ServerCore/Config/ConfigManager.cs @@ -2,25 +2,22 @@ using System.Collections.Generic; using System.IO; - using Newtonsoft.Json; using Newtonsoft.Json.Linq; - using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; - namespace ServerCore; -public sealed class ConfigManager : Singleton +public sealed class ConfigManager { - private readonly List<(string path, string type)> m_file_sources = new(); - private readonly List m_jobject_sources = new(); - + private readonly Dictionary m_key_to_source = new(); + private readonly Dictionary m_path_to_jobject = new(); private readonly Dictionary m_watchers = new(); + private bool m_is_detect_duplicates = true; public ConfigManager() { } @@ -30,39 +27,38 @@ public sealed class ConfigManager : Singleton m_is_detect_duplicates = enable; } - public ConfigManager addJson(string path) + public ConfigManager addJson(uint key, string path) { loadJson(path); watchFile(path, "json"); + + m_key_to_source[key] = (path, "json"); return this; } - public ConfigManager addYaml(string path) + public ConfigManager addYaml(uint key, string path) { loadYaml(path); watchFile(path, "yaml"); + + m_key_to_source[key] = (path, "yaml"); return this; } private void loadJson(string path) { - if (false == File.Exists(path)) - { + if (!File.Exists(path)) throw new FileNotFoundException($"Not found Json File !!! : path:{path}"); - } var json_text = File.ReadAllText(path); var jObject = JObject.Parse(json_text); - m_file_sources.Add((path, "json")); - m_jobject_sources.Add(jObject); + m_path_to_jobject[path] = jObject; } private void loadYaml(string path) { - if (false == File.Exists(path)) - { + if (!File.Exists(path)) throw new FileNotFoundException($"Not found Yaml File !!! : path:{path}"); - } var yamlText = File.ReadAllText(path); var deserializer = new DeserializerBuilder() @@ -76,20 +72,18 @@ public sealed class ConfigManager : Singleton var json = serializer.Serialize(yamlObject); var jObject = JObject.Parse(json); - m_file_sources.Add((path, "yaml")); - m_jobject_sources.Add(jObject); + m_path_to_jobject[path] = jObject; } private void watchFile(string path, string type) { if (m_watchers.ContainsKey(path)) - { return; - } var directory_name = Path.GetDirectoryName(path); NullReferenceCheckHelper.throwIfNull(directory_name, () => $"directory_name is null !!! : path:{path}, format:{type}"); - var watcher = new FileSystemWatcher(directory_name) + + var watcher = new FileSystemWatcher(directory_name!) { Filter = Path.GetFileName(path), NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size @@ -102,40 +96,54 @@ public sealed class ConfigManager : Singleton m_watchers[path] = watcher; } - private void reloadAll() { Log.getLogger().error("Detected changes in config file !!!, Reloading..."); - m_jobject_sources.Clear(); - foreach (var (path, type) in m_file_sources) + m_path_to_jobject.Clear(); + + foreach (var key in m_key_to_source.Keys) { - if (type == "json") + if (false == reloadConfig(key)) { - loadJson(path); - } - else if (type == "yaml") - { - loadYaml(path); + Log.getLogger().error($"Failed to reload config for key={key} during full reload"); } } } + public bool reloadConfig(uint key) + { + if (!m_key_to_source.TryGetValue(key, out var entry)) + return false; + + try + { + if (entry.type == "json") + loadJson(entry.path); + else if (entry.type == "yaml") + loadYaml(entry.path); + + Log.getLogger().info($"Reloaded config for key={key}, path={entry.path}"); + return true; + } + catch (Exception ex) + { + Log.getLogger().error($"Failed to reload config: key={key}, path={entry.path}, error={ex.Message}"); + return false; + } + } + public T bind(string sectionName) { - if (m_jobject_sources.Count == 0) - { + if (m_path_to_jobject.Count == 0) throw new InvalidOperationException("No config sources have been loaded !!!"); - } var merged = new JObject(); - foreach (var source in m_jobject_sources) + foreach (var source in m_path_to_jobject.Values) { - if (true == m_is_detect_duplicates) - { + if (m_is_detect_duplicates) detectDuplicateKeys(merged, source); - } merged.Merge(source, new JsonMergeSettings { @@ -144,22 +152,114 @@ public sealed class ConfigManager : Singleton }); } - JToken? target_token = null; - if (false == merged.TryGetValue(sectionName, out var found_target_token)) + return extractSection(merged, sectionName, "merged"); + } + + public T bindFromPath(string path, string sectionName) + { + if (!m_path_to_jobject.TryGetValue(path, out var jObject)) + throw new ArgumentException($"Config file not loaded or not found: path={path}"); + + return extractSection(jObject, sectionName, $"path={path}"); + } + + public T bindFromKey(uint key, string sectionName) + { + if (!m_key_to_source.TryGetValue(key, out var entry)) + throw new ArgumentException($"Key not found: key={key}"); + + if (!m_path_to_jobject.TryGetValue(entry.path, out var jObject)) + throw new Exception($"JObject not found for path associated with key={key}"); + + return extractSection(jObject, sectionName, $"key={key}, path={entry.path}"); + } + + public bool tryBindFromKey(uint key, string sectionName, out T? result) + { + result = default; + + try { - target_token = merged; + result = bindFromKey(key, sectionName); + return true; } - else + catch { - target_token = found_target_token; + return false; + } + } + + public bool tryBindFromPath(string path, string sectionName, out T? result) + { + result = default; + + try + { + result = bindFromPath(path, sectionName); + return true; + } + catch + { + return false; + } + } + + public JObject? getRawJsonByKey(uint key) + { + if (!m_key_to_source.TryGetValue(key, out var entry)) + return null; + + return m_path_to_jobject.TryGetValue(entry.path, out var jObject) + ? jObject + : null; + } + + public JObject? getRawJsonByPath(string path) + { + return m_path_to_jobject.TryGetValue(path, out var jObject) + ? jObject + : null; + } + + public bool removeConfig(uint key) + { + if (!m_key_to_source.TryGetValue(key, out var entry)) + return false; + + m_key_to_source.Remove(key); + m_path_to_jobject.Remove(entry.path); + + if (m_watchers.TryGetValue(entry.path, out var watcher)) + { + watcher.EnableRaisingEvents = false; + watcher.Dispose(); + m_watchers.Remove(entry.path); } - if (target_token == null) + return true; + } + + public IEnumerable getAllKeys() + { + return m_key_to_source.Keys; + } + + public IEnumerable getAllPaths() + { + return m_path_to_jobject.Keys; + } + + private T extractSection(JObject jObject, string sectionName, string context) + { + if (!jObject.TryGetValue(sectionName, out var token)) { - throw new Exception($"Section could not be found !!! : sectionName:{sectionName}"); + token = jObject; // fallback } - return target_token.ToObject()!; + if (token == null) + throw new Exception($"Section not found: sectionName={sectionName}, context={context}"); + + return token.ToObject()!; } private void detectDuplicateKeys(JObject existing, JObject incoming) @@ -172,4 +272,4 @@ public sealed class ConfigManager : Singleton } } } -} \ No newline at end of file +} diff --git a/ServerCore/Config/ConfigManagerConfigurationProvider.cs b/ServerCore/Config/ConfigManagerConfigurationProvider.cs new file mode 100644 index 0000000..5e7428c --- /dev/null +++ b/ServerCore/Config/ConfigManagerConfigurationProvider.cs @@ -0,0 +1,66 @@ +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json.Linq; + + +using ServerCore; + + +public class ConfigManagerConfigurationProvider : ConfigurationProvider +{ + private readonly ConfigManager m_config_manager; + + public ConfigManagerConfigurationProvider(ConfigManager configManager) + { + m_config_manager = configManager; + + Load(); + } + + public override void Load() + { + var data = new Dictionary(); + + foreach (var jObj in m_config_manager.getAllPaths()) + { + var jtoken = m_config_manager.getRawJsonByPath(jObj); + if (jtoken == null) continue; + + flattenJson(jtoken, data, parentPath: null); + } + + Data = data!; + } + + private void flattenJson(JToken token, IDictionary data, string? parentPath) + { + NullReferenceCheckHelper.throwIfNull(token, () => $"token is null !!!"); + + switch (token.Type) + { + case JTokenType.Object: + foreach (var prop in (JObject)token) + { + var path = parentPath == null ? prop.Key : $"{parentPath}:{prop.Key}"; + NullReferenceCheckHelper.throwIfNull(prop.Value, () => $"prop.Value is null !!!"); + flattenJson(prop.Value, data, path); + } + break; + + case JTokenType.Array: + var index = 0; + foreach (var item in (JArray)token) + { + var path = $"{parentPath}:{index++}"; + flattenJson(item, data, path); + } + break; + + default: + if (token is JValue value && parentPath != null) + { + data[parentPath] = value.ToString(); + } + break; + } + } +} diff --git a/ServerCore/Config/ConfigManagerConfigurationSource.cs b/ServerCore/Config/ConfigManagerConfigurationSource.cs new file mode 100644 index 0000000..e11656e --- /dev/null +++ b/ServerCore/Config/ConfigManagerConfigurationSource.cs @@ -0,0 +1,19 @@ +using Microsoft.Extensions.Configuration; + + +namespace ServerCore; + +public class ConfigManagerConfigurationSource : IConfigurationSource +{ + private readonly ConfigManager m_config_manager; + + public ConfigManagerConfigurationSource(ConfigManager configManager) + { + m_config_manager = configManager; + } + + public IConfigurationProvider Build(IConfigurationBuilder builder) + { + return new ConfigManagerConfigurationProvider(m_config_manager); + } +} diff --git a/ServerCore/Config/ConfigManagerHelper.cs b/ServerCore/Config/ConfigManagerHelper.cs new file mode 100644 index 0000000..7406b1a --- /dev/null +++ b/ServerCore/Config/ConfigManagerHelper.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.Configuration; + + +using ServerCore; + +/*============================================================================================= + + ConfigurationBuilder 연동 지원 Helper 클래스 + + var configManager = new ConfigManager() + .addJson(1, "appsettings.json") + .addYaml(2, "settings.yaml"); + + var configuration = new ConfigurationBuilder() + .addConfigManager(configManager) + .Build(); + + var mySetting = configuration["MyApp:Setting"]; + + + author : kangms + +=============================================================================================*/ + +public static class ConfigManagerHelper +{ + public static IConfigurationBuilder addConfigManager(this IConfigurationBuilder builder, ConfigManager manager) + { + return builder.Add(new ConfigManagerConfigurationSource(manager)); + } +} \ No newline at end of file diff --git a/ServerCore/Exception/ConditionCheckHelper.cs b/ServerCore/Exception/ConditionCheckHelper.cs index a60c248..be1fa03 100644 --- a/ServerCore/Exception/ConditionCheckHelper.cs +++ b/ServerCore/Exception/ConditionCheckHelper.cs @@ -10,7 +10,7 @@ namespace ServerCore; //============================================================================================= -// 조건 체크 관련 예외 지원 함수 +// 조건별 체크 관련 예외 지원 함수 // // author : kangms // @@ -19,25 +19,57 @@ namespace ServerCore; public static class ConditionValidCheckHelper { public static void throwIfFalse( bool isCondition - , string errMsg ) + , string errMsg + , Func? overrideException = null ) { - if (false == isCondition) + if (isCondition) + return; + + if (overrideException != null) { - throw new InvalidOperationException(errMsg); + throw overrideException(errMsg); } + + throw new InvalidOperationException(errMsg); } public static void throwIfFalseWithCondition( Expression> conditionExpression - , Func? fnLog = null ) + , Func? fnLog = null + , Func? overrideException = null ) { var compiled_expression = conditionExpression.Compile(); - if (false == compiled_expression()) + if (compiled_expression()) + return; + + string condition_text = conditionExpression.Body.ToString(); + string errMsg = fnLog?.Invoke() ?? $"Failed to check condition: '{condition_text}'"; + + if (overrideException != null) { - string condition_text = conditionExpression.Body.ToString(); - - var err_msg = fnLog?.Invoke() ?? $"Failed to check Condition: '{condition_text}'"; - - throw new InvalidOperationException(err_msg); + throw overrideException(errMsg); } + + throw new InvalidOperationException(errMsg); } } + + +public static class RangeCheckHelper +{ + public static void throwIfOutOfRange( int value, int min, int max + , Func? fnLog = null + , Func? overrideException = null ) + { + if (value >= min && value <= max) + return; + + string message = fnLog?.Invoke() ?? $"Value {value} is out of range [{min}, {max}]"; + + if (overrideException != null) + { + throw overrideException(message); + } + + throw new ArgumentOutOfRangeException(nameof(value), message); + } +} \ No newline at end of file diff --git a/ServerCore/Exception/NullReferenceCheckHelper.cs b/ServerCore/Exception/NullReferenceCheckHelper.cs index 7375429..f081631 100644 --- a/ServerCore/Exception/NullReferenceCheckHelper.cs +++ b/ServerCore/Exception/NullReferenceCheckHelper.cs @@ -23,22 +23,20 @@ public static class ArgumentNullReferenceCheckHelper { public static void throwIfNull( [NotNull] object? argument , Func? fnLog = null - , [CallerArgumentExpression(nameof(argument))] string? paramName = null ) + , [CallerArgumentExpression(nameof(argument))] string? paramName = null + , Func? overrideException = null ) { if (argument != null) return; - if (fnLog != null) + string message = fnLog?.Invoke() ?? $"Argument '{paramName}' cannot be null !!!"; + + if (overrideException != null) { - throw new ArgumentNullException(paramName, fnLog()); + throw overrideException(message); } - if (paramName != null) - { - throw new ArgumentNullException(paramName, $"Argument '{paramName}' cannot be null !!!"); - } - - throw new ArgumentNullException("Cannot generate null-check error message: both 'fnLog' and 'paramName' are null !!!"); + throw new ArgumentNullException(paramName, message); } } @@ -46,21 +44,19 @@ public static class NullReferenceCheckHelper { public static void throwIfNull( [NotNull] object? argument , Func? fnLog = null - , [CallerArgumentExpression(nameof(argument))] string? paramName = null ) + , [CallerArgumentExpression(nameof(argument))] string? paramName = null + , Func? overrideException = null ) { if (argument != null) return; - if (fnLog != null) + string message = fnLog?.Invoke() ?? $"'{paramName}' object cannot be null !!!"; + + if (overrideException != null) { - throw new NullReferenceException(fnLog()); + throw overrideException(message); } - if (paramName != null) - { - throw new NullReferenceException($"'{paramName}' object cannot be null !!!"); - } - - throw new NullReferenceException("Cannot generate null-check error message: both 'fnLog' and 'paramName' are null !!!"); + throw new NullReferenceException(message); } } diff --git a/ServerCore/Log/Logger.cs b/ServerCore/Log/Logger.cs deleted file mode 100644 index 77edc8f..0000000 --- a/ServerCore/Log/Logger.cs +++ /dev/null @@ -1,224 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - - -using NLog; -using NLog.Config; -using NLog.Fluent; - - -namespace ServerCore; - -//=========================================================================================== -// 로그 처리자 -// -// author : kangms -// -//=========================================================================================== - -public static class Log -{ - public static string NLogFileName { get; set; } = "./Config/nlog.config"; - - private static string m_process_type = string.Empty; - private static string m_ip_port = string.Empty; - private static string m_default_logger_name_pattern = string.Empty; - - private static bool m_is_initialized = false; - - private static bool m_is_reconfigure = true; - - public static void initLog( string processType, string defaultLoggerNamePattern = "" - , EventHandler? handler = null ) - { - m_process_type = processType; - m_default_logger_name_pattern = defaultLoggerNamePattern; - - if(null != handler) - { - registerConfigurationChangedHandler(handler); - } - - m_is_initialized = true; - } - - public static void setIPnPort(string ip, UInt16 port) - { - m_ip_port = $"{ip}:{port}"; - } - - public static NLog.Logger getLogger(string loggerName = "") - { - if (true == m_is_reconfigure) - { - reconfigureXML(NLogFileName); - } - - if (0 == loggerName.Length) - { - loggerName = m_default_logger_name_pattern; - } - - return LogManager.GetLogger(loggerName); - } - - private static void registerConfigurationChangedHandler(EventHandler handler) - { - LogManager.ConfigurationChanged += handler; - } - - private static bool reconfigureXML(string xmlCofigFilePath) - { - if (true == m_is_reconfigure) - { - var to_reload_configure = new NLog.Config.XmlLoggingConfiguration(xmlCofigFilePath); - if (null == to_reload_configure) - { - return false; - } - - LogManager.Configuration = to_reload_configure; - LogManager.ReconfigExistingLoggers(); - - m_is_reconfigure = false; - } - - return true; - } - public static void shutdown() - { - CloudWatchLog.setClosed(); - LogManager.Shutdown(); - } - - public static void sequence(string sender, string message) - { - NLog.Logger sequence_logger = LogManager.GetLogger("SequenceLogger"); - - LogEventInfo logEventInfo = new LogEventInfo(LogLevel.Debug, "SequenceLogger", message); - logEventInfo.Properties["sender"] = sender; - sequence_logger.Debug(logEventInfo); - } - - public static void sequence(string sender, string receiver, string message, string errDesc = "") - { - NLog.Logger sequence_logger = LogManager.GetLogger("SequenceLogger"); - - LogEventInfo logEventInfo = new LogEventInfo(LogLevel.Debug, "SequenceLogger", message); - logEventInfo.Properties["sender"] = sender; - logEventInfo.Properties["receiver"] = receiver; - logEventInfo.Properties["errordesc"] = (errDesc == string.Empty || errDesc.Contains("Success") == true ? $"{errDesc}" : $"ERR-{errDesc}"); - sequence_logger.Debug(logEventInfo); - } - - - public static string getProcessType() => m_process_type; - - public static string getIpPort() => m_ip_port; - - public static bool isInitialized() => m_is_initialized; - } - -//=========================================================================================== -// 로그 관련 확장 함수 -// -// author : kangms -// -//=========================================================================================== - -public static class NLogExtend -{ - - public static void trace( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Trace, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Trace(logEventInfo); - } - - public static void debug( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Debug, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Debug(logEventInfo); - } - - public static void info( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Info, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Info(logEventInfo); - } - - public static void warn( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Warn, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Warn(logEventInfo); - } - - public static void error( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Error, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Error(logEventInfo); - } - - public static void fatal( this NLog.Logger _this - , string message - , [CallerMemberName] string memberName = "" - , [CallerFilePath] string sourceFilePath = "" - , [CallerLineNumber] Int32 sourceLineNumber = 0 ) - { - var logEventInfo = new LogEventInfo(LogLevel.Fatal, null, message); - logEventInfo.setLogEventProperties( sourceFilePath, sourceLineNumber, memberName - , Log.getProcessType(), Log.getIpPort() ); - - _this.Fatal(logEventInfo); - } - - private static void setLogEventProperties( this LogEventInfo _this - , string sourceFilePath, Int32 sourceLineNumber, string memberName - , string processType, string ipPort ) - { - _this.Properties["server"] = processType; - _this.Properties["ip/port"] = ipPort; - _this.Properties["memberName"] = memberName; - _this.Properties["filePath"] = sourceFilePath; - _this.Properties["lineNumber"] = sourceLineNumber; - } -} diff --git a/ServerCore/Log/NLog.cs b/ServerCore/Log/NLog.cs new file mode 100644 index 0000000..2752207 --- /dev/null +++ b/ServerCore/Log/NLog.cs @@ -0,0 +1,116 @@ +using NLog; +using NLog.Config; +using NLog.Fluent; + + +namespace ServerCore; + +//=========================================================================================== +// 로그 처리자 +// +// author : kangms +// +//=========================================================================================== + +public static class Log +{ + public static string NLogFileName { get; set; } = "./Config/nlog.config"; + + private static string m_process_type = string.Empty; + private static string m_ip_port = string.Empty; + private static string m_default_logger_name_pattern = string.Empty; + + private static bool m_is_initialized = false; + + private static bool m_is_reconfigure = true; + + public static void initLog( string processType, string defaultLoggerNamePattern = "" + , EventHandler? handler = null ) + { + m_process_type = processType; + m_default_logger_name_pattern = defaultLoggerNamePattern; + + if(null != handler) + { + registerConfigurationChangedHandler(handler); + } + + m_is_initialized = true; + } + + public static void setIPnPort(string ip, UInt16 port) + { + m_ip_port = $"{ip}:{port}"; + } + + public static NLog.Logger getLogger(string loggerName = "") + { + if (true == m_is_reconfigure) + { + reconfigureXML(NLogFileName); + } + + if (0 == loggerName.Length) + { + loggerName = m_default_logger_name_pattern; + } + + return LogManager.GetLogger(loggerName); + } + + private static void registerConfigurationChangedHandler(EventHandler handler) + { + LogManager.ConfigurationChanged += handler; + } + + private static bool reconfigureXML(string xmlCofigFilePath) + { + if (true == m_is_reconfigure) + { + var to_reload_configure = new NLog.Config.XmlLoggingConfiguration(xmlCofigFilePath); + if (null == to_reload_configure) + { + return false; + } + + LogManager.Configuration = to_reload_configure; + LogManager.ReconfigExistingLoggers(); + + m_is_reconfigure = false; + } + + return true; + } + public static void shutdown() + { + CloudWatchLog.setClosed(); + LogManager.Shutdown(); + } + + public static void sequence(string sender, string message) + { + NLog.Logger sequence_logger = LogManager.GetLogger("SequenceLogger"); + + LogEventInfo logEventInfo = new LogEventInfo(LogLevel.Debug, "SequenceLogger", message); + logEventInfo.Properties["sender"] = sender; + sequence_logger.Debug(logEventInfo); + } + + public static void sequence(string sender, string receiver, string message, string errDesc = "") + { + NLog.Logger sequence_logger = LogManager.GetLogger("SequenceLogger"); + + LogEventInfo logEventInfo = new LogEventInfo(LogLevel.Debug, "SequenceLogger", message); + logEventInfo.Properties["sender"] = sender; + logEventInfo.Properties["receiver"] = receiver; + logEventInfo.Properties["errordesc"] = (errDesc == string.Empty || errDesc.Contains("Success") == true ? $"{errDesc}" : $"ERR-{errDesc}"); + sequence_logger.Debug(logEventInfo); + } + + + public static string getProcessType() => m_process_type; + + public static string getIpPort() => m_ip_port; + + public static bool isInitialized() => m_is_initialized; +} diff --git a/ServerCore/Log/NLogHelper.cs b/ServerCore/Log/NLogHelper.cs new file mode 100644 index 0000000..b1b6985 --- /dev/null +++ b/ServerCore/Log/NLogHelper.cs @@ -0,0 +1,112 @@ +using NLog; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + + + +namespace ServerCore; + + +//=========================================================================================== +// NLog 관련 확장 함수 +// +// author : kangms +// +//=========================================================================================== + +public static class NLogHelper +{ + public static void trace( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Trace, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Trace(logEventInfo); + } + + public static void debug( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Debug, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Debug(logEventInfo); + } + + public static void info( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Info, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Info(logEventInfo); + } + + public static void warn( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Warn, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Warn(logEventInfo); + } + + public static void error( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Error, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Error(logEventInfo); + } + + public static void fatal( this NLog.Logger _this + , string message + , [CallerMemberName] string memberName = "" + , [CallerFilePath] string sourceFilePath = "" + , [CallerLineNumber] Int32 sourceLineNumber = 0) + { + var logEventInfo = new LogEventInfo(LogLevel.Fatal, null, message); + logEventInfo.setLogEventProperties(sourceFilePath, sourceLineNumber, memberName + , Log.getProcessType(), Log.getIpPort()); + + _this.Fatal(logEventInfo); + } + + private static void setLogEventProperties( this LogEventInfo _this + , string sourceFilePath, Int32 sourceLineNumber, string memberName + , string processType, string ipPort) + { + _this.Properties["server"] = processType; + _this.Properties["ip/port"] = ipPort; + _this.Properties["memberName"] = memberName; + _this.Properties["filePath"] = sourceFilePath; + _this.Properties["lineNumber"] = sourceLineNumber; + } + +} diff --git a/ServerCore/ServerCore.csproj b/ServerCore/ServerCore.csproj index 3a6ce6e..eccde22 100644 --- a/ServerCore/ServerCore.csproj +++ b/ServerCore/ServerCore.csproj @@ -33,16 +33,30 @@ + + + + + + + + + + + + + + diff --git a/UGQDataAccess/UGQDataAccess.csproj b/UGQDataAccess/UGQDataAccess.csproj index 34aea78..bced02f 100644 --- a/UGQDataAccess/UGQDataAccess.csproj +++ b/UGQDataAccess/UGQDataAccess.csproj @@ -9,18 +9,6 @@ true - - - - - - - - - - - -