コード例 #1
0
        public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository, IVsVersionProvider vsVersionProvider,
                                ILogger logger, ITelemetryClient telemetryClient, ITelemetryTimer telemetryTimer, IKnownUIContexts knownUIContexts,
                                ICurrentTimeProvider currentTimeProvider)
        {
            this.solutionBindingTracker = solutionBindingTracker;
            this.telemetryRepository    = telemetryRepository;
            this.logger              = logger;
            this.telemetryClient     = telemetryClient;
            this.telemetryTimer      = telemetryTimer;
            this.knownUIContexts     = knownUIContexts;
            this.currentTimeProvider = currentTimeProvider;

            vsVersion = vsVersionProvider.Version;

            if (this.telemetryRepository.Data.InstallationDate == DateTimeOffset.MinValue)
            {
                this.telemetryRepository.Data.InstallationDate = currentTimeProvider.Now;
                this.telemetryRepository.Save();
            }

            if (IsAnonymousDataShared)
            {
                EnableAllEvents();
            }
        }
コード例 #2
0
 public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository,
                         ILogger logger)
     : this(solutionBindingTracker, telemetryRepository, logger,
            new TelemetryClient(), new TelemetryTimer(telemetryRepository, new TimerFactory()),
            new KnownUIContextsWrapper(), DefaultCurrentTimeProvider.Instance)
 {
 }
コード例 #3
0
        public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository,
                                ILogger logger, ITelemetryClient telemetryClient, ITelemetryTimer telemetryTimer, IKnownUIContexts knownUIContexts)
        {
            if (solutionBindingTracker == null)
            {
                throw new ArgumentNullException(nameof(solutionBindingTracker));
            }
            if (telemetryRepository == null)
            {
                throw new ArgumentNullException(nameof(telemetryRepository));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (telemetryClient == null)
            {
                throw new ArgumentNullException(nameof(telemetryClient));
            }
            if (telemetryTimer == null)
            {
                throw new ArgumentNullException(nameof(telemetryTimer));
            }
            if (knownUIContexts == null)
            {
                throw new ArgumentNullException(nameof(knownUIContexts));
            }

            this.solutionBindingTracker = solutionBindingTracker;
            this.telemetryClient        = telemetryClient;
            this.logger              = logger;
            this.telemetryTimer      = telemetryTimer;
            this.telemetryRepository = telemetryRepository;
            this.knownUIContexts     = knownUIContexts;

            if (this.telemetryRepository.Data.InstallationDate == DateTimeOffset.MinValue)
            {
                this.telemetryRepository.Data.InstallationDate = DateTimeOffset.Now; // TODO: Use some mockable clock
                this.telemetryRepository.Save();
            }

            if (IsAnonymousDataShared)
            {
                EnableAllEvents();
            }
        }
コード例 #4
0
        public TelemetryTimer(ITelemetryDataRepository telemetryRepository, ITimerFactory timerFactory)
        {
            if (telemetryRepository == null)
            {
                throw new ArgumentNullException(nameof(telemetryRepository));
            }
            if (timerFactory == null)
            {
                throw new ArgumentNullException(nameof(timerFactory));
            }

            this.telemetryRepository = telemetryRepository;

            timer           = timerFactory.Create();
            timer.AutoReset = true;
            timer.Interval  = MillisecondsBeforeFirstUpload;
        }
コード例 #5
0
        public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker,
                                ITelemetryDataRepository telemetryRepository, ITelemetryClient telemetryClient)
        {
            if (solutionBindingTracker == null)
            {
                throw new ArgumentNullException(nameof(solutionBindingTracker));
            }
            if (telemetryRepository == null)
            {
                throw new ArgumentNullException(nameof(telemetryRepository));
            }
            if (telemetryClient == null)
            {
                throw new ArgumentNullException(nameof(telemetryClient));
            }

            this.solutionBindingTracker = solutionBindingTracker;
            this.telemetryClient        = telemetryClient;
            this.telemetryRepository    = telemetryRepository;

            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "msenv.dll");

            visualStudioVersion = File.Exists(path)
                ? FileVersionInfo.GetVersionInfo(path).ProductVersion
                : string.Empty;

            if (this.telemetryRepository.Data.InstallationDate == DateTime.MinValue)
            {
                this.telemetryRepository.Data.InstallationDate = DateTime.Now;
                this.telemetryRepository.Save();
            }

            this.tryUploadDataTimer = new Timer {
                Interval = MillisecondsToWaitBetweenUpload, AutoReset = true
            };
            this.firstCallDelayer = new Timer(DelayBeforeFirstUpload)
            {
                AutoReset = false
            };

            if (IsAnonymousDataShared)
            {
                EnableAllEvents();
            }
        }
コード例 #6
0
        public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker,
                                ITelemetryDataRepository telemetryRepository, ITelemetryClient telemetryClient)
        {
            if (solutionBindingTracker == null)
            {
                throw new ArgumentNullException(nameof(solutionBindingTracker));
            }
            if (telemetryRepository == null)
            {
                throw new ArgumentNullException(nameof(telemetryRepository));
            }
            if (telemetryClient == null)
            {
                throw new ArgumentNullException(nameof(telemetryClient));
            }

            this.solutionBindingTracker = solutionBindingTracker;
            this.telemetryClient        = telemetryClient;
            this.telemetryRepository    = telemetryRepository;

            if (this.telemetryRepository.Data.InstallationDate == DateTime.MinValue)
            {
                this.telemetryRepository.Data.InstallationDate = DateTime.Now;
                this.telemetryRepository.Save();
            }

            this.tryUploadDataTimer = new Timer {
                Interval = MillisecondsToWaitBetweenUpload, AutoReset = true
            };
            this.firstCallDelayer = new Timer(DelayBeforeFirstUpload)
            {
                AutoReset = false
            };

            if (IsAnonymousDataShared)
            {
                EnableAllEvents();
            }
        }
コード例 #7
0
        public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository,
                                ILogger logger, ITelemetryClient telemetryClient, ITelemetryTimer telemetryTimer, IKnownUIContexts knownUIContexts,
                                ICurrentTimeProvider currentTimeProvider)
        {
            this.solutionBindingTracker = solutionBindingTracker ?? throw new ArgumentNullException(nameof(solutionBindingTracker));
            this.telemetryRepository    = telemetryRepository ?? throw new ArgumentNullException(nameof(telemetryRepository));
            this.logger              = logger ?? throw new ArgumentNullException(nameof(logger));
            this.telemetryClient     = telemetryClient ?? throw new ArgumentNullException(nameof(telemetryClient));
            this.telemetryTimer      = telemetryTimer ?? throw new ArgumentNullException(nameof(telemetryTimer));
            this.knownUIContexts     = knownUIContexts ?? throw new ArgumentNullException(nameof(knownUIContexts));
            this.currentTimeProvider = currentTimeProvider ?? throw new ArgumentNullException(nameof(currentTimeProvider));

            if (this.telemetryRepository.Data.InstallationDate == DateTimeOffset.MinValue)
            {
                this.telemetryRepository.Data.InstallationDate = currentTimeProvider.Now;
                this.telemetryRepository.Save();
            }

            if (IsAnonymousDataShared)
            {
                EnableAllEvents();
            }
        }
 private static IServerNotificationsTelemetryManager CreateTestSubject(ITelemetryDataRepository dataRepository)
 {
     return(new ServerNotificationsTelemetryManager(dataRepository));
 }
コード例 #9
0
 public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository)
     : this(solutionBindingTracker, telemetryRepository, new TelemetryClient(),
            new TelemetryTimer(telemetryRepository, new TimerFactory()), new KnownUIContextsWrapper())
 {
 }
コード例 #10
0
 public ServerNotificationsTelemetryManager(ITelemetryDataRepository telemetryRepository)
 {
     this.telemetryRepository = telemetryRepository;
 }