Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal sealed class ExchangeFactory
- {
- private readonly IContext _context;
- private readonly IServiceProvider _serviceProvider;
- private readonly int _retryAttempts;
- internal ExchangeFactory(IContext context, IServiceProvider serviceProvider, int retryAttempts)
- {
- _context = context;
- _serviceProvider = serviceProvider;
- _retryAttempts = retryAttempts;
- }
- internal PID CreateExchange(string exchange, string accountId)
- {
- Producer producer = exchange switch
- {
- "ftx" => () => ActivatorUtilities.CreateInstance<FtxSubscription>(_serviceProvider, accountId),
- "kraken" => () => ActivatorUtilities.CreateInstance<KrakenSubscription>(_serviceProvider, accountId),
- _ => throw new NotSupportedException()
- };
- var exchangeProps = Props.FromProducer(producer)
- .WithChildSupervisorStrategy(
- new OneForOneStrategy((_, _) => SupervisorDirective.Restart, _retryAttempts, null)
- );
- return _context.SpawnNamed(exchangeProps, $"{exchange}:{accountId}");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement