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)); }
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; } }
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); } }
public DataCache(DataCacheContext dataCacheContext, IModificationNotifier modificationNotifier) { _dataCacheContext = dataCacheContext; _modificationNotifier = modificationNotifier; }