public void AddConsumer(string pName, string pFromFolder, ConsumerDelegate pDelegate) { var _consumer = new R_Consumer(pName, pFromFolder, pDelegate); consumers.Add(_consumer); _consumer.Start(); }
// base constructor public MdpBaseProvider(ILogger logger, ICoreClient client, MDSProviderId providerId, ConsumerDelegate consumer) { Logger = new FilterLogger(logger, $"{providerId}: "); Client = client; ProviderId = providerId; _marketDataMap = new MarketDataMap(logger, providerId); ConsumerCallback = consumer; SubsMapExternal = new Dictionary <Guid, RealtimeRequestMap>(); }
public static void Go <TBuffer>( Func <TBuffer> newBufferFunc, ProducerDelegate <TBuffer> producer, ConsumerDelegate <TBuffer> consumer, CancellationToken cancel ) { BlockingCollection <TBuffer> unusedBuffers = new(); unusedBuffers.Add(newBufferFunc(), cancel); unusedBuffers.Add(newBufferFunc(), cancel); unusedBuffers.Add(newBufferFunc(), cancel); BlockingCollection <(int Count, TBuffer Buffer)> consumerQueue = new(); long total = 0; var producerTask = Task.Factory.StartNew( () => { while (!cancel.IsCancellationRequested) { var buffer = unusedBuffers.Take(cancel); producer(buffer, out var batchCount); if (batchCount <= 0) { break; } consumerQueue.Add((batchCount, buffer)); } consumerQueue.CompleteAdding(); }, cancel, TaskCreationOptions.LongRunning, TaskScheduler.Default); var consumerTask = Task.Factory.StartNew( () => { try { while (!cancel.IsCancellationRequested) { var(count, buffer) = consumerQueue.Take(cancel); total += count; consumer(buffer, count, total); unusedBuffers.Add(buffer); } } catch (InvalidOperationException) { // thrown when we try to Take after CompleteAdding; just end the loop } }, cancel, TaskCreationOptions.LongRunning, TaskScheduler.Default); producerTask.ConfigureAwait(false).GetAwaiter().GetResult(); consumerTask.ConfigureAwait(false).GetAwaiter().GetResult(); }
public R_Consumer(string pName, string pFromFolder, ConsumerDelegate pDelegate) { if (pDelegate == null) { throw new Exception("R_Consumer.Ctor | Invalid ConsumerDelegate! "); } name = pName; fromFolder = pFromFolder; pendingFilesFilter = "*." + name + AppConstants.PendingExtension; consumerDelegate = pDelegate; stop = false; TimokLogger.Instance.LogRbr(LogSeverity.Status, "R_Consumer.Ctor", string.Format("Replication Consumer started, Consumer={0}, FileFilter={1}", name, pendingFilesFilter)); }
public static void Consumer(BlockingCollection <T> input, ConsumerDelegate worker, BlockingCollection <T> output) { System.Console.WriteLine("Consumer running ... "); try { foreach (var item in input.GetConsumingEnumerable()) { var result = worker(item); output.Add(result); } } finally { output.CompleteAdding(); } }
public SimulatorPlugin(ILogger logger, ICoreClient client, ConsumerDelegate consumer) : base(logger, client, MDSProviderId.Simulator, consumer) { }
public static IQRMarketDataProvider Create(ILogger logger, ICoreClient client, ConsumerDelegate consumer) { return(new SimulatorPlugin(logger, client, consumer)); }
public MdpNab(ILogger logger, ICoreClient client, ConsumerDelegate consumer) : base(logger, client, MDSProviderId.nabCurveDb, consumer) { }
public static IQRMarketDataProvider Create(ILogger logger, ICoreClient client, ConsumerDelegate consumer) { return(new MdpBloomberg(logger, client, consumer)); }
//private readonly IDictionary<Guid, BloombergRequestMap> _SubsMapExternal; public MdpBloomberg(ILogger logger, ICoreClient client, ConsumerDelegate consumer) : base(logger, client, MDSProviderId.Bloomberg, consumer) { }
public MdpGlobalIB(ILogger logger, ICoreClient client, ConsumerDelegate consumer) : base(logger, client, MDSProviderId.GlobalIB, consumer) { }