static void dissectRecordingSignal(final MutableDirectBuffer buffer, final int offset, final StringBuilder builder)
    {
        int encodedLength = dissectLogHeader(CONTEXT, RECORDING_SIGNAL, buffer, offset, builder);

        HEADER_DECODER.wrap(buffer, offset + encodedLength);
        encodedLength += MessageHeaderDecoder.ENCODED_LENGTH;

        RECORDING_SIGNAL_EVENT_DECODER.wrap(
            buffer,
            offset + encodedLength,
            HEADER_DECODER.blockLength(),
            HEADER_DECODER.version());

        builder.append(": controlSessionId=").append(RECORDING_SIGNAL_EVENT_DECODER.controlSessionId())
            .append(" correlationId=").append(RECORDING_SIGNAL_EVENT_DECODER.correlationId())
            .append(" recordingId=").append(RECORDING_SIGNAL_EVENT_DECODER.recordingId())
            .append(" subscriptionId=").append(RECORDING_SIGNAL_EVENT_DECODER.subscriptionId())
            .append(" position=").append(RECORDING_SIGNAL_EVENT_DECODER.position())
            .append(" signal=").append(RECORDING_SIGNAL_EVENT_DECODER.signal());
    }
@Test
    void recordingSignal()
    {
        internalEncodeLogHeader(buffer, 0, 88, 99, () -> 2_250_000_000L);
        final RecordingSignalEventEncoder encoder = new RecordingSignalEventEncoder();
        encoder.wrapAndApplyHeader(buffer, LOG_HEADER_LENGTH, headerEncoder)
            .controlSessionId(49)
            .correlationId(-100)
            .recordingId(42)
            .subscriptionId(15)
            .position(234723197419023749L)
            .signal(RecordingSignal.DELETE);

        dissectRecordingSignal(buffer, 0, builder);

        assertEquals("[2.250000000] " + CONTEXT + ": " + RECORDING_SIGNAL.name() + " [88/99]: " +
            "controlSessionId=49" +
            " correlationId=-100" +
            " recordingId=42" +
            " subscriptionId=15" +
            " position=234723197419023749" +
            " signal=DELETE",
            builder.toString());
    }