MonoDevelop.VersionControl.Repository.AcquireLockForQuery C# (CSharp) Method

AcquireLockForQuery() private method

private AcquireLockForQuery ( FilePath path, bool getRemoteStatus ) : RecursiveDirectoryInfoQuery
path FilePath
getRemoteStatus bool
return RecursiveDirectoryInfoQuery
		RecursiveDirectoryInfoQuery AcquireLockForQuery (FilePath path, bool getRemoteStatus)
		{
			RecursiveDirectoryInfoQuery rq;
			bool query = false;
			lock (queryLock) {
				rq = recursiveDirectoryQueryQueue.FirstOrDefault (q => q.Directory == path);
				if (rq == null) {
					query = true;
					var mre = new ManualResetEvent (false);
					rq = new RecursiveDirectoryInfoQuery {
						Directory = path,
						GetRemoteStatus = getRemoteStatus,
						ResetEvent = mre,
						Count = 1,
					};
				} else
					Interlocked.Increment (ref rq.Count);
			}
			if (query)
				AddQuery (rq);
			return rq;
		}