internal TimeSeriesBatchOperation(TimeSeriesStore store, string timeSeriesName, TimeSeriesBatchOptions batchOptions = null)
            : base(store, timeSeriesName)
        {
            if (batchOptions != null && batchOptions.BatchSizeLimit < 1)
            {
                throw new ArgumentException("batchOptions.BatchSizeLimit cannot be negative", "batchOptions");
            }

            _defaultOptions   = batchOptions ?? new TimeSeriesBatchOptions(); //defaults do exist
            streamingStarted  = new AsyncManualResetEvent();
            batchOperationTcs = new TaskCompletionSource <bool>();
            cts           = new CancellationTokenSource();
            appendQueue   = new BlockingCollection <TimeSeriesAppend>(_defaultOptions.BatchSizeLimit);
            singleAuthUrl = string.Format("{0}ts/{1}/singleAuthToken", ServerUrl, timeSeriesName);

            OperationId        = Guid.NewGuid();
            disposed           = false;
            batchOperationTask = StartBatchOperation();
            if (streamingStarted.WaitAsync().Wait(DefaultOptions.StreamingInitializeTimeout) == false ||
                batchOperationTask.IsFaulted)
            {
                throw new InvalidOperationException("Failed to start streaming batch.", batchOperationTask.Exception);
            }
            closeAndReopenStreamingTimer = CreateNewTimer();
        }
Exemple #2
0
 protected TimeSeriesOperationsBase(TimeSeriesStore store, string timeSeriesName)
 {
     credentials          = store.Credentials;
     jsonRequestFactory   = store.JsonRequestFactory;
     ServerUrl            = store.Url;
     Parent               = store;
     TimeSeriesName       = timeSeriesName;
     TimeSeriesUrl        = string.Format(CultureInfo.InvariantCulture, "{0}ts/{1}", ServerUrl, timeSeriesName);
     JsonSerializer       = store.JsonSerializer;
     timeSeriesConvention = store.TimeSeriesConvention;
 }
Exemple #3
0
 internal TimeSeriesReplicationInformer(HttpJsonRequestFactory requestFactory, TimeSeriesStore timeSeriesStore, TimeSeriesConvention timeSeriesConvention, int delayTimeInMiliSec = 1000)
 {
     currentReadStripingBase   = 0;
     ReplicationDestinations   = new List <TimeSeriesReplicationDestination>();
     this.requestFactory       = requestFactory;
     this.timeSeriesStore      = timeSeriesStore;
     this.timeSeriesConvention = timeSeriesConvention;
     this.delayTimeInMiliSec   = delayTimeInMiliSec;
     failureTimeSeries         = new FailureTimeSeries();
     firstTime             = true;
     lastReplicationUpdate = SystemTime.UtcNow;
     MaxIntervalBetweenUpdatesInMilliseconds = TimeSpan.FromMinutes(DefaultIntervalBetweenUpdatesInMinutes).TotalMilliseconds;
 }
Exemple #4
0
        protected ITimeSeriesStore NewRemoteTimeSeriesStore(int port = 8079, RavenDbServer ravenDbServer = null, bool createDefaultTimeSeries = true, OperationCredentials credentials = null)
        {
            ravenDbServer = GetNewServer(requestedStorage: "voron", databaseName: DefaultTimeSeriesName + "Database", port: port);

            var timeSeriesStore = new TimeSeriesStore
            {
                Url         = GetServerUrl(true, ravenDbServer.SystemDatabase.ServerUrl),
                Credentials = credentials ?? new OperationCredentials(null, CredentialCache.DefaultNetworkCredentials),
                Name        = DefaultTimeSeriesName + (timeSeriesStores.Count + 1)
            };

            timeSeriesStore.Initialize(createDefaultTimeSeries);
            timeSeriesStores.Add(timeSeriesStore);
            return(timeSeriesStore);
        }