Advertisement
Hulkstance

Untitled

Oct 4th, 2022
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.12 KB | None | 0 0
  1. internal sealed class ExchangeFactory
  2. {
  3.     private readonly IContext _context;
  4.     private readonly IServiceProvider _serviceProvider;
  5.     private readonly int _retryAttempts;
  6.  
  7.     internal ExchangeFactory(IContext context, IServiceProvider serviceProvider, int retryAttempts)
  8.     {
  9.         _context = context;
  10.         _serviceProvider = serviceProvider;
  11.         _retryAttempts = retryAttempts;
  12.     }
  13.  
  14.     internal PID CreateExchange(string exchange, string accountId)
  15.     {
  16.         Producer producer = exchange switch
  17.         {
  18.             "ftx" => () => ActivatorUtilities.CreateInstance<FtxSubscription>(_serviceProvider, accountId),
  19.             "kraken" => () => ActivatorUtilities.CreateInstance<KrakenSubscription>(_serviceProvider, accountId),
  20.             _ => throw new NotSupportedException()
  21.         };
  22.        
  23.         var exchangeProps = Props.FromProducer(producer)
  24.             .WithChildSupervisorStrategy(
  25.                 new OneForOneStrategy((_, _) => SupervisorDirective.Restart, _retryAttempts, null)
  26.             );
  27.         return _context.SpawnNamed(exchangeProps, $"{exchange}:{accountId}");
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement