public virtual ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { messageHeaderDecoder.Wrap(buffer, offset); int templateId = messageHeaderDecoder.TemplateId(); switch (templateId) { case ControlResponseDecoder.TEMPLATE_ID: controlResponseDecoder.Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); if (controlResponseDecoder.ControlSessionId() != controlSessionId) { break; } ControlResponseCode code = controlResponseDecoder.Code(); if (ControlResponseCode.RECORDING_UNKNOWN == code) { isDispatchComplete = true; return(ControlledFragmentHandlerAction.BREAK); } if (ControlResponseCode.ERROR == code) { throw new System.InvalidOperationException("response for expectedCorrelationId=" + expectedCorrelationId + ", error: " + controlResponseDecoder.ErrorMessage()); } break; case RecordingDescriptorDecoder.TEMPLATE_ID: recordingDescriptorDecoder.Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); long correlationId = recordingDescriptorDecoder.CorrelationId(); if (controlSessionId != recordingDescriptorDecoder.ControlSessionId() || correlationId != expectedCorrelationId) { break; } consumer.OnRecordingDescriptor(controlSessionId, correlationId, recordingDescriptorDecoder.RecordingId(), recordingDescriptorDecoder.StartTimestamp(), recordingDescriptorDecoder.StopTimestamp(), recordingDescriptorDecoder.StartPosition(), recordingDescriptorDecoder.StopPosition(), recordingDescriptorDecoder.InitialTermId(), recordingDescriptorDecoder.SegmentFileLength(), recordingDescriptorDecoder.TermBufferLength(), recordingDescriptorDecoder.MtuLength(), recordingDescriptorDecoder.SessionId(), recordingDescriptorDecoder.StreamId(), recordingDescriptorDecoder.StrippedChannel(), recordingDescriptorDecoder.OriginalChannel(), recordingDescriptorDecoder.SourceIdentity()); if (0 == --remainingRecordCount) { isDispatchComplete = true; return(ControlledFragmentHandlerAction.BREAK); } break; default: throw new System.InvalidOperationException("Unknown templateId: " + templateId); } return(ControlledFragmentHandlerAction.CONTINUE); }
public ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { if (isPollComplete) { return(ABORT); } messageHeaderDecoder.Wrap(buffer, offset); int schemaId = messageHeaderDecoder.SchemaId(); if (schemaId != MessageHeaderDecoder.SCHEMA_ID) { throw new ArchiveException("expected schemaId=" + MessageHeaderDecoder.SCHEMA_ID + ", actual=" + schemaId); } if (messageHeaderDecoder.TemplateId() == ControlResponseDecoder.TEMPLATE_ID) { controlResponseDecoder.Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); controlSessionId = controlResponseDecoder.ControlSessionId(); correlationId = controlResponseDecoder.CorrelationId(); relevantId = controlResponseDecoder.RelevantId(); code = controlResponseDecoder.Code(); version = controlResponseDecoder.Version(); errorMessage = controlResponseDecoder.ErrorMessage(); isPollComplete = true; return(BREAK); } if (messageHeaderDecoder.TemplateId() == ChallengeDecoder.TEMPLATE_ID) { challengeDecoder.Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); controlSessionId = challengeDecoder.ControlSessionId(); correlationId = challengeDecoder.CorrelationId(); relevantId = Aeron.Aeron.NULL_VALUE; code = ControlResponseCode.NULL_VALUE; version = challengeDecoder.Version(); errorMessage = ""; int encodedChallengeLength = challengeDecoder.EncodedChallengeLength(); encodedChallenge = new byte[encodedChallengeLength]; challengeDecoder.GetEncodedChallenge(encodedChallenge, 0, encodedChallengeLength); isPollComplete = true; return(BREAK); } return(CONTINUE); }
public ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { if (pollComplete) { return(ABORT); } messageHeaderDecoder.Wrap(buffer, offset); int schemaId = messageHeaderDecoder.SchemaId(); if (schemaId != MessageHeaderDecoder.SCHEMA_ID) { throw new ArchiveException("expected schemaId=" + MessageHeaderDecoder.SCHEMA_ID + ", actual=" + schemaId); } templateId = messageHeaderDecoder.TemplateId(); if (templateId == ControlResponseDecoder.TEMPLATE_ID) { controlResponseDecoder.Wrap( buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); controlSessionId = controlResponseDecoder.ControlSessionId(); correlationId = controlResponseDecoder.CorrelationId(); relevantId = controlResponseDecoder.RelevantId(); code = controlResponseDecoder.Code(); errorMessage = controlResponseDecoder.ErrorMessage(); pollComplete = true; return(BREAK); } return(CONTINUE); }
public virtual ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { messageHeaderDecoder.Wrap(buffer, offset); templateId = messageHeaderDecoder.TemplateId(); switch (templateId) { case ControlResponseDecoder.TEMPLATE_ID: controlResponseDecoder.Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); controlSessionId = controlResponseDecoder.ControlSessionId(); correlationId = controlResponseDecoder.CorrelationId(); relevantId = controlResponseDecoder.RelevantId(); code = controlResponseDecoder.Code(); if (ControlResponseCode.ERROR == code) { errorMessage = controlResponseDecoder.ErrorMessage(); } else { errorMessage = ""; } break; case RecordingDescriptorDecoder.TEMPLATE_ID: break; default: throw new System.InvalidOperationException("unknown templateId: " + templateId); } pollComplete = true; return(ControlledFragmentHandlerAction.BREAK); }
public ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { if (isDispatchComplete) { return(ABORT); } messageHeaderDecoder.Wrap(buffer, offset); int schemaId = messageHeaderDecoder.SchemaId(); if (schemaId != MessageHeaderDecoder.SCHEMA_ID) { throw new ArchiveException("expected schemaId=" + MessageHeaderDecoder.SCHEMA_ID + ", actual=" + schemaId); } int templateId = messageHeaderDecoder.TemplateId(); switch (templateId) { case ControlResponseDecoder.TEMPLATE_ID: { controlResponseDecoder .Wrap(buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); if (controlResponseDecoder.ControlSessionId() == controlSessionId) { ControlResponseCode code = controlResponseDecoder.Code(); long correlationId = controlResponseDecoder.CorrelationId(); if (ControlResponseCode.SUBSCRIPTION_UNKNOWN == code && correlationId == this.correlationId) { isDispatchComplete = true; return(BREAK); } if (ControlResponseCode.ERROR == code) { ArchiveException ex = new ArchiveException( "response for correlationId=" + this.correlationId + ", error: " + controlResponseDecoder.ErrorMessage(), (int)controlResponseDecoder.RelevantId(), correlationId); if (correlationId == this.correlationId) { throw ex; } else { errorHandler?.Invoke(ex); } } } } break; case RecordingSubscriptionDescriptorDecoder.TEMPLATE_ID: { recordingSubscriptionDescriptorDecoder.Wrap( buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); long correlationId = recordingSubscriptionDescriptorDecoder.CorrelationId(); if (recordingSubscriptionDescriptorDecoder.ControlSessionId() == controlSessionId && correlationId == this.correlationId) { consumer.OnSubscriptionDescriptor( controlSessionId, correlationId, recordingSubscriptionDescriptorDecoder.SubscriptionId(), recordingSubscriptionDescriptorDecoder.StreamId(), recordingSubscriptionDescriptorDecoder.StrippedChannel()); if (0 == --remainingSubscriptionCount) { isDispatchComplete = true; return(BREAK); } } } break; } return(CONTINUE); }
public ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { if (isDispatchComplete) { return(ControlledFragmentHandlerAction.ABORT); } messageHeaderDecoder.Wrap(buffer, offset); int schemaId = messageHeaderDecoder.SchemaId(); if (schemaId != MessageHeaderDecoder.SCHEMA_ID) { throw new ArchiveException("expected schemaId=" + MessageHeaderDecoder.SCHEMA_ID + ", actual=" + schemaId); } int templateId = messageHeaderDecoder.TemplateId(); switch (templateId) { case ControlResponseDecoder.TEMPLATE_ID: { controlResponseDecoder.Wrap( buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); if (controlResponseDecoder.ControlSessionId() == controlSessionId) { ControlResponseCode code = controlResponseDecoder.Code(); long correlationId = controlResponseDecoder.CorrelationId(); if (ControlResponseCode.RECORDING_UNKNOWN == code && correlationId == this.correlationId) { isDispatchComplete = true; return(ControlledFragmentHandlerAction.BREAK); } if (ControlResponseCode.ERROR == code) { ArchiveException ex = new ArchiveException( "response for correlationId=" + this.correlationId + ", error: " + controlResponseDecoder.ErrorMessage(), (int)controlResponseDecoder.RelevantId(), correlationId); if (correlationId == this.correlationId) { throw ex; } else { errorHandler?.Invoke(ex); } } } break; } case RecordingDescriptorDecoder.TEMPLATE_ID: { recordingDescriptorDecoder.Wrap( buffer, offset + MessageHeaderEncoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); long correlationId = recordingDescriptorDecoder.CorrelationId(); if (controlSessionId == recordingDescriptorDecoder.ControlSessionId() && correlationId == this.correlationId) { consumer.OnRecordingDescriptor( controlSessionId, correlationId, recordingDescriptorDecoder.RecordingId(), recordingDescriptorDecoder.StartTimestamp(), recordingDescriptorDecoder.StopTimestamp(), recordingDescriptorDecoder.StartPosition(), recordingDescriptorDecoder.StopPosition(), recordingDescriptorDecoder.InitialTermId(), recordingDescriptorDecoder.SegmentFileLength(), recordingDescriptorDecoder.TermBufferLength(), recordingDescriptorDecoder.MtuLength(), recordingDescriptorDecoder.SessionId(), recordingDescriptorDecoder.StreamId(), recordingDescriptorDecoder.StrippedChannel(), recordingDescriptorDecoder.OriginalChannel(), recordingDescriptorDecoder.SourceIdentity()); if (0 == --remainingRecordCount) { isDispatchComplete = true; return(ControlledFragmentHandlerAction.BREAK); } } break; } } return(ControlledFragmentHandlerAction.CONTINUE); }
public ControlResponseEncoder Code(ControlResponseCode value) { _buffer.PutInt(_offset + 24, (int)value, ByteOrder.LittleEndian); return(this); }
public EndpointCreated(ControlResponseCode code) : base(code) { }
public APIStatus(ControlResponseCode code) : base(code) { }
public ControlResponseHeader(ControlResponseCode code) : base(3, (int)code) { }