All Downloads are FREE. Search and download functionalities are using the official Maven repository.

archive.aeron-archive-codecs.xml Maven / Gradle / Ivy

There is a newer version: 1.48.0
Show newest version
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sbe:messageSchema xmlns:sbe="http://fixprotocol.io/2016/sbe"
                   package="io.aeron.archive.codecs"
                   id="101"
                   version="10"
                   semanticVersion="5.2"
                   description="Message Codecs for communicating with an Aeron Archive."
                   byteOrder="littleEndian">
    <types>
        <composite name="messageHeader" description="Message identifiers and length of message root.">
            <type name="blockLength" primitiveType="uint16"/>
            <type name="templateId"  primitiveType="uint16"/>
            <type name="schemaId"    primitiveType="uint16"/>
            <type name="version"     primitiveType="uint16"/>
        </composite>
        <composite name="groupSizeEncoding" description="Repeating group dimensions.">
            <type name="blockLength" primitiveType="uint16"/>
            <type name="numInGroup"  primitiveType="uint16"/>
        </composite>
        <composite name="varAsciiEncoding" description="Variable length ASCII string header.">
            <type name="length"      primitiveType="uint32" maxValue="1073741824"/>
            <type name="varData"     primitiveType="uint8" length="0" characterEncoding="US-ASCII"/>
        </composite>
        <composite name="varDataEncoding" description="Variable length data blob header.">
            <type name="length"      primitiveType="uint32" maxValue="1073741824"/>
            <type name="varData"     primitiveType="uint8" length="0"/>
        </composite>
        <enum name="ControlResponseCode" encodingType="int32" description="Control protocol response code.">
            <validValue name="OK" description="Operation successful.">0</validValue>
            <validValue name="ERROR" description="Error occurred during operation.">1</validValue>
            <validValue name="RECORDING_UNKNOWN" description="Recording id was unknown.">2</validValue>
            <validValue name="SUBSCRIPTION_UNKNOWN" description="Subscription id was unknown.">3</validValue>
        </enum>
        <enum name="SourceLocation" encodingType="int32" description="Source location for recorded stream.">
            <validValue name="LOCAL" description="Archive is local to driver.">0</validValue>
            <validValue name="REMOTE" description="Archive is remote to driver.">1</validValue>
        </enum>
        <enum name="BooleanType" encodingType="int32" description="Language independent boolean type.">
            <validValue name="FALSE" description="Language independent boolean false.">0</validValue>
            <validValue name="TRUE" description="Language independent boolean true.">1</validValue>
        </enum>
        <enum name="RecordingSignal" encodingType="int32" description="Signal of operations happening to a recording.">
            <validValue name="START" description="Recording has started for a stream.">0</validValue>
            <validValue name="STOP" description="Recording has stopped for a stream.">1</validValue>
            <validValue name="EXTEND" description="Recording has started extending.">2</validValue>
            <validValue name="REPLICATE" description="Recording descriptor replicated from source archive.">3</validValue>
            <validValue name="MERGE" description="Recording merged with live stream after replay.">4</validValue>
            <validValue name="SYNC" description="Recording synchronised with source archive.">5</validValue>
            <validValue name="DELETE" description="Recording has deleted segments.">6</validValue>
            <validValue name="REPLICATE_END" description="Recording replication has ended.">7</validValue>
        </enum>
        <enum name="RecordingState" encodingType="int32" description="State of a recording in the Catalog.">
            <validValue name="INVALID" description="Recording is invalid.">0</validValue>
            <validValue name="VALID" description="Recording is valid.">1</validValue>
            <validValue name="DELETED" description="Recording was deleted." sinceVersion="10">2</validValue>
        </enum>
        <type name="time_t" primitiveType="int64" description="Epoch time in milliseconds since 1 Jan 1970 UTC."/>
        <type name="version_t" primitiveType="int32" presence="optional" nullValue="0" minValue="2" maxValue="16777215"
              description="Protocol suite version using semantic version form."/>
    </types>

<!--
    Archive Control Protocol
    ========================

    Control Protocol:
        -> [connect | auth-connect],
           *[start-recording | stop-recording | stop-recording-subscription | replay | stop-replay | stop-all-replays |
             list-recordings | list-recordings-by-uri | list-recording | find-last-matching-recording |
             list-recording-subscriptions | stop-recording-by-identity
             extend-recording | truncate-recording | replicate-recording | stop-replication | stop-all-replication |
             start-position | recording-position | stop-position | stop-or-recording-position |
             detach-segments | delete-detached-segments | purge-segments | attach-segments | migrate-segments |
             purge-recording | archive-id | replay-token-request],
           close
                \
        <-       +[control-response | challenge],
                 *[control-response | recording-descriptor | recording-subscription-descriptor | recording-transition]

    Recording Progress Events:
        <- recording-started, *recording-progress, recording-stopped

    1. Connect
        - Connect to an archive providing response channel, stream id, and optional credentials if authenticating.
        - Connection can be local or remote. Local can be optimised for IPC.
        - If successful a control session will be created with control responses provided.
        - If a response stream cannot be created within timeout then the session is automatically closed.

    2. Recording
        - A recording can be started for a given channel and stream id. Channel can be restricted to session specific.
        - Each matching Image will get its own recording and assigned a unique id which can be used for replay.
        - Each Image recording can be tracked with recording-events or locally via a RecordingPos counter.
        - Recordings can be stopped by URI and stream-id or subscription registration id.
        - Existing recordings can be extended or truncated.

    3. Replay
        - Recordings can be replayed to a provided channel and stream id which is different to the control stream.
        - Replays will start when the replay stream is connected and will automatically close at the end or if the
          replay stream is not connected.
        - Replays will likely have a different session if from the original recording.
        - A replay can be for a live recording which will follow a live recording in an open-ended fashion if requested
          length is -1 or greater than current recorded position.
        - A replay may be stopped early by closing the replay subscription or calling stop-replay.
        - A replay can be bounded by a provided counter id which limits the replay by externally controlled counter.

    4. Query
        - Existing recordings can be listed by recording id range and filtered by uri and stream-id.
        - Recording subscriptions can be listed for all sessions, so they can be closed on failure.
          An active recording subscription can be found by recording id.
        - The start, stop, and active recording position for recordings.

    5. Recording Signals
        - Signals indicating the asynchronous start, stop, extension, replicate, etc. of recordings during operation.

    6. Truncate
        - Truncate an existing recording by deleting the end of a recording from a position.
        - Truncated to zero is an effective delete.

    7. Replication
        - Replication a recording from one archive to another including the recording descriptor.
        - Replicated stream will likely not have the same recording id in destination archive.
        - Can follow a live recording up to the point it is stopped at the source.
        - Optionally Merge with a live stream after replay catch up to have multiple recordings of a live stream.
        - The Subscription used for replication can have its tags provided, so it can be followed externally.

    8. Recording Progress Events
        - Events indicating the asynchronous start, stop, and progress of all recordings.
        - This can be a high volume stream which reports progress in batches of messages recorded to storage.
        - If only interested in the change of lifecycle events such as start, stop, and extend then use the below.

    9. Recording Storage Maintenance
        - Detach segments from the beginning of a recording, so they can be moved or deleted.
        - Delete segments from the beginning of a recording which have been detached.
        - Purge segments from the beginning of a recording which is composite action of detach and delete.
        - Attach segments to the beginning of a recording which have been previously detached.
        - Migrate segments from another matching recording and attached them to the beginning of a recording.
-->

    <sbe:message name="ControlResponse"
                 id="1"
                 description="Generic response to a control request. Error message will be empty if code is OK.">
        <field name="controlSessionId"     id="1" type="int64"
               description="Session id for a multiplexed session over a shared connection, i.e. same Image."/>
        <field name="correlationId"        id="2" type="int64"
               description="Request correlation id with which this response is associated."/>
        <field name="relevantId"           id="3" type="int64"
               description="Relevant identity of an object, e.g. recordingId if RECORDING_UNKNOWN, or error code."/>
        <field name="code"                 id="4" type="ControlResponseCode"
               description="Code type of the response which is one of ControlResponseCode."/>
        <field name="version"              id="5" type="version_t" presence="optional" sinceVersion="4"
               description="Protocol version for the server using semantic version form."/>
        <data  name="errorMessage"         id="6" type="varAsciiEncoding"
               description="Detailed error message which is provided when code is ERROR."/>
    </sbe:message>

    <sbe:message name="ConnectRequest"
                 id="2"
                 description="Request a connection to an archive and provide response details for the control session.">
        <field name="correlationId"        id="1" type="int64"/>
        <field name="responseStreamId"     id="2" type="int32"/>
        <field name="version"              id="3" type="version_t" presence="optional" sinceVersion="2"/>
        <data  name="responseChannel"      id="4" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="CloseSessionRequest"
                 id="3"
                 description="Close an existing control session.">
        <field name="controlSessionId"     id="1" type="int64"/>
    </sbe:message>

    <sbe:message name="StartRecordingRequest"
                 id="4"
                 description="Request a channel:stream be recorded.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="streamId"             id="3" type="int32"/>
        <field name="sourceLocation"       id="4" type="SourceLocation"/>
        <data  name="channel"              id="5" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StopRecordingRequest"
                 id="5"
                 description="Request a channel:stream stop recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="streamId"             id="3" type="int32"/>
        <data  name="channel"              id="4" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="ReplayRequest"
                 id="6"
                 description="Replay recording range request.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="position"             id="4" type="int64"/>
        <field name="length"               id="5" type="int64"/>
        <field name="replayStreamId"       id="6" type="int32"/>
        <field name="fileIoMaxLength"      id="8" type="int32" sinceVersion="7"/>
        <field name="replayToken"          id="9" type="int64" sinceVersion="10"/>
        <data  name="replayChannel"        id="7" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StopReplayRequest"
                 id="7"
                 description="Stop active Replay request.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="replaySessionId"      id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="ListRecordingsRequest"
                 id="8"
                 description="Request a range of recording descriptors.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="fromRecordingId"      id="3" type="int64"/>
        <field name="recordCount"          id="4" type="int32"/>
    </sbe:message>

    <sbe:message name="ListRecordingsForUriRequest"
                 id="9"
                 description="Request a range of recording descriptors.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="fromRecordingId"      id="3" type="int64"/>
        <field name="recordCount"          id="4" type="int32"/>
        <field name="streamId"             id="5" type="int32"/>
        <data  name="channel"              id="6" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="ListRecordingRequest"
                 id="10"
                 description="Request a descriptor for a recording id.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="ExtendRecordingRequest"
                 id="11"
                 description="Request an existing recording be extended">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="streamId"             id="4" type="int32"/>
        <field name="sourceLocation"       id="5" type="SourceLocation"/>
        <data  name="channel"              id="6" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="RecordingPositionRequest"
                 id="12"
                 description="Request the recorded position of an active recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="TruncateRecordingRequest"
                 id="13"
                 description="Request the truncation of stopped recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="position"             id="4" type="int64"/>
    </sbe:message>

    <sbe:message name="StopRecordingSubscriptionRequest"
                 id="14"
                 description="Request a subscription stop recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="subscriptionId"       id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="StopPositionRequest"
                 id="15"
                 description="Request the stop position of a recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="FindLastMatchingRecordingRequest"
                 id="16"
                 description="Find the last recording id after minRecordingId which matches criteria.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="minRecordingId"       id="3" type="int64"/>
        <field name="sessionId"            id="4" type="int32"/>
        <field name="streamId"             id="5" type="int32"/>
        <data  name="channel"              id="6" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="ListRecordingSubscriptionsRequest"
                 id="17"
                 description="Request a range of active recording subscriptions which match a criteria.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="pseudoIndex"          id="3" type="int32"/>
        <field name="subscriptionCount"    id="4" type="int32"/>
        <field name="applyStreamId"        id="5" type="BooleanType"/>
        <field name="streamId"             id="6" type="int32"/>
        <data  name="channel"              id="7" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="BoundedReplayRequest"
                 id="18"
                 description="Replay recording range request bounded by a position counter.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="position"             id="4" type="int64"/>
        <field name="length"               id="5" type="int64"/>
        <field name="limitCounterId"       id="6" type="int32"/>
        <field name="replayStreamId"       id="7" type="int32"/>
        <field name="fileIoMaxLength"      id="9" type="int32" sinceVersion="7"/>
        <field name="replayToken"          id="10" type="int64" sinceVersion="10"/>
        <data  name="replayChannel"        id="8" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StopAllReplaysRequest"
                 id="19"
                 description="Stop all active replays.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

<!-- Archive Catalog Metadata -->

    <sbe:message name="CatalogHeader"
                 id="20"
                 description="Used as first element in Catalog to set the version and alignment of entries.">
        <field name="version"              id="1"  type="int32"/>
        <field name="length"               id="2"  type="int32"/>
        <field name="nextRecordingId"      id="3"  type="int64"/>
        <field name="alignment"            id="4"  type="int32"/>
        <field name="reserved"             id="5"  type="int8" offset="31"/>
    </sbe:message>

    <sbe:message name="RecordingDescriptorHeader"
                 id="21"
                 description="Used in the catalog to describe the recording descriptor entry which follows.">
        <field name="length"               id="1" type="int32"
               description="Length of the RecordingDescriptor in bytes including alignment padding."/>
        <field name="state"                id="2" type="RecordingState" description="State of the recording."/>
        <field name="checksum"             id="4" type="int32"
               description="Checksum of the entire RecordingDescriptor."/>
        <field name="reserved"             id="3" type="int8" offset="31"/>
    </sbe:message>

<!-- Records in the Catalog which describe recordings that can be listed via the Control Protocol -->

    <sbe:message name="RecordingDescriptor"
                 id="22"
                 description="Describes a recording in the catalog.">
        <field name="controlSessionId"     id="1"  type="int64"/>
        <field name="correlationId"        id="2"  type="int64"/>
        <field name="recordingId"          id="3"  type="int64"/>
        <field name="startTimestamp"       id="4"  type="time_t"/>
        <field name="stopTimestamp"        id="5"  type="time_t"/>
        <field name="startPosition"        id="6"  type="int64"/>
        <field name="stopPosition"         id="7"  type="int64"/>
        <field name="initialTermId"        id="8"  type="int32"/>
        <field name="segmentFileLength"    id="9"  type="int32"/>
        <field name="termBufferLength"     id="10" type="int32"/>
        <field name="mtuLength"            id="11" type="int32"/>
        <field name="sessionId"            id="12" type="int32"/>
        <field name="streamId"             id="13" type="int32"/>
        <data  name="strippedChannel"      id="14" type="varAsciiEncoding"/>
        <data  name="originalChannel"      id="15" type="varAsciiEncoding"/>
        <data  name="sourceIdentity"       id="16" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="RecordingSubscriptionDescriptor"
                 id="23"
                 description="Describes a recording subscription that has been started and not yet stopped.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="subscriptionId"       id="3" type="int64"/>
        <field name="streamId"             id="4" type="int32"/>
        <data  name="strippedChannel"      id="5" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="RecordingSignalEvent"
                 id="24"
                 description="Signal of operations which happen to a recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="subscriptionId"       id="4" type="int64"/>
        <field name="position"             id="5" type="int64"/>
        <field name="signal"               id="6" type="RecordingSignal"/>
    </sbe:message>

<!-- Extended Control Protocol -->

    <sbe:message name="ReplicateRequest"
                 id="50"
                 description="Replicate a recording from another archive.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="srcRecordingId"       id="3" type="int64"/>
        <field name="dstRecordingId"       id="4" type="int64"/>
        <field name="srcControlStreamId"   id="5" type="int32"/>
        <data  name="srcControlChannel"    id="6" type="varAsciiEncoding"/>
        <data  name="liveDestination"      id="7" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StopReplicationRequest"
                 id="51"
                 description="Stop active replication session.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="replicationId"        id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="StartPositionRequest"
                 id="52"
                 description="Request the start position of a recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="DetachSegmentsRequest"
                 id="53"
                 description="Detach segments from a recording to give a new start position.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="newStartPosition"     id="4" type="int64"/>
    </sbe:message>

    <sbe:message name="DeleteDetachedSegmentsRequest"
                 id="54"
                 description="Delete detached segments from a recording.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="PurgeSegmentsRequest"
                 id="55"
                 description="Purge (detach and delete) segments from a recording to give a new start position.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="newStartPosition"     id="4" type="int64"/>
    </sbe:message>

    <sbe:message name="AttachSegmentsRequest"
                 id="56"
                 description="Attach segments to beginning of a recording to give a new start position.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="MigrateSegmentsRequest"
                 id="57"
                 description="Migrate segments to beginning of a recording to give a new start position.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="srcRecordingId"       id="3" type="int64"/>
        <field name="dstRecordingId"       id="4" type="int64"/>
    </sbe:message>

    <sbe:message name="AuthConnectRequest"
                 id="58"
                 description="Connect request with authentication credentials.">
        <field name="correlationId"        id="1" type="int64"/>
        <field name="responseStreamId"     id="2" type="int32"/>
        <field name="version"              id="3" type="version_t"/>
        <data  name="responseChannel"      id="4" type="varAsciiEncoding"/>
        <data  name="encodedCredentials"   id="5" type="varDataEncoding"/>
    </sbe:message>

    <sbe:message name="Challenge"
                 id="59"
                 description="Challenge the client to provide credentials.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="version"              id="3" type="version_t"/>
        <data  name="encodedChallenge"     id="4" type="varDataEncoding"/>
    </sbe:message>

    <sbe:message name="ChallengeResponse"
                 id="60"
                 description="Response to an archive challenge with credentials.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <data  name="encodedCredentials"   id="3" type="varDataEncoding"/>
    </sbe:message>

    <sbe:message name="KeepAliveRequest"
                 id="61"
                 description="Keep an archive control session alive by indicating the client is alive.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
    </sbe:message>

    <sbe:message name="TaggedReplicateRequest"
                 id="62"
                 description="Replicate a recording from another archive and set tags on subscription.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="srcRecordingId"       id="3" type="int64"/>
        <field name="dstRecordingId"       id="4" type="int64"/>
        <field name="channelTagId"         id="5" type="int64"/>
        <field name="subscriptionTagId"    id="6" type="int64"/>
        <field name="srcControlStreamId"   id="7" type="int32"/>
        <data  name="srcControlChannel"    id="8" type="varAsciiEncoding"/>
        <data  name="liveDestination"      id="9" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StartRecordingRequest2"
                 id="63"
                 description="Request a channel:stream be recorded with the option to auto stop when complete.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="streamId"             id="3" type="int32"/>
        <field name="sourceLocation"       id="4" type="SourceLocation"/>
        <field name="autoStop"             id="5" type="BooleanType"/>
        <data  name="channel"              id="6" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="ExtendRecordingRequest2"
                 id="64"
                 description="Request an existing recording be extended.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
        <field name="streamId"             id="4" type="int32"/>
        <field name="sourceLocation"       id="5" type="SourceLocation"/>
        <field name="autoStop"             id="6" type="BooleanType"/>
        <data  name="channel"              id="7" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="StopRecordingByIdentityRequest"
                 id="65"
                 description="Try and stop an active recording by its identity.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="ReplicateRequest2"
                 id="66"
                 description="Replicate a recording from another archive."
                 sinceVersion="6">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="srcRecordingId"       id="3" type="int64"/>
        <field name="dstRecordingId"       id="4" type="int64"/>
        <field name="stopPosition"         id="5" type="int64"/>
        <field name="channelTagId"         id="6" type="int64"/>
        <field name="subscriptionTagId"    id="7" type="int64"/>
        <field name="srcControlStreamId"   id="8" type="int32"/>
        <field name="fileIoMaxLength"      id="12" type="int32" sinceVersion="7"/>
        <field name="replicationSessionId" id="13" type="int32" sinceVersion="8"/>
        <data  name="srcControlChannel"    id="9" type="varAsciiEncoding"/>
        <data  name="liveDestination"      id="10" type="varAsciiEncoding"/>
        <data  name="replicationChannel"   id="11" type="varAsciiEncoding"/>
        <data  name="encodedCredentials"   id="14" type="varDataEncoding" sinceVersion="8"/>
        <data  name="srcResponseChannel"   id="15" type="varAsciiEncoding" sinceVersion="10"/>
    </sbe:message>

    <sbe:message name="MaxRecordedPositionRequest"
                 id="67"
                 description="Request the stop or active recording position of a recording."
                 sinceVersion="9">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="ArchiveIdRequest"
                 id="68"
                 description="Resolve id of the Archive."
                 sinceVersion="9">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
    </sbe:message>

    <!-- Archive Recording Progress Events -->

    <sbe:message name="RecordingStarted"
                 id="101"
                 description="Describes a new image recording as a notification.">
        <field name="recordingId"          id="1" type="int64"/>
        <field name="startPosition"        id="2" type="int64"/>
        <field name="sessionId"            id="3" type="int32"/>
        <field name="streamId"             id="4" type="int32"/>
        <data  name="channel"              id="5" type="varAsciiEncoding"/>
        <data  name="sourceIdentity"       id="6" type="varAsciiEncoding"/>
    </sbe:message>

    <sbe:message name="RecordingProgress"
                 id="102"
                 description="Recording progress notification for an Image.">
        <field name="recordingId"          id="1" type="int64"/>
        <field name="startPosition"        id="2" type="int64"/>
        <field name="position"             id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="RecordingStopped"
                 id="103"
                 description="Recording termination notification.">
        <field name="recordingId"          id="1" type="int64"/>
        <field name="startPosition"        id="2" type="int64"/>
        <field name="stopPosition"         id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="PurgeRecordingRequest"
                 id="104"
                 description="Request the invalidation of stopped recording."
                 sinceVersion="5">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

    <sbe:message name="ReplayTokenRequest"
                 id="105"
                 sinceVersion="10"
                 description="Request a token to allow a replay to be triggered from a different image.">
        <field name="controlSessionId"     id="1" type="int64"/>
        <field name="correlationId"        id="2" type="int64"/>
        <field name="recordingId"          id="3" type="int64"/>
    </sbe:message>

</sbe:messageSchema>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy