Ejemplo n.º 1
0
 public Worker(ILogger <Worker> logger, IExchangeSettings exchangeSettings, IExchangeService exchangeService, IExchangePluginService exchangePluginService)
 {
     _logger                = logger;
     _exchangeSettings      = exchangeSettings;
     _exchangeService       = exchangeService;
     _exchangePluginService = exchangePluginService;
 }
Ejemplo n.º 2
0
 public Worker(ILogger <Worker> logger, IExchangeSettings exchangeSettings, IExchangeService exchangeService,
               IExchangePluginService exchangePluginService)
 {
     _logger                = logger;
     _exchangeSettings      = exchangeSettings;
     _exchangeService       = exchangeService;
     _exchangePluginService = exchangePluginService;
     logger.LogInformation("ExchangeHubService exchange plugin service loaded.");
 }
        public static async Task <IExchangeSettings> GetOrDefaultAsync(this IExchangeSettingsRepository exchangeSettingsRepository, string clientId)
        {
            var result = await exchangeSettingsRepository.GetAsync(clientId);

            if (result != null)
            {
                return(result);
            }

            return(_defaultExchangeSettings ?? (_defaultExchangeSettings = ExchangeSettings.CreateDeafault()));
        }
Ejemplo n.º 4
0
 public ConnectionAdapter(HttpClient httpClient, IExchangeSettings exchangeSettings)
 {
     Authentication = new Authentication(
         exchangeSettings.APIKey,
         exchangeSettings.PassPhrase,
         exchangeSettings.Secret,
         exchangeSettings.EndpointUrl,
         exchangeSettings.Uri);
     HttpClient              = httpClient;
     ClientWebSocket         = new ClientWebSocket();
     _ioSemaphoreSlim        = new SemaphoreSlim(1, 1);
     _ioRequestSemaphoreSlim = new SemaphoreSlim(1, 1);
 }
Ejemplo n.º 5
0
        /// <inheritdoc />
        public void RefreshSendCollection(IExchangeSettings settings)
        {
            LogEventManager.Logger.Info("Formation of packages started");
            var rawData     = TestFakeObject.GenerateFakeObjects(1000000);
            var forQueueing = rawData.Select((it, i) => new { Index = i, Value = it })
                              .GroupBy(it => it.Index / settings.PackageSize)
                              .Select(it => it.Select(v => v.Value).ToList())
                              .ToList();

            foreach (var item in forQueueing)
            {
                Queue.Enqueue(item);
            }
        }
        /// <inheritdoc />
        public void GetReceivePackage <T>(T dataSource, IExchangeSettings settings) where T : IReceiveDataSource
        {
            LogEventManager.Logger.Info("Formation of packages started");
            var rawData     = TestFakeObject.GenerateFakeObjects(1000000);
            var forQueueing = rawData.Select((it, i) => new { Index = i, Value = it })
                              .GroupBy(it => it.Index / settings.PackageSize)
                              .Select(it => it.Select(v => v.Value).ToList())
                              .ToList();

            foreach (var item in forQueueing)
            {
                Queue.Enqueue(item);
            }
        }
        public String Generate(IExchangeSettings settings, String source)
        {
            if (settings is null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            if (source is null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            StringBuilder builder = new StringBuilder(source);

            foreach ((Char From, Char Into) in settings.CollectValues())
            {
                builder.Replace(From, Into);
            }

            return(builder.ToString());
        }
        /// <summary>
        /// Sends the data
        /// </summary>
        /// <param name="worker">sender</param>
        /// <param name="settings">sender settings</param>
        private async void Send(ISendWorker worker, IExchangeSettings settings)
        {
            do
            {
                if (!settings.SilentCancel)
                {
                    _cancellationToken.ThrowIfCancellationRequested();
                }

                worker.RefreshSendCollection(settings);
                var lastDateUpdated = DateTime.Now;
                if (!worker.IsSendQueueEmpty)
                {
                    var tasks = new List <Task>();
                    for (var i = 0; i < settings.CountThreads; i++)
                    {
                        tasks.Add(SendAction(worker));
                    }

                    while (tasks.Count > 0)
                    {
                        var finishedTask = await Task.WhenAny(tasks);

                        tasks.Remove(finishedTask);
                    }
                }
                else
                {
                    var timeOut = (int)(DateTime.Now - lastDateUpdated).TotalMilliseconds;
                    if (timeOut < settings.Timeout)
                    {
                        Thread.Sleep(settings.Timeout - timeOut);
                    }
                }
            } while (!settings.StopServiceAfterFirstRun);
        }
        /// <summary>
        /// Receives the data
        /// </summary>
        /// <param name="worker">receiver</param>
        /// <param name="source">data source from where we receive the data</param>
        /// <param name="settings">settings</param>
        private async void Receive(IPackageReceiveWorker worker, IReceiveDataSource source, IExchangeSettings settings)
        {
            do
            {
                if (!settings.SilentCancel)
                {
                    _cancellationToken.ThrowIfCancellationRequested();
                }
                // Gets receive package. It should fill in the Buffer with packages
                worker.GetReceivePackage(source, settings);
                var lastDateUpdated = DateTime.Now;
                if (!worker.IsBufferEmpty)
                {
                    var tasks = new List <Task>();
                    for (var i = 0; i < settings.CountThreads; i++)
                    {
                        tasks.Add(ReceiveAction(worker, source));
                    }

                    while (tasks.Count > 0)
                    {
                        var finishedTask = await Task.WhenAny(tasks);

                        tasks.Remove(finishedTask);
                    }
                }
                else
                {
                    var timeOut = (int)(DateTime.Now - lastDateUpdated).TotalMilliseconds;
                    if (timeOut < settings.Timeout)
                    {
                        Thread.Sleep(settings.Timeout - timeOut);
                    }
                }
            } while (!settings.StopServiceAfterFirstRun);
        }
Ejemplo n.º 10
0
 /// <summary>
 ///     Create an exchange service wrapper with the supplied settings (or null if defaults)
 /// </summary>
 /// <param name="exchangeSettings">null for default</param>
 public ExchangeServiceContainer(IExchangeSettings exchangeSettings = null)
 {
     _exchangeSettings            = exchangeSettings ?? new ExchangeSettings();
     _allowSelfSignedCertificates = _exchangeSettings.AllowSelfSignedCertificates;
     ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
 }
Ejemplo n.º 11
0
 /// <inheritdoc />
 public abstract void RefreshSendCollection(IExchangeSettings settings);
 public static string BaseAsset(this IExchangeSettings settings, bool isIosDevice)
 {
     return(isIosDevice ? settings.BaseAssetIos : settings.BaseAssetOther);
 }
Ejemplo n.º 13
0
 public virtual Task <bool> InitAsync(IExchangeSettings exchangeSettings)
 {
     throw new NotImplementedException();
 }