Exemple #1
0
        private DataCacheInternal createCacheInternal(
            InternalCacheUpdater cacheUpdater,
            string hostname,
            IHostProperties hostProperties,
            User user,
            SearchQueryCollection queryCollection,
            IModificationNotifier modificationNotifier,
            INetworkOperationStatusListener networkOperationStatusListener,
            bool isApprovalStatusSupported)
        {
            MergeRequestManager mergeRequestManager = new MergeRequestManager(
                _cacheContext, cacheUpdater, hostname, hostProperties, queryCollection, networkOperationStatusListener,
                isApprovalStatusSupported);
            DiscussionManager discussionManager = new DiscussionManager(
                _cacheContext, hostname, hostProperties, user, mergeRequestManager,
                modificationNotifier, networkOperationStatusListener);
            TimeTrackingManager timeTrackingManager = new TimeTrackingManager(
                hostname, hostProperties, user, discussionManager, modificationNotifier, networkOperationStatusListener);

            ProjectCache projectCache = null;

            if (_cacheContext.SupportProjectCache)
            {
                IProjectListLoader loader = new ProjectListLoader(hostname, _operator);
                projectCache = new ProjectCache(loader, _cacheContext, hostname);
            }
            UserCache userCache = null;

            if (_cacheContext.SupportUserCache)
            {
                IUserListLoader userListLoader = new UserListLoader(hostname, _operator);
                userCache = new UserCache(userListLoader, _cacheContext, hostname);
            }
            return(new DataCacheInternal(mergeRequestManager, discussionManager, timeTrackingManager, projectCache, userCache));
        }
Exemple #2
0
        internal MergeRequestManager(
            DataCacheContext dataCacheContext,
            InternalCacheUpdater cacheUpdater,
            string hostname,
            IHostProperties hostProperties,
            DataCacheConnectionContext context,
            IModificationNotifier modificationNotifier)
        {
            _dataCacheContext     = dataCacheContext;
            _cacheUpdater         = cacheUpdater;
            _modificationNotifier = modificationNotifier;

            _modificationNotifier.MergeRequestModified += onMergeRequestModified;

            if (context.UpdateRules.UpdateMergeRequestsPeriod.HasValue)
            {
                DataCacheConnectionContext updateContext = new DataCacheConnectionContext(
                    new DataCacheCallbacks(null, null), // disable callbacks from updates
                    context.UpdateRules,
                    context.CustomData);

                _updateManager = new UpdateManager(_dataCacheContext, hostname, hostProperties,
                                                   updateContext, _cacheUpdater);
                _updateManager.MergeRequestEvent += onUpdate;
            }
        }
Exemple #3
0
        public TimeTrackingManager(
            string hostname,
            IHostProperties hostProperties,
            User user,
            IDiscussionLoader discussionLoader,
            IModificationNotifier modificationNotifier)
        {
            _operator             = new TimeTrackingOperator(hostname, hostProperties);
            _currentUser          = user;
            _modificationNotifier = modificationNotifier;

            _modificationNotifier.TrackedTimeModified += onTrackedTimeModified;

            _discussionLoader = discussionLoader;
            _discussionLoader.DiscussionsLoading += preProcessDiscussions;
            _discussionLoader.DiscussionsLoaded  += processDiscussions;
        }
        internal DiscussionManager(
            DataCacheContext dataCacheContext,
            string hostname,
            IHostProperties hostProperties,
            User user,
            IMergeRequestCache mergeRequestCache,
            IModificationNotifier modificationNotifier,
            INetworkOperationStatusListener networkOperationStatusListener)
        {
            _operator = new DiscussionOperator(hostname, hostProperties, networkOperationStatusListener);

            _parser = new DiscussionParser(this, dataCacheContext.DiscussionKeywords, user);
            _parser.DiscussionEvent += onDiscussionParserEvent;

            _mergeRequestFilterChecker = dataCacheContext.MergeRequestFilterChecker;
            _tagForLogging             = dataCacheContext.TagForLogging;

            _mergeRequestCache = mergeRequestCache;
            _mergeRequestCache.MergeRequestEvent += OnMergeRequestEvent;
            _modificationNotifier = modificationNotifier;

            _modificationNotifier.DiscussionResolved += onDiscussionResolved;
            _modificationNotifier.DiscussionModified += onDiscussionModified;

            if (dataCacheContext.UpdateRules.UpdateDiscussionsPeriod.HasValue)
            {
                _timer = new System.Timers.Timer
                {
                    Interval = dataCacheContext.UpdateRules.UpdateDiscussionsPeriod.Value
                };
                _timer.Elapsed            += onTimer;
                _timer.SynchronizingObject = dataCacheContext.SynchronizeInvoke;
                _timer.Start();

                scheduleUpdate(null /* update all merge requests cached at the moment of update processing */,
                               DiscussionUpdateType.InitialSnapshot);
            }
        }
Exemple #5
0
 public DataCache(DataCacheContext dataCacheContext, IModificationNotifier modificationNotifier)
 {
     _dataCacheContext     = dataCacheContext;
     _modificationNotifier = modificationNotifier;
 }