6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) + game logic (GameFix/GameDAL/ServerData) + network layer (NetWorkMessage) + data layer (ObjectModel) + utilities (MrWu/Core/Config/CloudAPI/dll) + adapters (zyxAdapter/base) .NET 8.0 C# solution, 16 projects, 958 source files
38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
|
|
using System.Collections.Concurrent;
|
|
using Aliyun.Api.LogService;
|
|
using Cloud.Alibaba.Oss;
|
|
|
|
namespace Cloud.Alibaba.Sls
|
|
{
|
|
public class ClientManager
|
|
{
|
|
private static readonly ConcurrentDictionary<string, ILogServiceClient> ClientCache = new ConcurrentDictionary<string, ILogServiceClient>();
|
|
|
|
public static ILogServiceClient GetClient(Account account, SlsProject project)
|
|
{
|
|
string cacheKey = GetCacheKey(account, project);
|
|
|
|
ILogServiceClient result = ClientCache.GetOrAdd(cacheKey, (key) =>
|
|
{
|
|
AccountConfig accountConfig = AccountConfig.GetConfig(account);
|
|
SlsProjectConfig projectConfig = SlsProjectConfig.GetConfig(project);
|
|
|
|
return LogServiceClientBuilders.HttpBuilder
|
|
.Endpoint(projectConfig.Endpoint, projectConfig.ProjectName)
|
|
.Credential(accountConfig.AccessKey, accountConfig.SecretKey)
|
|
.Build();
|
|
});
|
|
|
|
return result;
|
|
}
|
|
|
|
private static string GetCacheKey(Account account, SlsProject project)
|
|
{
|
|
return $"{account}_{project}";
|
|
}
|
|
|
|
}
|
|
|
|
}
|