/// <summary> /// The sequence numbers under a single local session must come strictly in order and are only valid once only. /// </summary> internal virtual bool IsValidOperation(LocalOperationId operationId) { long?lastSequenceNumber = LastSequenceNumberPerSession[operationId.LocalSessionId()]; if (lastSequenceNumber == null) { if (operationId.SequenceNumber() != 0) { return(false); } } else if (operationId.SequenceNumber() != lastSequenceNumber + 1) { return(false); } return(true); }
internal virtual bool ValidateAndTrackOperation(LocalOperationId operationId) { if (!IsValidOperation(operationId)) { return(false); } LastSequenceNumberPerSession[operationId.LocalSessionId()] = operationId.SequenceNumber(); return(true); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void sessionAcquirementIncreasesOperationId() public virtual void SessionAcquirementIncreasesOperationId() { LocalSessionPool sessionPool = new LocalSessionPool(_globalSession); OperationContext context; context = sessionPool.AcquireSession(); LocalOperationId operationA = context.LocalOperationId(); sessionPool.ReleaseSession(context); context = sessionPool.AcquireSession(); LocalOperationId operationB = context.LocalOperationId(); sessionPool.ReleaseSession(context); assertEquals(operationB.SequenceNumber(), operationA.SequenceNumber() + 1); }
private bool IsFirstOperation(LocalOperationId id) { return(id.SequenceNumber() == 0); }