public GrpcReportsTransport(IOptions <GrpcReportsTransportOptions> options, ILogger <GrpcReportsTransport> logger)
        {
            Options = options.Value ?? throw new ArgumentNullException();

            HttpClient httpClient = null;

            if (Options.NeedHttpClientFunc != null)
            {
                httpClient = Options.NeedHttpClientFunc();
            }
            else if (Options.AllowAnyRemoteCertificate)
            {
                var httpClientHandler = new HttpClientHandler
                {
                    ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
                };
                httpClient = new HttpClient(httpClientHandler);
            }
            var grpcChannelOptions = new GrpcChannelOptions {
                HttpClient = httpClient
            };

            if (Options.PostConfigGrpcChannelOptions != null)
            {
                Options.PostConfigGrpcChannelOptions(grpcChannelOptions);
            }

            var channel = GrpcChannel.ForAddress(Options.CollectorAddress, grpcChannelOptions);

            _client = new GrpcCollector.GrpcCollectorClient(channel);

            _RequestCollection = new AsyncCallbackDeferFlushCollection <RequestInfoWithDetail>(Push, 50, 5);
            _logger            = logger;
        }
示例#2
0
 public HttpTransport(IOptions <HttpTransportOptions> options, ILogger <HttpTransport> logger, IHttpClientFactory httpClientFactory)
 {
     _options              = options.Value ?? throw new ArgumentNullException();
     _logger               = logger;
     _httpClientFactory    = httpClientFactory;
     _RequestBagCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(Push, _options.DeferThreshold, _options.DeferSecond);
 }
示例#3
0
        public BaseStorage(BaseStorageOptions options)
        {
            _options = options;

            _deferFlushCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(AddRequestInfoAsync, _options.DeferThreshold, _options.DeferSecond);

            freeSql = new FreeSql.FreeSqlBuilder().UseConnectionString(_options.DataType, _options.ConnectionString).UseNoneCommandParameter(true).Build();
        }
示例#4
0
        public void ParallelAppend_Int()
        {
            var collection = new AsyncCallbackDeferFlushCollection <int>((items, token) => Task.CompletedTask, FlushThreshold, TimeSpan.FromSeconds(2));

            Parallel.For(0, ItemCount, GetParallelOptions(), i =>
            {
                collection.Append(i);
            });
        }
示例#5
0
 public MySqlStorage(IOptions <MySqlStorageOptions> options, MySqlConnectionFactory connectionFactory, ILogger <MySqlStorage> logger)
 {
     Options           = options.Value;
     ConnectionFactory = connectionFactory;
     Logger            = logger;
     if (Options.EnableDefer)
     {
         _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo, IRequestDetail>(AddRequestInfoAsync, Options.DeferThreshold, Options.DeferSecond);
     }
 }
 public PostgreSQLStorage(IOptions <PostgreStorageOptions> options, PostgreConnectionFactory connectionFactory, ILogger <PostgreSQLStorage> logger)
 {
     Options           = options.Value;
     ConnectionFactory = connectionFactory;
     Logger            = logger;
     if (Options.EnableDefer)
     {
         _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo>(AddRequestInfoAsync, Options.DeferThreshold, Options.DeferTime);
     }
 }
示例#7
0
 public HttpTransport(IOptions <HttpTransportOptions> options, JsonSerializerOptions jsonSetting, ILogger <HttpTransport> logger, IHttpClientFactory httpClientFactory)
 {
     _options           = options.Value ?? throw new ArgumentNullException();
     _logger            = logger;
     _httpClientFactory = httpClientFactory;
     _jsonSetting       = jsonSetting;
     if (_options.CollectorAddress != null)
     {
         _RequestBagCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(Push, _options.DeferThreshold, _options.DeferSecond);
     }
 }
        public ElasticSearchStorage(IOptions <ElasticSearchStorageOptions> options, ILogger <ElasticSearchStorage> logger, ElasticSearchConnectionFactory connectionFactory)
        {
            Options = options.Value;
            Logger  = logger;
            Client  = connectionFactory.Client;

            if (Options.EnableDefer)
            {
                _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo, IRequestDetail>(AddRequestInfoAsync, Options.DeferThreshold, Options.DeferSecond);
            }
        }
示例#9
0
        public OracleStorage(IOptions <OracleStorageOptions> options, OracleConnectionFactory connectionFactory, ILogger <OracleStorage> logger)
        {
            _options          = options.Value;
            ConnectionFactory = connectionFactory;
            Logger            = logger;

            if (_options.EnableDefer)
            {
                _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo>(AddRequestInfoAsync, _options.DeferThreshold, _options.DeferTime);
            }
        }
示例#10
0
        public SQLServerStorage(IOptions <SQLServerStorageOptions> options, SQLServerConnectionFactory connectionFactory, ILogger <SQLServerStorage> logger)
        {
            _options = options.Value;

            ConnectionFactory = connectionFactory;
            Logger            = logger;

            if (_options.EnableDefer)
            {
                _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo, IRequestDetail>(AddRequestInfoAsync, _options.DeferThreshold, _options.DeferSecond);
            }
        }
 public PostgreSQLStorage(IOptions <PostgreStorageOptions> options, PostgreConnectionFactory connectionFactory, ILogger <PostgreSQLStorage> logger)
 {
     Options           = options.Value;
     ConnectionFactory = connectionFactory;
     if (!Options.TablePrefix.IsEmpty())
     {
         Prefix = Options.TablePrefix + ".";
     }
     Logger = logger;
     if (Options.EnableDefer)
     {
         _deferFlushCollection = new AsyncCallbackDeferFlushCollection <IRequestInfo, IRequestDetail>(AddRequestInfoAsync, Options.DeferThreshold, Options.DeferSecond);
     }
 }
示例#12
0
 public MySqlStorage(IOptions <MySqlStorageOptions> options, MySqlConnectionFactory connectionFactory, ILogger <MySqlStorage> logger)
 {
     Options = options.Value;
     if (!Options.TablePrefix.IsEmpty())
     {
         TablePrefix = Options.TablePrefix + ".";
     }
     ConnectionFactory = connectionFactory;
     Logger            = logger;
     if (Options.EnableDefer)
     {
         _deferFlushCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(AddRequestInfoAsync, Options.DeferThreshold, Options.DeferSecond);
     }
 }
示例#13
0
        public SQLServerStorage(IOptions <SQLServerStorageOptions> options, SQLServerConnectionFactory connectionFactory, ILogger <SQLServerStorage> logger)
        {
            _options = options.Value;
            if (!_options.TablePrefix.IsEmpty())
            {
                Prefix = _options.TablePrefix + ".";
            }
            ConnectionFactory = connectionFactory;
            Logger            = logger;

            if (_options.EnableDefer)
            {
                _deferFlushCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(AddRequestInfoAsync, _options.DeferThreshold, _options.DeferSecond);
            }
        }
示例#14
0
        public GrpcTransport(IOptions <GrpcTransportOptions> options, ILogger <GrpcTransport> logger)
        {
            _options = options.Value;
            _logger  = logger;

            var httpClientHandler = new HttpClientHandler();

            httpClientHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
            var httpClient = new HttpClient(httpClientHandler);

            GrpcChannelOptions grpcChannelOptions = new GrpcChannelOptions()
            {
                HttpClient = httpClient
            };

            _client = new GrpcCollector.GrpcCollectorClient(GrpcChannel.ForAddress(_options.CollectorAddress, grpcChannelOptions));

            _RequestBagCollection = new AsyncCallbackDeferFlushCollection <RequestBag>(Push, _options.DeferThreshold, _options.DeferSecond);
        }