초기커밋
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using ServerCommon;
|
||||
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace BrokerCore.Services;
|
||||
|
||||
public class OrderStrategyProvider : IOrderStrategyProvider
|
||||
{
|
||||
private readonly IServiceProvider m_service_provider;
|
||||
private readonly ConcurrentDictionary<CaliverseItemType, Type> m_creation_strategy_map;
|
||||
private readonly ConcurrentDictionary<CaliverseItemType, Type> m_completion_strategy_map;
|
||||
|
||||
public OrderStrategyProvider(IServiceProvider serviceProvider)
|
||||
{
|
||||
m_service_provider = serviceProvider;
|
||||
|
||||
// 전략 맵핑 초기화
|
||||
m_creation_strategy_map = new ConcurrentDictionary<CaliverseItemType, Type>
|
||||
{
|
||||
[CaliverseItemType.Currency] = typeof(CurrencyExchangeCreationStrategy),
|
||||
[CaliverseItemType.CaliverseProduct] = typeof(ProductExchangeCreationStrategy)
|
||||
};
|
||||
|
||||
m_completion_strategy_map = new ConcurrentDictionary<CaliverseItemType, Type>
|
||||
{
|
||||
[CaliverseItemType.Currency] = typeof(CurrencyOrderCompletionStrategy),
|
||||
[CaliverseItemType.CaliverseProduct] = typeof(ProductOrderCompletionStrategy)
|
||||
};
|
||||
}
|
||||
|
||||
public IOrderCreationStrategy? getCreationStrategy(CaliverseItemType itemType)
|
||||
{
|
||||
if (m_creation_strategy_map.TryGetValue(itemType, out var strategy_type))
|
||||
{
|
||||
return m_service_provider.GetService(strategy_type) as IOrderCreationStrategy;
|
||||
}
|
||||
|
||||
// 기본 전략 반환
|
||||
return m_service_provider.GetService<CurrencyExchangeCreationStrategy>();
|
||||
}
|
||||
|
||||
public IOrderCompletionStrategy? getCompletionStrategy(CaliverseItemType itemType)
|
||||
{
|
||||
if (m_completion_strategy_map.TryGetValue(itemType, out var strategy_type))
|
||||
{
|
||||
return m_service_provider.GetService(strategy_type) as IOrderCompletionStrategy;
|
||||
}
|
||||
|
||||
// 기본 전략 반환
|
||||
return m_service_provider.GetService<CurrencyOrderCompletionStrategy>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user