Пример #1
0
        public void AddConsumer(string pName, string pFromFolder, ConsumerDelegate pDelegate)
        {
            var _consumer = new R_Consumer(pName, pFromFolder, pDelegate);

            consumers.Add(_consumer);
            _consumer.Start();
        }
Пример #2
0
 // 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>();
 }
Пример #3
0
        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();
        }
Пример #4
0
        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));
        }
Пример #5
0
 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();
     }
 }
Пример #6
0
 public SimulatorPlugin(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
     : base(logger, client, MDSProviderId.Simulator, consumer)
 {
 }
Пример #7
0
 public static IQRMarketDataProvider Create(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
 {
     return(new SimulatorPlugin(logger, client, consumer));
 }
Пример #8
0
 public MdpNab(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
     : base(logger, client, MDSProviderId.nabCurveDb, consumer)
 {
 }
Пример #9
0
 public static IQRMarketDataProvider Create(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
 {
     return(new MdpBloomberg(logger, client, consumer));
 }
Пример #10
0
        //private readonly IDictionary<Guid, BloombergRequestMap> _SubsMapExternal;

        public MdpBloomberg(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
            : base(logger, client, MDSProviderId.Bloomberg, consumer)
        {
        }
Пример #11
0
 public MdpGlobalIB(ILogger logger, ICoreClient client, ConsumerDelegate consumer)
     : base(logger, client, MDSProviderId.GlobalIB, consumer)
 {
 }