private LocalSessionTracker ValidateGlobalSessionAndGetLocalSessionTracker(GlobalSession globalSession) { LocalSessionTracker localSessionTracker = _sessionTrackers[globalSession.Owner()]; if (localSessionTracker == null || !localSessionTracker.GlobalSessionId.Equals(globalSession.SessionId())) { localSessionTracker = new LocalSessionTracker(globalSession.SessionId(), new Dictionary <long, long>()); _sessionTrackers[globalSession.Owner()] = localSessionTracker; } return(localSessionTracker); }
/// <summary> /// Tracks the operation and returns true iff this operation should be allowed. /// </summary> public virtual bool ValidateOperation(GlobalSession globalSession, LocalOperationId localOperationId) { LocalSessionTracker existingSessionTracker = _sessionTrackers[globalSession.Owner()]; if (IsNewSession(globalSession, existingSessionTracker)) { return(IsFirstOperation(localOperationId)); } else { return(existingSessionTracker.IsValidOperation(localOperationId)); } }