public virtual void Update(GlobalSession globalSession, LocalOperationId localOperationId, long logIndex) { LocalSessionTracker localSessionTracker = ValidateGlobalSessionAndGetLocalSessionTracker(globalSession); localSessionTracker.ValidateAndTrackOperation(localOperationId); this._logIndex = logIndex; }
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)); } }
public override bool Equals(object o) { if (this == o) { return(true); } if (o == null || this.GetType() != o.GetType()) { return(false); } GlobalSession that = ( GlobalSession )o; if (!_sessionId.Equals(that._sessionId)) { return(false); } return(_owner.Equals(that._owner)); }
private bool IsNewSession(GlobalSession globalSession, LocalSessionTracker existingSessionTracker) { return(existingSessionTracker == null || !existingSessionTracker.GlobalSessionId.Equals(globalSession.SessionId())); }
public LocalSessionPool(GlobalSession globalSession) { this._globalSession = globalSession; }
private void InitializeInstanceFields() { _globalSession = new GlobalSession(System.Guid.randomUUID(), _memberId); }