public virtual void Update(GlobalSession globalSession, LocalOperationId localOperationId, long logIndex) { LocalSessionTracker localSessionTracker = ValidateGlobalSessionAndGetLocalSessionTracker(globalSession); localSessionTracker.ValidateAndTrackOperation(localOperationId); this._logIndex = logIndex; }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public void marshal(GlobalSessionTrackerState target, org.neo4j.storageengine.api.WritableChannel channel) throws java.io.IOException //JAVA TO C# CONVERTER NOTE: Members cannot have the same name as their enclosing type: public override void MarshalConflict(GlobalSessionTrackerState target, WritableChannel channel) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.Map<org.neo4j.causalclustering.identity.MemberId, LocalSessionTracker> sessionTrackers = target.sessionTrackers; IDictionary <MemberId, LocalSessionTracker> sessionTrackers = target.sessionTrackers; channel.PutLong(target._logIndex); channel.PutInt(sessionTrackers.Count); foreach (KeyValuePair <MemberId, LocalSessionTracker> entry in sessionTrackers.SetOfKeyValuePairs()) { MemberMarshal.marshal(entry.Key, channel); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final LocalSessionTracker localSessionTracker = entry.getValue(); LocalSessionTracker localSessionTracker = entry.Value; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.UUID uuid = localSessionTracker.globalSessionId; System.Guid uuid = localSessionTracker.GlobalSessionId; channel.PutLong(uuid.MostSignificantBits); channel.PutLong(uuid.LeastSignificantBits); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.Map<long, long> map = localSessionTracker.lastSequenceNumberPerSession; IDictionary <long, long> map = localSessionTracker.LastSequenceNumberPerSession; channel.PutInt(map.Count); foreach (KeyValuePair <long, long> sessionSequence in map.SetOfKeyValuePairs()) { channel.PutLong(sessionSequence.Key); channel.PutLong(sessionSequence.Value); } } }
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)); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public GlobalSessionTrackerState unmarshal0(org.neo4j.storageengine.api.ReadableChannel channel) throws java.io.IOException, org.neo4j.causalclustering.messaging.EndOfStreamException public override GlobalSessionTrackerState Unmarshal0(ReadableChannel channel) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final long logIndex = channel.getLong(); long logIndex = channel.Long; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int sessionTrackerSize = channel.getInt(); int sessionTrackerSize = channel.Int; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.Map<org.neo4j.causalclustering.identity.MemberId, LocalSessionTracker> sessionTrackers = new java.util.HashMap<>(); IDictionary <MemberId, LocalSessionTracker> sessionTrackers = new Dictionary <MemberId, LocalSessionTracker>(); for (int i = 0; i < sessionTrackerSize; i++) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.identity.MemberId member = memberMarshal.unmarshal(channel); MemberId member = MemberMarshal.unmarshal(channel); if (member == null) { throw new System.InvalidOperationException("Null member"); } long mostSigBits = channel.Long; long leastSigBits = channel.Long; System.Guid globalSessionId = new System.Guid(mostSigBits, leastSigBits); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int localSessionTrackerSize = channel.getInt(); int localSessionTrackerSize = channel.Int; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.Map<long, long> lastSequenceNumberPerSession = new java.util.HashMap<>(); IDictionary <long, long> lastSequenceNumberPerSession = new Dictionary <long, long>(); for (int j = 0; j < localSessionTrackerSize; j++) { long localSessionId = channel.Long; long sequenceNumber = channel.Long; lastSequenceNumberPerSession[localSessionId] = sequenceNumber; } //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final LocalSessionTracker localSessionTracker = new LocalSessionTracker(globalSessionId, lastSequenceNumberPerSession); LocalSessionTracker localSessionTracker = new LocalSessionTracker(globalSessionId, lastSequenceNumberPerSession); sessionTrackers[member] = localSessionTracker; } GlobalSessionTrackerState result = new GlobalSessionTrackerState(); result.sessionTrackers = sessionTrackers; result.logIndex = logIndex; return(result); }
private bool IsNewSession(GlobalSession globalSession, LocalSessionTracker existingSessionTracker) { return(existingSessionTracker == null || !existingSessionTracker.GlobalSessionId.Equals(globalSession.SessionId())); }