Beispiel #1
0
 public FileStreamWrapper(IAppDataFileProvider fileProvider,
                          string path, FileMode mode, FileAccess access, FileShare share)
     : this(fileProvider, ShouldCreateFileStream(fileProvider, access, FileOptions.None)
         ? new FileStream(path, mode, access, share)
         : null)
 {
 }
Beispiel #2
0
 public FileStreamWrapper(IAppDataFileProvider fileProvider,
                          string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options)
     : this(fileProvider, ShouldCreateFileStream(fileProvider, access, options)
           ? new FileStream(path, mode, access, share, bufferSize, options)
           : null)
 {
 }
 public EventLogBookmarkBufferedSinkTest()
 {
     _appDataFileProvider = new ProtectedAppDataFileProvider(_testDir);
     if (!EventLog.SourceExists(_logSource))
     {
         EventLog.CreateEventSource(_logSource, LogName);
     }
 }
Beispiel #4
0
        public AppDataController(string appDataDirDirectory, TimeSpan interval, IAppDataFileProvider appDataFileProvider)
            : base(nameof(AppDataController), (int)interval.TotalMilliseconds, true, NullLogger.Instance)
        {
            _appDataDirectory    = appDataDirDirectory;
            _appDataFileProvider = appDataFileProvider;

            // execute this detection on start-up
            ExecuteInternal();
        }
Beispiel #5
0
        public AWSBufferedSink(string id, string sessionName,
                               IAppDataFileProvider appDataFileProvider,
                               ILogger logger,
                               IMetrics metrics,
                               IBookmarkManager bookmarkManager,
                               NetworkStatus networkStatus,
                               AWSBufferedSinkOptions options)
        {
            Id                        = id;
            _logger                   = logger;
            _metrics                  = metrics;
            _bookmarkManager          = bookmarkManager;
            _networkStatus            = networkStatus;
            _bufferIntervalMs         = options.BufferIntervalMs;
            _format                   = options.Format;
            _maxSecondaryQueueBatches = options.QueueMaxBatches;
            var secondaryQueue = CreateSecondaryQueue(options, sessionName, appDataFileProvider, logger);

            _queue = new AsyncBatchQueue <Envelope <T> >(options.QueueSizeItems,
                                                         new long[] { options.MaxBatchSize, options.MaxBatchBytes },
                                                         new Func <Envelope <T>, long>[] { r => 1, GetRecordSize },
                                                         secondaryQueue);

            _maxAttempts             = options.MaxAttempts;
            _jittingFactor           = options.JittingFactor;
            _backoffFactor           = options.BackoffFactor;
            _recoveryFactor          = options.RecoveryFactor;
            _minRateAdjustmentFactor = options.MinRateAdjustmentFactor;
            _uploadNetworkPriority   = options.UploadNetworkPriority;

            if (options.TextDecoration is not null)
            {
                _textDecorationEvaluator = new TextDecorationEvaluator(options.TextDecoration, ResolveRecordVariables);
            }

            if (options.TextDecorationEx is not null)
            {
                _textDecorationEvaluator = new TextDecorationExEvaluator(options.TextDecorationEx, EvaluateVariable, ResolveRecordVariable, logger);
            }

            if (options.ObjectDecoration is not null)
            {
                _objectDecorationEvaluator = new ObjectDecorationEvaluator(options.ObjectDecoration, ResolveRecordVariables);
            }

            if (options.ObjectDecorationEx is not null)
            {
                _objectDecorationEvaluator = new ObjectDecorationExEvaluator(options.ObjectDecorationEx, EvaluateVariable, ResolveRecordVariable, logger);
            }
        }
Beispiel #6
0
 public AsyncCloudWatchLogsSink(string id, string sessionName, string logGroup, string logStream,
                                IAmazonCloudWatchLogs cloudWatchLogsClient,
                                IAppDataFileProvider appDataFileProvider,
                                ILogger logger,
                                IMetrics metrics,
                                IBookmarkManager bookmarkManager,
                                NetworkStatus networkStatus,
                                AWSBufferedSinkOptions options)
     : base(id, sessionName, appDataFileProvider, logger, metrics, bookmarkManager, networkStatus, options)
 {
     Id                    = id;
     _logGroup             = logGroup;
     _logStream            = logStream;
     _cloudWatchLogsClient = cloudWatchLogsClient;
     // Set throttle at 5 requests per second
     _throttle = new AdaptiveThrottle(new TokenBucket(1, 5), _backoffFactor, _recoveryFactor, _minRateAdjustmentFactor);
 }
Beispiel #7
0
            private static bool ShouldCreateFileStream(IAppDataFileProvider fileProvider, FileAccess fileAccess, FileOptions options)
            {
                if (fileProvider.IsWriteEnabled)
                {
                    return(true);
                }

                if (fileAccess.HasFlag(FileAccess.Write))
                {
                    return(false);
                }

                if (options.HasFlag(FileOptions.DeleteOnClose))
                {
                    return(false);
                }

                return(true);
            }
        public PackageInstaller(IPlugInContext context,
                                IAppDataFileProvider appDataFileProvider,
                                ISet <string> allowedPublishers,
                                bool skipSignatureVerification)
        {
            _context                   = context;
            _logger                    = context.Logger;
            _allowedPublishers         = allowedPublishers;
            _skipSignatureVerification = skipSignatureVerification;
            _logger                    = context.Logger;
            _metrics                   = context.Metrics;

            _metrics?.InitializeCounters(string.Empty, MetricsConstants.CATEGORY_PLUGIN, CounterTypeEnum.Increment, new Dictionary <string, MetricValue>
            {
                { $"{UpdateMetricsConstants.Prefix}{UpdateMetricsConstants.PackagesDownloaded}", MetricValue.ZeroCount },
                { $"{UpdateMetricsConstants.Prefix}{UpdateMetricsConstants.PackageSignaturesValid}", MetricValue.ZeroCount },
                { $"{UpdateMetricsConstants.Prefix}{UpdateMetricsConstants.PackageSignaturesInvalid}", MetricValue.ZeroCount },
                { $"{UpdateMetricsConstants.Prefix}{UpdateMetricsConstants.PowershellExecutions}", MetricValue.ZeroCount }
            });
            _appDataFileProvider = appDataFileProvider;
        }
        public FilePersistentQueue(int capacity, string directory,
                                   ISerializer <T> serializer,
                                   IAppDataFileProvider fileProvider,
                                   ILogger logger)
        {
            _logger       = logger;
            _serializer   = serializer;
            _fileProvider = fileProvider;
            Capacity      = capacity;
            if (Capacity > MAX_CAPACITY)
            {
                throw new ArgumentException($"The maximum capacity is {MAX_CAPACITY}");
            }

            QueueDirectory = directory;
            fileProvider.CreateDirectory(QueueDirectory);

            _indexFilePath = Path.Combine(QueueDirectory, "Index");
            if (!LoadIndex())
            {
                DiscoverIndex();
            }
        }
 public FileDownloader(IAppDataFileProvider appDataFileProvider)
 {
     Guard.ArgumentNotNull(appDataFileProvider, nameof(appDataFileProvider));
     _appDataFileProvider = appDataFileProvider;
 }
 public FilePersistenceQueueTest()
 {
     _dataFileProvider = new ProtectedAppDataFileProvider(_appDataDir);
 }
Beispiel #12
0
 private FileStreamWrapper(IAppDataFileProvider fileProvider, FileStream stream)
 {
     _fileProvider = fileProvider;
     _stream       = stream;
 }
Beispiel #13
0
        private ISimpleQueue <List <Envelope <T> > > CreateSecondaryQueue(AWSBufferedSinkOptions options, string sessionName, IAppDataFileProvider appDataFileProvider, ILogger logger)
        {
            if (options.SecondaryQueueType is null || options.QueueMaxBatches < 1)
            {
                return(null);
            }

            if (options.SecondaryQueueType.Equals(ConfigConstants.QUEUE_TYPE_MEMORY, StringComparison.OrdinalIgnoreCase))
            {
                return(new InMemoryQueue <List <Envelope <T> > >(options.QueueMaxBatches));
            }

            if (options.SecondaryQueueType.Equals(ConfigConstants.QUEUE_TYPE_FILE, StringComparison.OrdinalIgnoreCase))
            {
                var queuePath = Path.Combine(Utility.GetSessionQueuesDirectoryRelativePath(sessionName), Id);
                return(new FilePersistentQueue <List <Envelope <T> > >(options.QueueMaxBatches, queuePath, GetPersistentQueueSerializer(), appDataFileProvider, logger));
            }

            return(null);
        }
 public FileBookmarkManagerTest()
 {
     Directory.CreateDirectory(Path.Combine(_testDir, _bookmarkDirName));
     _appDataFileProvider = new ProtectedAppDataFileProvider(_testDir);
 }
 public S3Downloader(IPlugInContext context, IAppDataFileProvider appDataFileProvider)
 {
     Guard.ArgumentNotNull(appDataFileProvider, nameof(appDataFileProvider));
     _s3Client            = AWSUtilities.CreateAWSClient <AmazonS3Client>(context);
     _appDataFileProvider = appDataFileProvider;
 }