internal static void PoisonAllRemoteSessions(ICache cache) { Contract.Requires(cache is VerticalCacheAggregator); VerticalCacheAggregator vertCache = cache as VerticalCacheAggregator; CallbackCacheWrapper remoteCache = vertCache.RemoteCache as CallbackCacheWrapper; XAssert.IsNotNull(remoteCache); remoteCache.CreateNamedSessionAsyncCallback = async(string sessionId, ICache cacheInstance) => { ICacheSession session = await cacheInstance.CreateSessionAsync(sessionId).SuccessAsync(); CallbackCacheSessionWrapper wrappedSession = new CallbackCacheSessionWrapper(session); PoisonSession(wrappedSession); return(new BuildXL.Utilities.Possible <ICacheSession, BuildXL.Utilities.Failure>(session)); }; remoteCache.CreateSessionAsyncCallback = async(ICache cacheInstance) => { ICacheSession session = await cacheInstance.CreateSessionAsync().SuccessAsync(); CallbackCacheSessionWrapper wrappedSession = new CallbackCacheSessionWrapper(session); PoisonSession(wrappedSession); return(new BuildXL.Utilities.Possible <ICacheSession, BuildXL.Utilities.Failure>(session)); }; remoteCache.CreateReadOnlySessionAsyncCallback = async(ICache cacheInstance) => { ICacheReadOnlySession session = await cacheInstance.CreateReadOnlySessionAsync().SuccessAsync(); CallbackCacheReadOnlySessionWrapper wrappedSession = new CallbackCacheReadOnlySessionWrapper(session); PoisonROSession(wrappedSession); return(new BuildXL.Utilities.Possible <ICacheReadOnlySession, BuildXL.Utilities.Failure>(session)); }; remoteCache.CacheGuidGetCallback = (ICache wrappedcache) => { XAssert.Fail("Remote Cache was called when disconnected (CacheGuid)"); return(Guid.Empty); }; }
private static void PoisonROSession(CallbackCacheReadOnlySessionWrapper cacheSession) { cacheSession.EnumerateStrongFingerprintsCallback = (WeakFingerprintHash weak, UrgencyHint hint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (EnumerateStrongFingerprints)"); return(null); }; cacheSession.GetCacheEntryAsyncCallback = (StrongFingerprint strong, UrgencyHint urgencyHint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (GetCacheEntryAsync)"); return(null); }; cacheSession.GetStreamAsyncCallback = (CasHash hash, UrgencyHint urgencyHint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (GetStreamAsync)"); return(null); }; cacheSession.PinToCasAsyncCallback = (CasHash hash, UrgencyHint urgencyHint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (PinToCasAsync)"); return(null); }; cacheSession.PinToCasMultipleAsyncCallback = (CasEntries hashes, UrgencyHint urgencyHint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (PinToCasMultiple)"); return(null); }; cacheSession.ProduceFileAsyncCallback = (CasHash hash, string filename, FileState fileState, UrgencyHint urgencyHint, Guid activityId, ICacheReadOnlySession wrappedSession) => { XAssert.Fail("Remote Cache was called when disconnected (ProduceFileAsync)"); return(null); }; }