コード例 #1
0
        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);
            };
        }
コード例 #2
0
        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);
            };
        }