Copy disabled (too large)
Download .txt
Showing preview only (16,660K chars total). Download the full file to get everything.
Repository: aeron-io/aeron
Branch: master
Commit: a7126b639742
Files: 1592
Total size: 15.5 MB
Directory structure:
gitextract_dqzhhjkk/
├── .gitattributes
├── .github/
│ ├── codeql/
│ │ └── codeql-config.yml
│ └── workflows/
│ ├── ci-low-cadence.yml
│ ├── ci.yml
│ ├── codeql.yml
│ └── release.yml
├── .gitignore
├── CHANGELOG.adoc
├── CMakeLists.txt
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── aeron-agent/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── io/
│ │ │ └── aeron/
│ │ │ └── agent/
│ │ │ ├── ArchiveComponentLogger.java
│ │ │ ├── ArchiveEventCode.java
│ │ │ ├── ArchiveEventDissector.java
│ │ │ ├── ArchiveEventEncoder.java
│ │ │ ├── ArchiveEventLogger.java
│ │ │ ├── ArchiveInterceptor.java
│ │ │ ├── ChannelEndpointInterceptor.java
│ │ │ ├── CleanupInterceptor.java
│ │ │ ├── ClusterComponentLogger.java
│ │ │ ├── ClusterEventCode.java
│ │ │ ├── ClusterEventDissector.java
│ │ │ ├── ClusterEventEncoder.java
│ │ │ ├── ClusterEventLogger.java
│ │ │ ├── ClusterInterceptor.java
│ │ │ ├── CmdInterceptor.java
│ │ │ ├── CollectingEventLogReaderAgent.java
│ │ │ ├── CollectingEventLogReaderAgentMBean.java
│ │ │ ├── CommonEventDissector.java
│ │ │ ├── CommonEventEncoder.java
│ │ │ ├── ComponentLogger.java
│ │ │ ├── ConfigOption.java
│ │ │ ├── ControlInterceptor.java
│ │ │ ├── DissectFunction.java
│ │ │ ├── DriverComponentLogger.java
│ │ │ ├── DriverEventCode.java
│ │ │ ├── DriverEventDissector.java
│ │ │ ├── DriverEventEncoder.java
│ │ │ ├── DriverEventLogger.java
│ │ │ ├── DriverInterceptor.java
│ │ │ ├── DynamicLoggingAgent.java
│ │ │ ├── EventCode.java
│ │ │ ├── EventCodeType.java
│ │ │ ├── EventConfiguration.java
│ │ │ ├── EventLogAgent.java
│ │ │ ├── EventLogReaderAgent.java
│ │ │ ├── LogUtil.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── io.aeron.agent.ComponentLogger
│ └── test/
│ └── java/
│ └── io/
│ └── aeron/
│ └── agent/
│ ├── AgentTests.java
│ ├── ArchiveEventCodeTest.java
│ ├── ArchiveEventDissectorTest.java
│ ├── ArchiveEventEncoderTest.java
│ ├── ArchiveEventLoggerTest.java
│ ├── ArchiveLoggingAgentTest.java
│ ├── ClusterEventCodeTest.java
│ ├── ClusterEventDissectorTest.java
│ ├── ClusterEventEncoderTest.java
│ ├── ClusterEventLoggerTest.java
│ ├── ClusterLoggingAgentTest.java
│ ├── CommonEventDissectorTest.java
│ ├── CommonEventEncoderTest.java
│ ├── ConfigOptionTest.java
│ ├── DriverEventCodeTest.java
│ ├── DriverEventDissectorTest.java
│ ├── DriverEventEncoderTest.java
│ ├── DriverEventLoggerTest.java
│ ├── DriverLoggingAgentTest.java
│ ├── EventConfigurationTest.java
│ ├── EventLogReaderAgentTest.java
│ └── LogUtilTest.java
├── aeron-all/
│ └── README.md
├── aeron-annotations/
│ └── src/
│ └── main/
│ ├── java/
│ │ └── io/
│ │ └── aeron/
│ │ ├── api/
│ │ │ └── InternalApi.java
│ │ ├── config/
│ │ │ ├── Config.java
│ │ │ ├── ConfigInfo.java
│ │ │ ├── ConfigProcessor.java
│ │ │ ├── DefaultType.java
│ │ │ ├── ExpectedCConfig.java
│ │ │ ├── ExpectedConfig.java
│ │ │ ├── docgen/
│ │ │ │ ├── ConfigDocGenerator.java
│ │ │ │ └── GenerateConfigDocTask.java
│ │ │ └── validation/
│ │ │ ├── Entry.java
│ │ │ ├── ValidateConfigExpectationsTask.java
│ │ │ ├── Validation.java
│ │ │ ├── ValidationReport.java
│ │ │ └── Validator.java
│ │ ├── counter/
│ │ │ ├── AeronCounter.java
│ │ │ ├── CounterInfo.java
│ │ │ ├── CounterProcessor.java
│ │ │ └── validation/
│ │ │ ├── ValidateCounterExpectationsTask.java
│ │ │ ├── Validation.java
│ │ │ ├── ValidationReport.java
│ │ │ └── Validator.java
│ │ ├── utility/
│ │ │ ├── ElementIO.java
│ │ │ └── Processor.java
│ │ ├── validation/
│ │ │ └── Grep.java
│ │ └── version/
│ │ ├── Version.java
│ │ ├── VersionProcessor.java
│ │ └── Versioned.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── javax.annotation.processing.Processor
├── aeron-archive/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ ├── c/
│ │ │ ├── CMakeLists.txt
│ │ │ └── client/
│ │ │ ├── README.md
│ │ │ ├── aeron_archive.h
│ │ │ ├── aeron_archive_async_connect.c
│ │ │ ├── aeron_archive_async_connect.h
│ │ │ ├── aeron_archive_client.c
│ │ │ ├── aeron_archive_client.h
│ │ │ ├── aeron_archive_client_version.c
│ │ │ ├── aeron_archive_client_version.h
│ │ │ ├── aeron_archive_configuration.c
│ │ │ ├── aeron_archive_configuration.h
│ │ │ ├── aeron_archive_context.c
│ │ │ ├── aeron_archive_context.h
│ │ │ ├── aeron_archive_control_response_poller.c
│ │ │ ├── aeron_archive_control_response_poller.h
│ │ │ ├── aeron_archive_credentials_supplier.c
│ │ │ ├── aeron_archive_credentials_supplier.h
│ │ │ ├── aeron_archive_proxy.c
│ │ │ ├── aeron_archive_proxy.h
│ │ │ ├── aeron_archive_recording_descriptor_poller.c
│ │ │ ├── aeron_archive_recording_descriptor_poller.h
│ │ │ ├── aeron_archive_recording_pos.c
│ │ │ ├── aeron_archive_recording_signal.c
│ │ │ ├── aeron_archive_recording_signal.h
│ │ │ ├── aeron_archive_recording_subscription_descriptor_poller.c
│ │ │ ├── aeron_archive_recording_subscription_descriptor_poller.h
│ │ │ ├── aeron_archive_replay_merge.c
│ │ │ ├── aeron_archive_replay_params.c
│ │ │ ├── aeron_archive_replay_params.h
│ │ │ └── aeron_archive_replication_params.c
│ │ ├── cpp_wrapper/
│ │ │ ├── CMakeLists.txt
│ │ │ └── client/
│ │ │ ├── archive/
│ │ │ │ ├── AeronArchive.h
│ │ │ │ ├── ArchiveContext.h
│ │ │ │ ├── CredentialsSupplier.h
│ │ │ │ ├── RecordingPos.h
│ │ │ │ ├── ReplayMerge.h
│ │ │ │ ├── ReplayParams.h
│ │ │ │ └── ReplicationParams.h
│ │ │ └── util/
│ │ │ └── ArchiveExceptions.h
│ │ ├── java/
│ │ │ └── io/
│ │ │ └── aeron/
│ │ │ └── archive/
│ │ │ ├── AbstractListRecordingsSession.java
│ │ │ ├── Archive.java
│ │ │ ├── ArchiveConductor.java
│ │ │ ├── ArchiveCounters.java
│ │ │ ├── ArchiveMarkFile.java
│ │ │ ├── ArchiveMigrationPlanner.java
│ │ │ ├── ArchiveMigrationStep.java
│ │ │ ├── ArchiveMigration_0_1.java
│ │ │ ├── ArchiveMigration_1_2.java
│ │ │ ├── ArchiveMigration_2_3.java
│ │ │ ├── ArchiveThreadingMode.java
│ │ │ ├── ArchiveTool.java
│ │ │ ├── ArchivingMediaDriver.java
│ │ │ ├── Catalog.java
│ │ │ ├── CatalogIndex.java
│ │ │ ├── CatalogTool.java
│ │ │ ├── CatalogView.java
│ │ │ ├── ControlRequestDecoders.java
│ │ │ ├── ControlResponseProxy.java
│ │ │ ├── ControlSession.java
│ │ │ ├── ControlSessionAdapter.java
│ │ │ ├── ControlSessionCounter.java
│ │ │ ├── ControlSessionProxy.java
│ │ │ ├── CreateReplayPublicationSession.java
│ │ │ ├── DedicatedModeArchiveConductor.java
│ │ │ ├── DeleteSegmentsSession.java
│ │ │ ├── ListRecordingByIdSession.java
│ │ │ ├── ListRecordingSubscriptionsSession.java
│ │ │ ├── ListRecordingsForUriSession.java
│ │ │ ├── ListRecordingsSession.java
│ │ │ ├── MigrationUtils.java
│ │ │ ├── RecordingEventsProxy.java
│ │ │ ├── RecordingReader.java
│ │ │ ├── RecordingSession.java
│ │ │ ├── RecordingSummary.java
│ │ │ ├── RecordingWriter.java
│ │ │ ├── ReplaySession.java
│ │ │ ├── ReplicationCredentialsSupplier.java
│ │ │ ├── ReplicationSession.java
│ │ │ ├── Session.java
│ │ │ ├── SessionWorker.java
│ │ │ ├── SharedModeArchiveConductor.java
│ │ │ ├── SimpleFragmentHandler.java
│ │ │ ├── UpdateChannelSession.java
│ │ │ ├── checksum/
│ │ │ │ ├── Checksum.java
│ │ │ │ ├── Checksums.java
│ │ │ │ └── package-info.java
│ │ │ ├── client/
│ │ │ │ ├── AeronArchive.java
│ │ │ │ ├── ArchiveEvent.java
│ │ │ │ ├── ArchiveException.java
│ │ │ │ ├── ArchiveProxy.java
│ │ │ │ ├── ControlEventListener.java
│ │ │ │ ├── ControlResponseAdapter.java
│ │ │ │ ├── ControlResponseListener.java
│ │ │ │ ├── ControlResponsePoller.java
│ │ │ │ ├── RecordingDescriptorConsumer.java
│ │ │ │ ├── RecordingDescriptorPoller.java
│ │ │ │ ├── RecordingEventsAdapter.java
│ │ │ │ ├── RecordingEventsListener.java
│ │ │ │ ├── RecordingEventsPoller.java
│ │ │ │ ├── RecordingSignalAdapter.java
│ │ │ │ ├── RecordingSignalConsumer.java
│ │ │ │ ├── RecordingSignalPoller.java
│ │ │ │ ├── RecordingSubscriptionDescriptorConsumer.java
│ │ │ │ ├── RecordingSubscriptionDescriptorPoller.java
│ │ │ │ ├── ReplayMerge.java
│ │ │ │ ├── ReplayParams.java
│ │ │ │ ├── ReplicationParams.java
│ │ │ │ └── package-info.java
│ │ │ ├── package-info.java
│ │ │ └── status/
│ │ │ ├── RecordingPos.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── archive/
│ │ ├── aeron-archive-codecs.xml
│ │ ├── aeron-archive-mark-codecs.xml
│ │ └── fpl/
│ │ └── sbe.xsd
│ └── test/
│ ├── c/
│ │ ├── CMakeLists.txt
│ │ ├── TestArchive.h
│ │ └── client/
│ │ └── aeron_archive_test.cpp
│ ├── cpp_wrapper/
│ │ ├── AeronArchiveWrapperTest.cpp
│ │ ├── CMakeLists.txt
│ │ └── TestArchive.h
│ └── java/
│ └── io/
│ └── aeron/
│ └── archive/
│ ├── ArchiveConductorTest.java
│ ├── ArchiveContextTest.java
│ ├── ArchiveCountersTest.java
│ ├── ArchiveMarkFileTest.java
│ ├── ArchiveMigrationUtils.java
│ ├── ArchiveMigration_2_3Test.java
│ ├── ArchiveTest.java
│ ├── ArchiveTests.java
│ ├── ArchiveToolCliTest.java
│ ├── ArchiveToolSeparateMarkFileTest.java
│ ├── ArchiveToolTests.java
│ ├── CatalogIndexTest.java
│ ├── CatalogTest.java
│ ├── CatalogViewTest.java
│ ├── ControlSessionAdapterTest.java
│ ├── ControlSessionAdapterV6Test.java
│ ├── ControlSessionTest.java
│ ├── DeleteSegmentsSessionTest.java
│ ├── FailControlResponseListener.java
│ ├── FailRecordingEventsListener.java
│ ├── ListRecordingByIdSessionTest.java
│ ├── ListRecordingsForUriSessionTest.java
│ ├── ListRecordingsSessionTest.java
│ ├── RecordingSessionTest.java
│ ├── RecordingWriterTest.java
│ ├── ReplaySessionTest.java
│ ├── checksum/
│ │ └── ChecksumsTest.java
│ ├── client/
│ │ ├── AeronArchiveTest.java
│ │ └── ArchiveExceptionTest.java
│ └── status/
│ └── RecordingPosTest.java
├── aeron-client/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ ├── c/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── aeron_agent.c
│ │ │ ├── aeron_agent.h
│ │ │ ├── aeron_alloc.c
│ │ │ ├── aeron_alloc.h
│ │ │ ├── aeron_client.c
│ │ │ ├── aeron_client.h
│ │ │ ├── aeron_client_conductor.c
│ │ │ ├── aeron_client_conductor.h
│ │ │ ├── aeron_cnc.c
│ │ │ ├── aeron_cnc_file_descriptor.c
│ │ │ ├── aeron_cnc_file_descriptor.h
│ │ │ ├── aeron_common.h
│ │ │ ├── aeron_context.c
│ │ │ ├── aeron_context.h
│ │ │ ├── aeron_counter.c
│ │ │ ├── aeron_counter.h
│ │ │ ├── aeron_counters.h
│ │ │ ├── aeron_exclusive_publication.c
│ │ │ ├── aeron_exclusive_publication.h
│ │ │ ├── aeron_fragment_assembler.c
│ │ │ ├── aeron_fragment_assembler.h
│ │ │ ├── aeron_image.c
│ │ │ ├── aeron_image.h
│ │ │ ├── aeron_log_buffer.c
│ │ │ ├── aeron_log_buffer.h
│ │ │ ├── aeron_publication.c
│ │ │ ├── aeron_publication.h
│ │ │ ├── aeron_socket.c
│ │ │ ├── aeron_socket.h
│ │ │ ├── aeron_subscription.c
│ │ │ ├── aeron_subscription.h
│ │ │ ├── aeron_version.c
│ │ │ ├── aeron_windows.c
│ │ │ ├── aeron_windows.h
│ │ │ ├── aeronc.c
│ │ │ ├── aeronc.h
│ │ │ ├── collections/
│ │ │ │ ├── aeron_array_to_ptr_hash_map.c
│ │ │ │ ├── aeron_array_to_ptr_hash_map.h
│ │ │ │ ├── aeron_bit_set.c
│ │ │ │ ├── aeron_bit_set.h
│ │ │ │ ├── aeron_hashing.c
│ │ │ │ ├── aeron_hashing.h
│ │ │ │ ├── aeron_int64_counter_map.c
│ │ │ │ ├── aeron_int64_counter_map.h
│ │ │ │ ├── aeron_int64_to_ptr_hash_map.c
│ │ │ │ ├── aeron_int64_to_ptr_hash_map.h
│ │ │ │ ├── aeron_int64_to_tagged_ptr_hash_map.c
│ │ │ │ ├── aeron_int64_to_tagged_ptr_hash_map.h
│ │ │ │ ├── aeron_linked_queue.c
│ │ │ │ ├── aeron_linked_queue.h
│ │ │ │ ├── aeron_map.c
│ │ │ │ ├── aeron_map.h
│ │ │ │ ├── aeron_str_to_ptr_hash_map.c
│ │ │ │ └── aeron_str_to_ptr_hash_map.h
│ │ │ ├── command/
│ │ │ │ └── aeron_control_protocol.h
│ │ │ ├── concurrent/
│ │ │ │ ├── aeron_atomic.c
│ │ │ │ ├── aeron_atomic.h
│ │ │ │ ├── aeron_atomic64_c11.h
│ │ │ │ ├── aeron_atomic64_gcc_x86_64.h
│ │ │ │ ├── aeron_atomic64_msvc.h
│ │ │ │ ├── aeron_blocking_linked_queue.c
│ │ │ │ ├── aeron_blocking_linked_queue.h
│ │ │ │ ├── aeron_broadcast_descriptor.h
│ │ │ │ ├── aeron_broadcast_receiver.c
│ │ │ │ ├── aeron_broadcast_receiver.h
│ │ │ │ ├── aeron_broadcast_transmitter.c
│ │ │ │ ├── aeron_broadcast_transmitter.h
│ │ │ │ ├── aeron_concurrent_array_queue.h
│ │ │ │ ├── aeron_counters_manager.c
│ │ │ │ ├── aeron_counters_manager.h
│ │ │ │ ├── aeron_distinct_error_log.c
│ │ │ │ ├── aeron_distinct_error_log.h
│ │ │ │ ├── aeron_executor.c
│ │ │ │ ├── aeron_executor.h
│ │ │ │ ├── aeron_logbuffer_descriptor.c
│ │ │ │ ├── aeron_logbuffer_descriptor.h
│ │ │ │ ├── aeron_mpsc_concurrent_array_queue.c
│ │ │ │ ├── aeron_mpsc_concurrent_array_queue.h
│ │ │ │ ├── aeron_mpsc_rb.c
│ │ │ │ ├── aeron_mpsc_rb.h
│ │ │ │ ├── aeron_rb.h
│ │ │ │ ├── aeron_spsc_concurrent_array_queue.c
│ │ │ │ ├── aeron_spsc_concurrent_array_queue.h
│ │ │ │ ├── aeron_spsc_rb.c
│ │ │ │ ├── aeron_spsc_rb.h
│ │ │ │ ├── aeron_term_gap_filler.c
│ │ │ │ ├── aeron_term_gap_filler.h
│ │ │ │ ├── aeron_term_gap_scanner.c
│ │ │ │ ├── aeron_term_gap_scanner.h
│ │ │ │ ├── aeron_term_rebuilder.c
│ │ │ │ ├── aeron_term_rebuilder.h
│ │ │ │ ├── aeron_term_scanner.c
│ │ │ │ ├── aeron_term_scanner.h
│ │ │ │ ├── aeron_term_unblocker.c
│ │ │ │ ├── aeron_term_unblocker.h
│ │ │ │ ├── aeron_thread.c
│ │ │ │ └── aeron_thread.h
│ │ │ ├── protocol/
│ │ │ │ ├── aeron_udp_protocol.c
│ │ │ │ └── aeron_udp_protocol.h
│ │ │ ├── reports/
│ │ │ │ ├── aeron_loss_reporter.c
│ │ │ │ └── aeron_loss_reporter.h
│ │ │ ├── status/
│ │ │ │ ├── aeron_local_sockaddr.c
│ │ │ │ └── aeron_local_sockaddr.h
│ │ │ ├── uri/
│ │ │ │ ├── aeron_uri.c
│ │ │ │ ├── aeron_uri.h
│ │ │ │ ├── aeron_uri_string_builder.c
│ │ │ │ └── aeron_uri_string_builder.h
│ │ │ └── util/
│ │ │ ├── aeron_arrayutil.c
│ │ │ ├── aeron_arrayutil.h
│ │ │ ├── aeron_bitutil.c
│ │ │ ├── aeron_bitutil.h
│ │ │ ├── aeron_clock.c
│ │ │ ├── aeron_clock.h
│ │ │ ├── aeron_deque.c
│ │ │ ├── aeron_deque.h
│ │ │ ├── aeron_dlopen.c
│ │ │ ├── aeron_dlopen.h
│ │ │ ├── aeron_env.c
│ │ │ ├── aeron_env.h
│ │ │ ├── aeron_error.c
│ │ │ ├── aeron_error.h
│ │ │ ├── aeron_fileutil.c
│ │ │ ├── aeron_fileutil.h
│ │ │ ├── aeron_http_util.c
│ │ │ ├── aeron_http_util.h
│ │ │ ├── aeron_math.c
│ │ │ ├── aeron_math.h
│ │ │ ├── aeron_netutil.c
│ │ │ ├── aeron_netutil.h
│ │ │ ├── aeron_parse_util.c
│ │ │ ├── aeron_parse_util.h
│ │ │ ├── aeron_platform.h
│ │ │ ├── aeron_properties_util.c
│ │ │ ├── aeron_properties_util.h
│ │ │ ├── aeron_strutil.c
│ │ │ ├── aeron_strutil.h
│ │ │ ├── aeron_symbol_table.c
│ │ │ └── aeron_symbol_table.h
│ │ ├── cpp_wrapper/
│ │ │ ├── Aeron.h
│ │ │ ├── AeronCounters.h
│ │ │ ├── BufferBuilder.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChannelUri.h
│ │ │ ├── ChannelUriStringBuilder.h
│ │ │ ├── ClientConductor.h
│ │ │ ├── CncFileDescriptor.h
│ │ │ ├── CncFileReader.h
│ │ │ ├── Context.h
│ │ │ ├── ControlledFragmentAssembler.h
│ │ │ ├── Counter.h
│ │ │ ├── ExclusivePublication.h
│ │ │ ├── FragmentAssembler.h
│ │ │ ├── HeartbeatTimestamp.h
│ │ │ ├── Image.h
│ │ │ ├── ImageControlledFragmentAssembler.h
│ │ │ ├── ImageFragmentAssembler.h
│ │ │ ├── Publication.h
│ │ │ ├── Subscription.h
│ │ │ ├── concurrent/
│ │ │ │ ├── AgentInvoker.h
│ │ │ │ ├── AgentRunner.h
│ │ │ │ ├── Atomic64.h
│ │ │ │ ├── AtomicBuffer.h
│ │ │ │ ├── AtomicCounter.h
│ │ │ │ ├── BackOffIdleStrategy.h
│ │ │ │ ├── BusySpinIdleStrategy.h
│ │ │ │ ├── CountersReader.h
│ │ │ │ ├── NoOpIdleStrategy.h
│ │ │ │ ├── SleepingIdleStrategy.h
│ │ │ │ ├── YieldingIdleStrategy.h
│ │ │ │ ├── atomic/
│ │ │ │ │ ├── Atomic64_gcc_cpp11.h
│ │ │ │ │ ├── Atomic64_gcc_x86_64.h
│ │ │ │ │ └── Atomic64_msvc.h
│ │ │ │ ├── errors/
│ │ │ │ │ ├── ErrorLogDescriptor.h
│ │ │ │ │ └── ErrorLogReader.h
│ │ │ │ ├── logbuffer/
│ │ │ │ │ ├── BufferClaim.h
│ │ │ │ │ ├── DataFrameHeader.h
│ │ │ │ │ ├── FrameDescriptor.h
│ │ │ │ │ ├── Header.h
│ │ │ │ │ ├── LogBufferDescriptor.h
│ │ │ │ │ └── TermReader.h
│ │ │ │ └── status/
│ │ │ │ ├── Position.h
│ │ │ │ ├── ReadablePosition.h
│ │ │ │ ├── StatusIndicatorReader.h
│ │ │ │ └── UnsafeBufferPosition.h
│ │ │ ├── status/
│ │ │ │ └── PublicationErrorFrame.h
│ │ │ └── util/
│ │ │ ├── BitUtil.h
│ │ │ ├── CommandOption.h
│ │ │ ├── CommandOptionParser.h
│ │ │ ├── Exceptions.h
│ │ │ ├── Index.h
│ │ │ ├── LangUtil.h
│ │ │ ├── MacroUtil.h
│ │ │ ├── MemoryMappedFile.h
│ │ │ ├── Platform.h
│ │ │ ├── ScopeUtils.h
│ │ │ └── StringUtil.h
│ │ └── java/
│ │ └── io/
│ │ └── aeron/
│ │ ├── Aeron.java
│ │ ├── AeronCounters.java
│ │ ├── AvailableCounterHandler.java
│ │ ├── AvailableImageHandler.java
│ │ ├── BufferBuilder.java
│ │ ├── ChannelUri.java
│ │ ├── ChannelUriStringBuilder.java
│ │ ├── ClientConductor.java
│ │ ├── CncFileDescriptor.java
│ │ ├── CommonContext.java
│ │ ├── ConcurrentPublication.java
│ │ ├── ControlledFragmentAssembler.java
│ │ ├── Counter.java
│ │ ├── CounterProvider.java
│ │ ├── DirectBufferVector.java
│ │ ├── DriverEventsAdapter.java
│ │ ├── DriverProxy.java
│ │ ├── ErrorCode.java
│ │ ├── ExclusivePublication.java
│ │ ├── FragmentAssembler.java
│ │ ├── Image.java
│ │ ├── ImageControlledFragmentAssembler.java
│ │ ├── ImageFragmentAssembler.java
│ │ ├── LogBuffers.java
│ │ ├── LogBuffersFactory.java
│ │ ├── MappedLogBuffersFactory.java
│ │ ├── Publication.java
│ │ ├── PublicationErrorFrameHandler.java
│ │ ├── ReservedValueSupplier.java
│ │ ├── RethrowingErrorHandler.java
│ │ ├── Subscription.java
│ │ ├── UnavailableCounterHandler.java
│ │ ├── UnavailableImageHandler.java
│ │ ├── command/
│ │ │ ├── ClientTimeoutFlyweight.java
│ │ │ ├── ControlProtocolEvents.java
│ │ │ ├── CorrelatedMessageFlyweight.java
│ │ │ ├── CounterMessageFlyweight.java
│ │ │ ├── CounterUpdateFlyweight.java
│ │ │ ├── DestinationByIdMessageFlyweight.java
│ │ │ ├── DestinationMessageFlyweight.java
│ │ │ ├── ErrorResponseFlyweight.java
│ │ │ ├── GetNextAvailableSessionIdMessageFlyweight.java
│ │ │ ├── ImageBuffersReadyFlyweight.java
│ │ │ ├── ImageMessageFlyweight.java
│ │ │ ├── NextAvailableSessionIdFlyweight.java
│ │ │ ├── OperationSucceededFlyweight.java
│ │ │ ├── PublicationBuffersReadyFlyweight.java
│ │ │ ├── PublicationErrorFrameFlyweight.java
│ │ │ ├── PublicationMessageFlyweight.java
│ │ │ ├── RejectImageFlyweight.java
│ │ │ ├── RemoveCounterFlyweight.java
│ │ │ ├── RemoveMessageFlyweight.java
│ │ │ ├── RemovePublicationFlyweight.java
│ │ │ ├── RemoveSubscriptionFlyweight.java
│ │ │ ├── StaticCounterFlyweight.java
│ │ │ ├── StaticCounterMessageFlyweight.java
│ │ │ ├── SubscriptionMessageFlyweight.java
│ │ │ ├── SubscriptionReadyFlyweight.java
│ │ │ ├── TerminateDriverFlyweight.java
│ │ │ └── package-info.java
│ │ ├── exceptions/
│ │ │ ├── AeronEvent.java
│ │ │ ├── AeronException.java
│ │ │ ├── ChannelEndpointException.java
│ │ │ ├── ClientTimeoutException.java
│ │ │ ├── ConcurrentConcludeException.java
│ │ │ ├── ConductorServiceTimeoutException.java
│ │ │ ├── ConfigurationException.java
│ │ │ ├── ControlProtocolException.java
│ │ │ ├── DriverTimeoutException.java
│ │ │ ├── RegistrationException.java
│ │ │ ├── StorageSpaceException.java
│ │ │ ├── TimeoutException.java
│ │ │ └── package-info.java
│ │ ├── logbuffer/
│ │ │ ├── BlockHandler.java
│ │ │ ├── BufferClaim.java
│ │ │ ├── ControlledFragmentHandler.java
│ │ │ ├── FragmentHandler.java
│ │ │ ├── FrameDescriptor.java
│ │ │ ├── Header.java
│ │ │ ├── HeaderWriter.java
│ │ │ ├── LogBufferDescriptor.java
│ │ │ ├── LogBufferUnblocker.java
│ │ │ ├── RawBlockHandler.java
│ │ │ ├── TermBlockScanner.java
│ │ │ ├── TermGapFiller.java
│ │ │ ├── TermGapScanner.java
│ │ │ ├── TermReader.java
│ │ │ ├── TermRebuilder.java
│ │ │ ├── TermScanner.java
│ │ │ ├── TermUnblocker.java
│ │ │ └── package-info.java
│ │ ├── package-info.java
│ │ ├── protocol/
│ │ │ ├── DataHeaderFlyweight.java
│ │ │ ├── ErrorFlyweight.java
│ │ │ ├── HeaderFlyweight.java
│ │ │ ├── NakFlyweight.java
│ │ │ ├── ResolutionEntryFlyweight.java
│ │ │ ├── ResponseSetupFlyweight.java
│ │ │ ├── RttMeasurementFlyweight.java
│ │ │ ├── SetupFlyweight.java
│ │ │ ├── StatusMessageFlyweight.java
│ │ │ └── package-info.java
│ │ ├── security/
│ │ │ ├── AuthenticationException.java
│ │ │ ├── Authenticator.java
│ │ │ ├── AuthenticatorSupplier.java
│ │ │ ├── AuthorisationService.java
│ │ │ ├── AuthorisationServiceSupplier.java
│ │ │ ├── CredentialsSupplier.java
│ │ │ ├── DefaultAuthenticatorSupplier.java
│ │ │ ├── NullCredentialsSupplier.java
│ │ │ ├── SessionProxy.java
│ │ │ ├── SimpleAuthenticator.java
│ │ │ ├── SimpleAuthorisationService.java
│ │ │ └── package-info.java
│ │ └── status/
│ │ ├── ChannelEndpointStatus.java
│ │ ├── HeartbeatTimestamp.java
│ │ ├── LocalSocketAddressStatus.java
│ │ ├── PublicationErrorFrame.java
│ │ ├── ReadableCounter.java
│ │ └── package-info.java
│ └── test/
│ ├── c/
│ │ ├── CMakeLists.txt
│ │ ├── aeron_alloc_test.cpp
│ │ ├── aeron_client_conductor_test.cpp
│ │ ├── aeron_client_test_utils.h
│ │ ├── aeron_controlled_fragment_assembler_test.cpp
│ │ ├── aeron_controlled_image_fragment_assembler_test.cpp
│ │ ├── aeron_exclusive_publication_test.cpp
│ │ ├── aeron_fragment_assembler_test.cpp
│ │ ├── aeron_image_fragment_assembler_test.cpp
│ │ ├── aeron_image_test.cpp
│ │ ├── aeron_publication_test.cpp
│ │ ├── aeron_subscription_test.cpp
│ │ ├── aeron_uri_test.cpp
│ │ ├── aeron_version_test.cpp
│ │ ├── collections/
│ │ │ ├── aeron_array_to_ptr_hash_map_test.cpp
│ │ │ ├── aeron_bit_set_test.cpp
│ │ │ ├── aeron_int64_counter_map_test.cpp
│ │ │ ├── aeron_int64_to_ptr_hash_map_test.cpp
│ │ │ ├── aeron_int64_to_tagged_ptr_hash_map_test.cpp
│ │ │ ├── aeron_linked_queue_test.cpp
│ │ │ └── aeron_str_to_ptr_hash_map_test.cpp
│ │ ├── concurrent/
│ │ │ ├── aeron_atomic_test.cpp
│ │ │ ├── aeron_blocking_linked_queue_test.cpp
│ │ │ ├── aeron_broadcast_receiver_test.cpp
│ │ │ ├── aeron_broadcast_transmitter_test.cpp
│ │ │ ├── aeron_counters_test.cpp
│ │ │ ├── aeron_distinct_error_log_test.cpp
│ │ │ ├── aeron_executor_test.cpp
│ │ │ ├── aeron_mpsc_concurrent_array_queue_test.cpp
│ │ │ ├── aeron_mpsc_rb_test.cpp
│ │ │ ├── aeron_spsc_concurrent_array_queue_test.cpp
│ │ │ ├── aeron_spsc_rb_test.cpp
│ │ │ └── aeron_thread_test.cpp
│ │ └── util/
│ │ ├── aeron_bitutil_test.cpp
│ │ ├── aeron_deque_test.cpp
│ │ ├── aeron_error_test.cpp
│ │ ├── aeron_fileutil_test.cpp
│ │ ├── aeron_httputil_test.cpp
│ │ ├── aeron_math_test.cpp
│ │ ├── aeron_netutil_test.cpp
│ │ ├── aeron_strutil_test.cpp
│ │ └── aeron_symbol_table_test.cpp
│ ├── cpp_wrapper/
│ │ ├── CMakeLists.txt
│ │ ├── ChannelUriStringBuilderTest.cpp
│ │ ├── ControlledFragmentAssemblerTest.cpp
│ │ ├── ControlledFragmentAssemblerTestFixture.h
│ │ ├── CountersTest.cpp
│ │ ├── EmbeddedMediaDriver.h
│ │ ├── ExceptionsTest.cpp
│ │ ├── FragmentAssemblerTest.cpp
│ │ ├── FragmentAssemblerTestFixture.h
│ │ ├── ImageControlledFragmentAssemblerTest.cpp
│ │ ├── ImageControlledFragmentAssemblerTestFixture.h
│ │ ├── ImageFragmentAssemblerTest.cpp
│ │ ├── ImageFragmentAssemblerTestFixture.h
│ │ ├── ImageTest.cpp
│ │ ├── LivenessTimeoutTest.cpp
│ │ ├── LocalAddressesTest.cpp
│ │ ├── MultiDestinationByIdTest.cpp
│ │ ├── MultiDestinationTest.cpp
│ │ ├── PubSubTest.cpp
│ │ ├── PublicationRevokeTest.cpp
│ │ ├── RejectImageTest.cpp
│ │ ├── ResponseChannelsTest.cpp
│ │ ├── SystemTest.cpp
│ │ ├── TestUtil.h
│ │ └── WrapperSystemTest.cpp
│ └── java/
│ └── io/
│ └── aeron/
│ ├── AeronContextTest.java
│ ├── AeronCountersTest.java
│ ├── BufferBuilderTest.java
│ ├── ChannelUriStringBuilderTest.java
│ ├── ChannelUriTest.java
│ ├── ClientConductorTest.java
│ ├── CommonContextTest.java
│ ├── DriverProxyTest.java
│ ├── FlyweightTest.java
│ ├── FragmentAssemblerTest.java
│ ├── ImageTest.java
│ ├── LogBuffersTest.java
│ ├── PublicationTest.java
│ ├── SubscriptionTest.java
│ ├── TimestampUtilTest.java
│ ├── VerifyBuildTimePropertiesTest.java
│ ├── command/
│ │ ├── CounterMessageFlyweightTest.java
│ │ └── TerminateDriverFlyweightTest.java
│ ├── exceptions/
│ │ └── StorageSpaceExceptionTest.java
│ ├── logbuffer/
│ │ ├── HeaderTest.java
│ │ ├── HeaderWriterTest.java
│ │ ├── LogBufferDescriptorTest.java
│ │ ├── LogBufferUnblockerTest.java
│ │ ├── TermBlockScannerTest.java
│ │ ├── TermGapFillerTest.java
│ │ ├── TermGapScannerTest.java
│ │ ├── TermReaderTest.java
│ │ ├── TermRebuilderTest.java
│ │ ├── TermScannerTest.java
│ │ └── TermUnblockerTest.java
│ ├── protocol/
│ │ ├── ErrorFlyweightTest.java
│ │ └── HeaderFlyweightTest.java
│ └── security/
│ └── AuthorisationServiceTest.java
├── aeron-cluster/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── io/
│ │ │ └── aeron/
│ │ │ └── cluster/
│ │ │ ├── AllowBackupAndStandbyAuthorisationService.java
│ │ │ ├── AppVersionValidator.java
│ │ │ ├── ClusterBackup.java
│ │ │ ├── ClusterBackupAgent.java
│ │ │ ├── ClusterBackupEventsListener.java
│ │ │ ├── ClusterBackupMediaDriver.java
│ │ │ ├── ClusterClientSession.java
│ │ │ ├── ClusterControl.java
│ │ │ ├── ClusterControlAdapter.java
│ │ │ ├── ClusterMember.java
│ │ │ ├── ClusterMembership.java
│ │ │ ├── ClusterSession.java
│ │ │ ├── ClusterSessionProxy.java
│ │ │ ├── ClusterTermination.java
│ │ │ ├── ClusterTool.java
│ │ │ ├── ClusterToolCommand.java
│ │ │ ├── ClusterToolOperator.java
│ │ │ ├── ClusteredArchive.java
│ │ │ ├── ClusteredMediaDriver.java
│ │ │ ├── ConsensusAdapter.java
│ │ │ ├── ConsensusControlState.java
│ │ │ ├── ConsensusModule.java
│ │ │ ├── ConsensusModuleAdapter.java
│ │ │ ├── ConsensusModuleAgent.java
│ │ │ ├── ConsensusModuleControl.java
│ │ │ ├── ConsensusModuleExtension.java
│ │ │ ├── ConsensusModuleSnapshotAdapter.java
│ │ │ ├── ConsensusModuleSnapshotListener.java
│ │ │ ├── ConsensusModuleSnapshotPrinter.java
│ │ │ ├── ConsensusModuleSnapshotTaker.java
│ │ │ ├── ConsensusModuleStateExport.java
│ │ │ ├── ConsensusPublisher.java
│ │ │ ├── EgressPublisher.java
│ │ │ ├── Election.java
│ │ │ ├── ElectionState.java
│ │ │ ├── IngressAdapter.java
│ │ │ ├── LogAdapter.java
│ │ │ ├── LogPublisher.java
│ │ │ ├── LogReplay.java
│ │ │ ├── LogSourceValidator.java
│ │ │ ├── MillisecondClusterClock.java
│ │ │ ├── MultipleRecordingReplication.java
│ │ │ ├── NanosecondClusterClock.java
│ │ │ ├── NodeControl.java
│ │ │ ├── NodeStateFile.java
│ │ │ ├── PendingServiceMessageTracker.java
│ │ │ ├── PriorityHeapTimerService.java
│ │ │ ├── PriorityHeapTimerServiceSupplier.java
│ │ │ ├── PublicationGroup.java
│ │ │ ├── RecordingExtent.java
│ │ │ ├── RecordingLog.java
│ │ │ ├── RecordingReplication.java
│ │ │ ├── ServiceAck.java
│ │ │ ├── ServiceProxy.java
│ │ │ ├── SessionManager.java
│ │ │ ├── SnapshotReplication.java
│ │ │ ├── StandbySnapshotEntry.java
│ │ │ ├── StandbySnapshotReplicator.java
│ │ │ ├── TimerService.java
│ │ │ ├── TimerServiceSupplier.java
│ │ │ ├── ToggleApplication.java
│ │ │ ├── WheelTimerService.java
│ │ │ ├── WheelTimerServiceSupplier.java
│ │ │ ├── client/
│ │ │ │ ├── AeronCluster.java
│ │ │ │ ├── ClusterEvent.java
│ │ │ │ ├── ClusterException.java
│ │ │ │ ├── ControlledEgressAdapter.java
│ │ │ │ ├── ControlledEgressListener.java
│ │ │ │ ├── ControlledEgressListenerExtension.java
│ │ │ │ ├── EgressAdapter.java
│ │ │ │ ├── EgressListener.java
│ │ │ │ ├── EgressListenerExtension.java
│ │ │ │ ├── EgressPoller.java
│ │ │ │ ├── IngressSessionDecorator.java
│ │ │ │ └── package-info.java
│ │ │ ├── package-info.java
│ │ │ └── service/
│ │ │ ├── ActiveLogEvent.java
│ │ │ ├── BoundedLogAdapter.java
│ │ │ ├── ClientSession.java
│ │ │ ├── Cluster.java
│ │ │ ├── ClusterClock.java
│ │ │ ├── ClusterCounters.java
│ │ │ ├── ClusterMarkFile.java
│ │ │ ├── ClusterNodeControlProperties.java
│ │ │ ├── ClusterTerminationException.java
│ │ │ ├── ClusteredService.java
│ │ │ ├── ClusteredServiceAgent.java
│ │ │ ├── ClusteredServiceContainer.java
│ │ │ ├── ConsensusModuleProxy.java
│ │ │ ├── ContainerClientSession.java
│ │ │ ├── RecoveryState.java
│ │ │ ├── ServiceAdapter.java
│ │ │ ├── ServiceSnapshotLoader.java
│ │ │ ├── ServiceSnapshotTaker.java
│ │ │ ├── SnapshotDurationTracker.java
│ │ │ ├── SnapshotTaker.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── cluster/
│ │ ├── aeron-cluster-codecs.xml
│ │ ├── aeron-cluster-mark-codecs.xml
│ │ ├── aeron-cluster-node-state-codecs.xml
│ │ └── fpl/
│ │ └── sbe.xsd
│ └── test/
│ ├── java/
│ │ └── io/
│ │ └── aeron/
│ │ └── cluster/
│ │ ├── AuthenticationTest.java
│ │ ├── ClusterBackupAgentTest.java
│ │ ├── ClusterBackupContextTest.java
│ │ ├── ClusterMemberTest.java
│ │ ├── ClusterNodeRestartTest.java
│ │ ├── ClusterNodeTest.java
│ │ ├── ClusterTestConstants.java
│ │ ├── ClusterTimerTest.java
│ │ ├── ClusterWithNoServicesTest.java
│ │ ├── ConsensusModuleAgentTest.java
│ │ ├── ConsensusModuleConfigurationTest.java
│ │ ├── ConsensusModuleContextCloseTests.java
│ │ ├── ConsensusModuleContextTest.java
│ │ ├── ConsensusModuleSnapshotTakerTest.java
│ │ ├── ElectionTest.java
│ │ ├── IngressAdapterTest.java
│ │ ├── LogSourceValidatorTest.java
│ │ ├── NameResolutionClusterNodeTest.java
│ │ ├── NodeStateFileTest.java
│ │ ├── PendingServiceMessageTrackerTest.java
│ │ ├── PriorityHeapTimerServiceClusterTimeTest.java
│ │ ├── PriorityHeapTimerServiceTest.java
│ │ ├── PublicationGroupTest.java
│ │ ├── RecordingLogTest.java
│ │ ├── RecordingReplicationTest.java
│ │ ├── SessionEventCodecCompatibilityTest.java
│ │ ├── SessionManagerTest.java
│ │ ├── SnapshotReplicationTest.java
│ │ ├── StandbySnapshotReplicatorTest.java
│ │ ├── WheelTimerServiceClusterTimeTest.java
│ │ ├── client/
│ │ │ ├── AeronClusterAsyncConnectTest.java
│ │ │ ├── AeronClusterContextTest.java
│ │ │ ├── AeronClusterTest.java
│ │ │ ├── EgressAdapterTest.java
│ │ │ └── EgressPollerTest.java
│ │ └── service/
│ │ ├── ClusterMarkFileTest.java
│ │ ├── ClusteredServiceAgentTest.java
│ │ ├── ClusteredServiceContainerContextTest.java
│ │ └── ServiceSnapshotTakerTest.java
│ └── resources/
│ └── aeron-cluster-mark-codecs-v0.xml
├── aeron-config.cmake.in
├── aeron-driver/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ ├── c/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── aeron_congestion_control.c
│ │ │ ├── aeron_congestion_control.h
│ │ │ ├── aeron_csv_table_name_resolver.c
│ │ │ ├── aeron_csv_table_name_resolver.h
│ │ │ ├── aeron_data_packet_dispatcher.c
│ │ │ ├── aeron_data_packet_dispatcher.h
│ │ │ ├── aeron_driver.c
│ │ │ ├── aeron_driver.h
│ │ │ ├── aeron_driver_common.h
│ │ │ ├── aeron_driver_conductor.c
│ │ │ ├── aeron_driver_conductor.h
│ │ │ ├── aeron_driver_conductor_proxy.c
│ │ │ ├── aeron_driver_conductor_proxy.h
│ │ │ ├── aeron_driver_context.c
│ │ │ ├── aeron_driver_context.h
│ │ │ ├── aeron_driver_name_resolver.c
│ │ │ ├── aeron_driver_name_resolver.h
│ │ │ ├── aeron_driver_receiver.c
│ │ │ ├── aeron_driver_receiver.h
│ │ │ ├── aeron_driver_receiver_proxy.c
│ │ │ ├── aeron_driver_receiver_proxy.h
│ │ │ ├── aeron_driver_sender.c
│ │ │ ├── aeron_driver_sender.h
│ │ │ ├── aeron_driver_sender_proxy.c
│ │ │ ├── aeron_driver_sender_proxy.h
│ │ │ ├── aeron_driver_version.c
│ │ │ ├── aeron_driver_version.h
│ │ │ ├── aeron_duty_cycle_tracker.h
│ │ │ ├── aeron_flow_control.c
│ │ │ ├── aeron_flow_control.h
│ │ │ ├── aeron_ipc_publication.c
│ │ │ ├── aeron_ipc_publication.h
│ │ │ ├── aeron_loss_detector.c
│ │ │ ├── aeron_loss_detector.h
│ │ │ ├── aeron_min_flow_control.c
│ │ │ ├── aeron_name_resolver.c
│ │ │ ├── aeron_name_resolver.h
│ │ │ ├── aeron_name_resolver_cache.c
│ │ │ ├── aeron_name_resolver_cache.h
│ │ │ ├── aeron_network_publication.c
│ │ │ ├── aeron_network_publication.h
│ │ │ ├── aeron_port_manager.c
│ │ │ ├── aeron_port_manager.h
│ │ │ ├── aeron_position.c
│ │ │ ├── aeron_position.h
│ │ │ ├── aeron_publication_image.c
│ │ │ ├── aeron_publication_image.h
│ │ │ ├── aeron_retransmit_handler.c
│ │ │ ├── aeron_retransmit_handler.h
│ │ │ ├── aeron_system_counters.c
│ │ │ ├── aeron_system_counters.h
│ │ │ ├── aeron_termination_validator.c
│ │ │ ├── aeron_termination_validator.h
│ │ │ ├── aeronmd.c
│ │ │ ├── aeronmd.h
│ │ │ ├── agent/
│ │ │ │ ├── aeron_driver_agent.c
│ │ │ │ └── aeron_driver_agent.h
│ │ │ ├── concurrent/
│ │ │ │ ├── aeron_logbuffer_unblocker.c
│ │ │ │ └── aeron_logbuffer_unblocker.h
│ │ │ ├── media/
│ │ │ │ ├── aeron_receive_channel_endpoint.c
│ │ │ │ ├── aeron_receive_channel_endpoint.h
│ │ │ │ ├── aeron_receive_destination.c
│ │ │ │ ├── aeron_receive_destination.h
│ │ │ │ ├── aeron_send_channel_endpoint.c
│ │ │ │ ├── aeron_send_channel_endpoint.h
│ │ │ │ ├── aeron_timestamps.c
│ │ │ │ ├── aeron_timestamps.h
│ │ │ │ ├── aeron_udp_channel.c
│ │ │ │ ├── aeron_udp_channel.h
│ │ │ │ ├── aeron_udp_channel_transport.c
│ │ │ │ ├── aeron_udp_channel_transport.h
│ │ │ │ ├── aeron_udp_channel_transport_bindings.c
│ │ │ │ ├── aeron_udp_channel_transport_bindings.h
│ │ │ │ ├── aeron_udp_channel_transport_fixed_loss.c
│ │ │ │ ├── aeron_udp_channel_transport_fixed_loss.h
│ │ │ │ ├── aeron_udp_channel_transport_loss.c
│ │ │ │ ├── aeron_udp_channel_transport_loss.h
│ │ │ │ ├── aeron_udp_channel_transport_multi_gap_loss.c
│ │ │ │ ├── aeron_udp_channel_transport_multi_gap_loss.h
│ │ │ │ ├── aeron_udp_destination_tracker.c
│ │ │ │ ├── aeron_udp_destination_tracker.h
│ │ │ │ ├── aeron_udp_transport_poller.c
│ │ │ │ └── aeron_udp_transport_poller.h
│ │ │ └── uri/
│ │ │ ├── aeron_driver_uri.c
│ │ │ └── aeron_driver_uri.h
│ │ ├── java/
│ │ │ └── io/
│ │ │ └── aeron/
│ │ │ └── driver/
│ │ │ ├── AbstractMinMulticastFlowControl.java
│ │ │ ├── AeronClient.java
│ │ │ ├── ClientCommandAdapter.java
│ │ │ ├── ClientProxy.java
│ │ │ ├── CommandProxy.java
│ │ │ ├── Configuration.java
│ │ │ ├── CongestionControl.java
│ │ │ ├── CongestionControlSupplier.java
│ │ │ ├── CounterLink.java
│ │ │ ├── DataPacketDispatcher.java
│ │ │ ├── DefaultAllowTerminationValidator.java
│ │ │ ├── DefaultCongestionControlSupplier.java
│ │ │ ├── DefaultDenyTerminationValidator.java
│ │ │ ├── DefaultMulticastFlowControlSupplier.java
│ │ │ ├── DefaultNameResolver.java
│ │ │ ├── DefaultReceiveChannelEndpointSupplier.java
│ │ │ ├── DefaultSendChannelEndpointSupplier.java
│ │ │ ├── DefaultUnicastFlowControlSupplier.java
│ │ │ ├── DriverConductor.java
│ │ │ ├── DriverConductorProxy.java
│ │ │ ├── DriverManagedResource.java
│ │ │ ├── DriverNameResolver.java
│ │ │ ├── DriverNameResolverCache.java
│ │ │ ├── DutyCycleTracker.java
│ │ │ ├── FeedbackDelayGenerator.java
│ │ │ ├── FlowControl.java
│ │ │ ├── FlowControlSupplier.java
│ │ │ ├── IpcPublication.java
│ │ │ ├── IpcSubscriptionLink.java
│ │ │ ├── LossDetector.java
│ │ │ ├── LossHandler.java
│ │ │ ├── MaxMulticastFlowControl.java
│ │ │ ├── MaxMulticastFlowControlSupplier.java
│ │ │ ├── MediaDriver.java
│ │ │ ├── MinMulticastFlowControl.java
│ │ │ ├── MinMulticastFlowControlSupplier.java
│ │ │ ├── NameResolver.java
│ │ │ ├── NamedCompositeAgent.java
│ │ │ ├── NetworkPublication.java
│ │ │ ├── NetworkPublicationThreadLocals.java
│ │ │ ├── NetworkSubscriptionLink.java
│ │ │ ├── OptimalMulticastDelayGenerator.java
│ │ │ ├── PendingSetupMessageFromSource.java
│ │ │ ├── PreferredMulticastFlowControl.java
│ │ │ ├── PreferredMulticastFlowControlSupplier.java
│ │ │ ├── PublicationImage.java
│ │ │ ├── PublicationLink.java
│ │ │ ├── PublicationParams.java
│ │ │ ├── ReceiveChannelEndpointSupplier.java
│ │ │ ├── Receiver.java
│ │ │ ├── ReceiverLivenessTracker.java
│ │ │ ├── ReceiverProxy.java
│ │ │ ├── RetransmitHandler.java
│ │ │ ├── RetransmitSender.java
│ │ │ ├── SendChannelEndpointSupplier.java
│ │ │ ├── Sender.java
│ │ │ ├── SenderProxy.java
│ │ │ ├── SessionKey.java
│ │ │ ├── SpySubscriptionLink.java
│ │ │ ├── StaticDelayGenerator.java
│ │ │ ├── StaticWindowCongestionControl.java
│ │ │ ├── Subscribable.java
│ │ │ ├── SubscriberPosition.java
│ │ │ ├── SubscriptionLink.java
│ │ │ ├── SubscriptionParams.java
│ │ │ ├── TaggedMulticastFlowControl.java
│ │ │ ├── TaggedMulticastFlowControlSupplier.java
│ │ │ ├── TerminationValidator.java
│ │ │ ├── ThreadingMode.java
│ │ │ ├── TimeTrackingNameResolver.java
│ │ │ ├── UnicastFlowControl.java
│ │ │ ├── UntetheredSubscription.java
│ │ │ ├── buffer/
│ │ │ │ ├── FileStoreLogFactory.java
│ │ │ │ ├── LogFactory.java
│ │ │ │ ├── MappedRawLog.java
│ │ │ │ ├── RawLog.java
│ │ │ │ └── package-info.java
│ │ │ ├── exceptions/
│ │ │ │ ├── ActiveDriverException.java
│ │ │ │ ├── InvalidChannelException.java
│ │ │ │ ├── UnknownSubscriptionException.java
│ │ │ │ └── package-info.java
│ │ │ ├── ext/
│ │ │ │ ├── CubicCongestionControl.java
│ │ │ │ ├── CubicCongestionControlConfiguration.java
│ │ │ │ ├── CubicCongestionControlSupplier.java
│ │ │ │ ├── DebugChannelEndpointConfiguration.java
│ │ │ │ ├── DebugReceiveChannelEndpoint.java
│ │ │ │ ├── DebugReceiveChannelEndpointSupplier.java
│ │ │ │ ├── DebugSendChannelEndpoint.java
│ │ │ │ ├── DebugSendChannelEndpointSupplier.java
│ │ │ │ ├── FixedLossGenerator.java
│ │ │ │ ├── LossGenerator.java
│ │ │ │ ├── MultiGapLossGenerator.java
│ │ │ │ ├── RandomLossGenerator.java
│ │ │ │ └── package-info.java
│ │ │ ├── media/
│ │ │ │ ├── ControlMode.java
│ │ │ │ ├── ControlTransportPoller.java
│ │ │ │ ├── DataTransportPoller.java
│ │ │ │ ├── ImageConnection.java
│ │ │ │ ├── InterfaceSearchAddress.java
│ │ │ │ ├── MultiRcvDestination.java
│ │ │ │ ├── NamedInterface.java
│ │ │ │ ├── NetworkInterfaceShim.java
│ │ │ │ ├── NetworkUtil.java
│ │ │ │ ├── PortManager.java
│ │ │ │ ├── ReceiveChannelEndpoint.java
│ │ │ │ ├── ReceiveChannelEndpointThreadLocals.java
│ │ │ │ ├── ReceiveDestinationTransport.java
│ │ │ │ ├── ResolvedInterface.java
│ │ │ │ ├── SendChannelEndpoint.java
│ │ │ │ ├── SocketAddressParser.java
│ │ │ │ ├── UdpChannel.java
│ │ │ │ ├── UdpChannelTransport.java
│ │ │ │ ├── UdpNameResolutionTransport.java
│ │ │ │ ├── UdpTransportPoller.java
│ │ │ │ ├── UnresolvedInterface.java
│ │ │ │ ├── WildcardPortManager.java
│ │ │ │ └── package-info.java
│ │ │ ├── package-info.java
│ │ │ ├── reports/
│ │ │ │ ├── LossReport.java
│ │ │ │ ├── LossReportReader.java
│ │ │ │ ├── LossReportUtil.java
│ │ │ │ └── package-info.java
│ │ │ └── status/
│ │ │ ├── ClientHeartbeatTimestamp.java
│ │ │ ├── DutyCycleStallTracker.java
│ │ │ ├── FlowControlReceivers.java
│ │ │ ├── MdcDestinations.java
│ │ │ ├── PerImageIndicator.java
│ │ │ ├── PublisherLimit.java
│ │ │ ├── PublisherPos.java
│ │ │ ├── ReceiveChannelStatus.java
│ │ │ ├── ReceiveLocalSocketAddress.java
│ │ │ ├── ReceiverHwm.java
│ │ │ ├── ReceiverNaksSent.java
│ │ │ ├── ReceiverPos.java
│ │ │ ├── SendChannelStatus.java
│ │ │ ├── SendLocalSocketAddress.java
│ │ │ ├── SenderBpe.java
│ │ │ ├── SenderLimit.java
│ │ │ ├── SenderNaksReceived.java
│ │ │ ├── SenderPos.java
│ │ │ ├── StatusUtil.java
│ │ │ ├── StreamCounter.java
│ │ │ ├── SubscriberPos.java
│ │ │ ├── SystemCounterDescriptor.java
│ │ │ ├── SystemCounters.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ ├── aeron-ipc.properties
│ │ ├── aeron-throughput.properties
│ │ ├── debug-loss-10.properties
│ │ ├── high-stream-count.properties
│ │ └── low-latency.properties
│ └── test/
│ ├── c/
│ │ ├── CMakeLists.txt
│ │ ├── EmbeddedMediaDriver.h
│ │ ├── aeron_c_cnc_test.cpp
│ │ ├── aeron_c_local_addresses_test.cpp
│ │ ├── aeron_c_multi_destination_test.cpp
│ │ ├── aeron_c_system_test.cpp
│ │ ├── aeron_c_terminate_test.cpp
│ │ ├── aeron_congestion_control_test.cpp
│ │ ├── aeron_counters_manager_test.cpp
│ │ ├── aeron_data_packet_dispatcher_test.cpp
│ │ ├── aeron_driver_conductor_clock_test.cpp
│ │ ├── aeron_driver_conductor_config_test.cpp
│ │ ├── aeron_driver_conductor_counter_test.cpp
│ │ ├── aeron_driver_conductor_ipc_test.cpp
│ │ ├── aeron_driver_conductor_network_test.cpp
│ │ ├── aeron_driver_conductor_pub_sub_test.cpp
│ │ ├── aeron_driver_conductor_spy_test.cpp
│ │ ├── aeron_driver_conductor_subscribable_test.cpp
│ │ ├── aeron_driver_conductor_test.h
│ │ ├── aeron_driver_configuration_test.cpp
│ │ ├── aeron_driver_context_config_test.cpp
│ │ ├── aeron_driver_uri_test.cpp
│ │ ├── aeron_errors_test.cpp
│ │ ├── aeron_flow_control_test.cpp
│ │ ├── aeron_ipc_publication_test.cpp
│ │ ├── aeron_logbuffer_unblocker_test.cpp
│ │ ├── aeron_loss_detector_test.cpp
│ │ ├── aeron_loss_reporter_test.cpp
│ │ ├── aeron_name_resolver_cache_test.cpp
│ │ ├── aeron_name_resolver_test.cpp
│ │ ├── aeron_network_publication_test.cpp
│ │ ├── aeron_parse_util_test.cpp
│ │ ├── aeron_port_manager_test.cpp
│ │ ├── aeron_position_test.cpp
│ │ ├── aeron_properties_test.cpp
│ │ ├── aeron_publication_image_test.cpp
│ │ ├── aeron_receiver_test.h
│ │ ├── aeron_retransmit_handler_test.cpp
│ │ ├── aeron_term_gap_filler_test.cpp
│ │ ├── aeron_term_scanner_test.cpp
│ │ ├── aeron_test_base.h
│ │ ├── aeron_test_udp_bindings.h
│ │ ├── aeron_timestamps_test.cpp
│ │ ├── aeron_udp_channel_test.cpp
│ │ ├── aeronmd_signal_test.cpp
│ │ ├── agent/
│ │ │ └── aeron_driver_agent_test.cpp
│ │ └── media/
│ │ ├── aeron_udp_channel_transport_loss_test.cpp
│ │ └── aeron_udp_channel_transport_multi_gap_loss_test.cpp
│ └── java/
│ └── io/
│ └── aeron/
│ └── driver/
│ ├── ClientCommandAdapterTest.java
│ ├── ConfigurationTest.java
│ ├── DataPacketDispatcherTest.java
│ ├── DefaultMulticastFlowControlSupplierTest.java
│ ├── DefaultNameResolverTest.java
│ ├── DriverConductorTest.java
│ ├── DriverNameResolverCacheTest.java
│ ├── FlowControlTest.java
│ ├── IpcPublicationTest.java
│ ├── LossDetectorTest.java
│ ├── MediaDriverContextTest.java
│ ├── MediaDriverTest.java
│ ├── MinMulticastFlowControlTest.java
│ ├── NetworkPublicationTest.java
│ ├── OptimalMulticastDelayGeneratorTest.java
│ ├── PublicationImageTest.java
│ ├── PublicationParamsTest.java
│ ├── ReceiverLivenessTrackerTest.java
│ ├── ReceiverTest.java
│ ├── RetransmitHandlerTest.java
│ ├── SelectorAndTransportTest.java
│ ├── SenderTest.java
│ ├── StaticWindowCongestionControlTest.java
│ ├── TaggedMulticastFlowControlTest.java
│ ├── TerminateDriverTest.java
│ ├── TimeTrackingNameResolverTest.java
│ ├── UdpChannelTest.java
│ ├── UntetheredSubscriptionTest.java
│ ├── buffer/
│ │ ├── FileStoreLogFactoryTest.java
│ │ └── TestLogFactory.java
│ ├── ext/
│ │ ├── CubicCongestionControlTest.java
│ │ ├── FixedLossGeneratorTest.java
│ │ └── MultiGapLossGeneratorTest.java
│ ├── media/
│ │ ├── NamedInterfaceTest.java
│ │ ├── NetworkUtilTest.java
│ │ ├── SocketAddressParserTest.java
│ │ ├── UnresolvedInterfaceTest.java
│ │ └── WildcardPortManagerTest.java
│ ├── reports/
│ │ ├── LossReportReaderTest.java
│ │ └── LossReportTest.java
│ └── status/
│ └── DutyCycleStallTrackerTest.java
├── aeron-samples/
│ ├── README.md
│ ├── scripts/
│ │ ├── aeron-stat
│ │ ├── aeron-stat.cmd
│ │ ├── archive/
│ │ │ ├── README.md
│ │ │ ├── archiving-media-driver
│ │ │ ├── archiving-media-driver.cmd
│ │ │ ├── embedded-recording-throughput
│ │ │ ├── embedded-recording-throughput.cmd
│ │ │ ├── embedded-replay-throughput
│ │ │ ├── embedded-replay-throughput.cmd
│ │ │ ├── high-throughput-archive.properties
│ │ │ ├── lightweight-archive.properties
│ │ │ ├── logging-archiving-media-driver
│ │ │ ├── logging-archiving-media-driver.cmd
│ │ │ ├── recorded-basic-publisher
│ │ │ ├── recorded-basic-publisher.cmd
│ │ │ ├── recording-replicator
│ │ │ ├── recording-replicator.cmd
│ │ │ ├── replay-merge-subscriber
│ │ │ ├── replay-merge-subscriber.cmd
│ │ │ ├── replayed-basic-subscriber
│ │ │ ├── replayed-basic-subscriber.cmd
│ │ │ ├── segment-inspector
│ │ │ ├── segment-inspector.cmd
│ │ │ └── standard-archive.properties
│ │ ├── backlog-stat
│ │ ├── backlog-stat.cmd
│ │ ├── basic-publisher
│ │ ├── basic-publisher.cmd
│ │ ├── basic-subscriber
│ │ ├── basic-subscriber.cmd
│ │ ├── cluster/
│ │ │ ├── agent-ns
│ │ │ ├── basic-auction-client
│ │ │ ├── basic-auction-client-ns
│ │ │ ├── basic-auction-cluster
│ │ │ ├── basic-auction-cluster-ns
│ │ │ ├── remove-namespaces
│ │ │ ├── script-common
│ │ │ └── setup-namespaces
│ │ ├── dynamic-logging
│ │ ├── dynamic-logging.cmd
│ │ ├── embedded-claim-ipc-throughput
│ │ ├── embedded-claim-ipc-throughput.cmd
│ │ ├── embedded-dual-exclusive-throughput
│ │ ├── embedded-dual-exclusive-throughput.cmd
│ │ ├── embedded-exclusive-claim-ipc-throughput
│ │ ├── embedded-exclusive-claim-ipc-throughput.cmd
│ │ ├── embedded-exclusive-ipc-throughput
│ │ ├── embedded-exclusive-ipc-throughput.cmd
│ │ ├── embedded-exclusive-spied-throughput
│ │ ├── embedded-exclusive-spied-throughput.cmd
│ │ ├── embedded-exclusive-throughput
│ │ ├── embedded-exclusive-throughput.cmd
│ │ ├── embedded-exclusive-vectored-ipc-throughput
│ │ ├── embedded-exclusive-vectored-ipc-throughput.cmd
│ │ ├── embedded-ipc-throughput
│ │ ├── embedded-ipc-throughput.cmd
│ │ ├── embedded-ping-pong
│ │ ├── embedded-ping-pong.cmd
│ │ ├── embedded-throughput
│ │ ├── embedded-throughput.cmd
│ │ ├── error-stat
│ │ ├── error-stat.cmd
│ │ ├── file-receiver
│ │ ├── file-receiver.cmd
│ │ ├── file-sender
│ │ ├── file-sender.cmd
│ │ ├── ipc-c-media-driver
│ │ ├── java-common
│ │ ├── java-common.cmd
│ │ ├── linux-qdisc-basic
│ │ ├── log-inspector
│ │ ├── log-inspector.cmd
│ │ ├── logging-c-media-driver
│ │ ├── logging-media-driver
│ │ ├── logging-media-driver.cmd
│ │ ├── loss-rate-c-media-driver
│ │ ├── loss-stat
│ │ ├── loss-stat.cmd
│ │ ├── low-latency-c-media-driver
│ │ ├── low-latency-c-media-driver.cmd
│ │ ├── low-latency-media-driver
│ │ ├── low-latency-media-driver.cmd
│ │ ├── media-driver
│ │ ├── media-driver.cmd
│ │ ├── ping
│ │ ├── ping.cmd
│ │ ├── pong
│ │ ├── pong.cmd
│ │ ├── rate-subscriber
│ │ ├── rate-subscriber.cmd
│ │ ├── raw/
│ │ │ ├── hack-select-receive-send-udp-pong
│ │ │ ├── hack-select-receive-send-udp-pong.cmd
│ │ │ ├── receive-send-udp-pong
│ │ │ ├── receive-send-udp-pong.cmd
│ │ │ ├── send-hack-select-receive-udp-ping
│ │ │ ├── send-hack-select-receive-udp-ping.cmd
│ │ │ ├── send-receive-udp-ping
│ │ │ └── send-receive-udp-ping.cmd
│ │ ├── run-java
│ │ ├── run-java-logging
│ │ ├── run-java-logging.cmd
│ │ ├── run-java.cmd
│ │ ├── show_thread_affinity.sh
│ │ ├── stream-stat
│ │ ├── stream-stat.cmd
│ │ ├── streaming-publisher
│ │ ├── streaming-publisher.cmd
│ │ └── throughput-c-media-driver
│ └── src/
│ ├── docs/
│ │ └── asciidoc/
│ │ └── Cluster-Tutorial.asciidoc
│ ├── main/
│ │ ├── c/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── aeron_stat.c
│ │ │ ├── basic_mds_subscriber.c
│ │ │ ├── basic_publisher.c
│ │ │ ├── basic_subscriber.c
│ │ │ ├── cping.c
│ │ │ ├── cpong.c
│ │ │ ├── driver_tool.c
│ │ │ ├── error_stat.c
│ │ │ ├── loss_stat.c
│ │ │ ├── rate_subscriber.c
│ │ │ ├── raw/
│ │ │ │ └── ping_pong_raw.c
│ │ │ ├── response/
│ │ │ │ ├── response_client.c
│ │ │ │ └── response_server.c
│ │ │ ├── sample_util.c
│ │ │ ├── sample_util.h
│ │ │ ├── samples_configuration.h
│ │ │ ├── streaming_exclusive_publisher.c
│ │ │ └── streaming_publisher.c
│ │ ├── cpp/
│ │ │ ├── BasicPublisher.cpp
│ │ │ ├── BasicSubscriber.cpp
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Configuration.h
│ │ │ ├── ExclusivePingPong.cpp
│ │ │ ├── ExclusiveThroughput.cpp
│ │ │ ├── LossStat.cpp
│ │ │ ├── Ping.cpp
│ │ │ ├── PingPong.cpp
│ │ │ ├── Pong.cpp
│ │ │ ├── RateReporter.h
│ │ │ ├── RateSubscriber.cpp
│ │ │ ├── StreamingPublisher.cpp
│ │ │ └── Throughput.cpp
│ │ └── java/
│ │ └── io/
│ │ └── aeron/
│ │ ├── cluster/
│ │ │ └── ConsensusModuleSnapshotPendingServiceMessagesPatch.java
│ │ ├── response/
│ │ │ ├── ResponseClient.java
│ │ │ └── ResponseServer.java
│ │ └── samples/
│ │ ├── AeronStat.java
│ │ ├── BacklogStat.java
│ │ ├── BasicPublisher.java
│ │ ├── BasicSubscriber.java
│ │ ├── CncFileReader.java
│ │ ├── DriverTool.java
│ │ ├── EmbeddedBufferClaimIpcThroughput.java
│ │ ├── EmbeddedDualExclusiveThroughput.java
│ │ ├── EmbeddedExclusiveBufferClaimIpcThroughput.java
│ │ ├── EmbeddedExclusiveIpcThroughput.java
│ │ ├── EmbeddedExclusiveSpiedThroughput.java
│ │ ├── EmbeddedExclusiveThroughput.java
│ │ ├── EmbeddedExclusiveVectoredIpcThroughput.java
│ │ ├── EmbeddedIpcThroughput.java
│ │ ├── EmbeddedPingPong.java
│ │ ├── EmbeddedThroughput.java
│ │ ├── ErrorStat.java
│ │ ├── FileReceiver.java
│ │ ├── FileSender.java
│ │ ├── ImageRateReporter.java
│ │ ├── ImageRateSubscriber.java
│ │ ├── LogInspector.java
│ │ ├── LossStat.java
│ │ ├── LowLatencyMediaDriver.java
│ │ ├── MultiplePublishersWithFragmentation.java
│ │ ├── MultipleSubscribersWithFragmentAssembly.java
│ │ ├── Ping.java
│ │ ├── Pong.java
│ │ ├── RateReporter.java
│ │ ├── RateSubscriber.java
│ │ ├── SampleConfiguration.java
│ │ ├── SamplesUtil.java
│ │ ├── SetControllableIdleStrategy.java
│ │ ├── SimplePublisher.java
│ │ ├── SimpleSubscriber.java
│ │ ├── StreamStat.java
│ │ ├── StreamingPublisher.java
│ │ ├── archive/
│ │ │ ├── ArchiveCreator.java
│ │ │ ├── EmbeddedRecordingThroughput.java
│ │ │ ├── EmbeddedReplayThroughput.java
│ │ │ ├── IndexedReplicatedRecording.java
│ │ │ ├── RecordedBasicPublisher.java
│ │ │ ├── RecordingDescriptor.java
│ │ │ ├── RecordingDescriptorCollector.java
│ │ │ ├── RecordingReplicator.java
│ │ │ ├── RecordingSignalCapture.java
│ │ │ ├── ReplayMergeSubscriber.java
│ │ │ ├── ReplayedBasicSubscriber.java
│ │ │ ├── SampleAuthenticator.java
│ │ │ ├── SampleAuthenticatorSupplier.java
│ │ │ ├── SampleAuthorisationService.java
│ │ │ ├── Samples.java
│ │ │ ├── SegmentInspector.java
│ │ │ └── package-info.java
│ │ ├── cluster/
│ │ │ ├── ClusterConfig.java
│ │ │ ├── EchoService.java
│ │ │ ├── EchoServiceNode.java
│ │ │ ├── package-info.java
│ │ │ └── tutorial/
│ │ │ ├── BasicAuctionClusterClient.java
│ │ │ ├── BasicAuctionClusteredService.java
│ │ │ ├── BasicAuctionClusteredServiceNode.java
│ │ │ ├── SingleNodeCluster.java
│ │ │ └── package-info.java
│ │ ├── echo/
│ │ │ ├── CreateEchoPair.java
│ │ │ ├── EchoPair.java
│ │ │ ├── Provisioning.java
│ │ │ ├── ProvisioningClientMain.java
│ │ │ ├── ProvisioningMessage.java
│ │ │ ├── ProvisioningServerMain.java
│ │ │ ├── RemoveAllEchoPairs.java
│ │ │ └── api/
│ │ │ ├── EchoMonitorMBean.java
│ │ │ ├── ProvisioningConstants.java
│ │ │ └── ProvisioningMBean.java
│ │ ├── package-info.java
│ │ ├── raw/
│ │ │ ├── BurstSendReceiveUdpPing.java
│ │ │ ├── Common.java
│ │ │ ├── ReceiveSendUdpPong.java
│ │ │ ├── ReceiveWriteUdpPong.java
│ │ │ ├── SelectReceiveSendUdpPong.java
│ │ │ ├── SendReceiveUdpPing.java
│ │ │ ├── SendSelectReceiveUdpPing.java
│ │ │ ├── WriteReceiveUdpPing.java
│ │ │ └── package-info.java
│ │ ├── security/
│ │ │ ├── SimpleAuthenticator.java
│ │ │ └── SimpleAuthorisationService.java
│ │ └── stress/
│ │ ├── CRC64.java
│ │ ├── SimpleReservedValueSupplier.java
│ │ ├── StressMdcClient.java
│ │ ├── StressMdcServer.java
│ │ ├── StressUnicastClient.java
│ │ ├── StressUnicastServer.java
│ │ └── StressUtil.java
│ └── test/
│ └── java/
│ └── io/
│ └── aeron/
│ ├── cluster/
│ │ └── ConsensusModuleSnapshotPendingServiceMessagesPatchTest.java
│ └── samples/
│ ├── LogInspectorAsciiFormatBytesTest.java
│ ├── StreamStatTest.java
│ ├── archive/
│ │ ├── RecordingDescriptorCollectorTest.java
│ │ └── RecordingReplicatorTest.java
│ └── security/
│ ├── SimpleAuthenticatorTest.java
│ └── SimpleAuthorisationServiceTest.java
├── aeron-system-tests/
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── scripts/
│ │ └── provisioning/
│ │ ├── README.md
│ │ └── fabfile.py
│ └── src/
│ └── test/
│ └── java/
│ └── io/
│ └── aeron/
│ ├── AsyncResourceTest.java
│ ├── BufferClaimMessageTest.java
│ ├── BusySocketTest.java
│ ├── ChannelEndpointStatusTest.java
│ ├── ChannelInterfaceTest.java
│ ├── ChannelValidationTest.java
│ ├── ClientContextTest.java
│ ├── ClientErrorHandlerTest.java
│ ├── ConcurrentPublicationTermRotationRaceTest.java
│ ├── ControlledAssemblyTest.java
│ ├── ControlledMessageTest.java
│ ├── CounterReferencesTest.java
│ ├── CounterTest.java
│ ├── DataLossAndRecoverySystemTest.java
│ ├── ErrorHandlerTest.java
│ ├── ExclusivePublicationTest.java
│ ├── FlowControlTests.java
│ ├── FragmentedMessageTest.java
│ ├── GapFillLossTest.java
│ ├── ImageAvailabilityTest.java
│ ├── ImageRangeTest.java
│ ├── LifecycleTest.java
│ ├── MaxFlowControlStrategySystemTest.java
│ ├── MaxPositionPublicationTest.java
│ ├── MdsAndMdcInteractionTest.java
│ ├── MdsEosPositionTest.java
│ ├── MemoryOrderingTest.java
│ ├── MinFlowControlSystemTest.java
│ ├── MinPositionSubscriptionTest.java
│ ├── MultiDestinationCastTest.java
│ ├── MultiDestinationSubscriptionTest.java
│ ├── MultiDriverTest.java
│ ├── MultiGapLossAndRecoverySystemTest.java
│ ├── MultiSubscriberTest.java
│ ├── MultipathTest.java
│ ├── MultipleMulticastsSubscriptionsTest.java
│ ├── NameReResolutionTest.java
│ ├── PathologicallySlowConsumerTest.java
│ ├── PongTest.java
│ ├── PrintEnvInfoTest.java
│ ├── PubAndSubTest.java
│ ├── PublicationRevokeTest.java
│ ├── PublicationUnblockTest.java
│ ├── PublishFromArbitraryPositionTest.java
│ ├── ReentrantClientTest.java
│ ├── RegistrationAndOwnerTest.java
│ ├── RejectImageTest.java
│ ├── RemoteEchoTest.java
│ ├── ResolvedEndpointSystemTest.java
│ ├── ResponseChannelsTest.java
│ ├── SessionSpecificPublicationTest.java
│ ├── SessionSpecificSubscriptionTest.java
│ ├── SpecifiedPositionPublicationTest.java
│ ├── SpySimulatedConnectionTest.java
│ ├── SpySubscriptionTest.java
│ ├── StopStartSecondSubscriberTest.java
│ ├── StreamSessionLimitsTest.java
│ ├── SubscriberEndOfStreamTest.java
│ ├── SubscriptionReconnectTest.java
│ ├── SystemTests.java
│ ├── TaggedFlowControlSystemTest.java
│ ├── TermBufferLengthTest.java
│ ├── TimestampingSystemTest.java
│ ├── TwoBufferOfferMessageTest.java
│ ├── UntetheredSubscriptionTest.java
│ ├── UriValidationTest.java
│ ├── WildcardPortManagerSystemTest.java
│ ├── archive/
│ │ ├── ArchiveAbandonedClientTest.java
│ │ ├── ArchiveAuthenticationTest.java
│ │ ├── ArchiveDeleteAndRestartTest.java
│ │ ├── ArchiveListRecordingsTest.java
│ │ ├── ArchiveReplayTest.java
│ │ ├── ArchiveResponseClientFailuresTest.java
│ │ ├── ArchiveResponseClientTest.java
│ │ ├── ArchiveSystemTest.java
│ │ ├── ArchiveSystemTests.java
│ │ ├── ArchiveTruncateRecordingTest.java
│ │ ├── BasicArchiveTest.java
│ │ ├── CatalogWithJumboRecordingsAndGapsTest.java
│ │ ├── DualReplayMergeTest.java
│ │ ├── ExtendRecordingTest.java
│ │ ├── ManageRecordingHistoryTest.java
│ │ ├── MigrateSegmentsTest.java
│ │ ├── ReplayMergeTest.java
│ │ ├── ReplicateRecordingTest.java
│ │ ├── TestRecordingSignalConsumer.java
│ │ └── ValidationTests.java
│ ├── cluster/
│ │ ├── AppointedLeaderTest.java
│ │ ├── ClusterBackupTest.java
│ │ ├── ClusterInstrumentor.java
│ │ ├── ClusterNetworkPartitionTest.java
│ │ ├── ClusterNetworkTopologyTest.java
│ │ ├── ClusterSessionReliabilityTest.java
│ │ ├── ClusterTest.java
│ │ ├── ClusterToolTest.java
│ │ ├── ClusterUncommittedStateTest.java
│ │ ├── FailedFirstElectionClusterTest.java
│ │ ├── InitiateShutdownThenImmediatelyCloseLeaderTest.java
│ │ ├── MethodCallBlocker.java
│ │ ├── MultiClusteredServicesTest.java
│ │ ├── MultiModuleSharedDriverTest.java
│ │ ├── MultiNodeTest.java
│ │ ├── OffsetMillisecondClusterClock.java
│ │ ├── OffsetMillisecondClusterClockTest.java
│ │ ├── RacingCatchupClusterTest.java
│ │ ├── RecoverAfterFailedCatchupClusterTest.java
│ │ ├── ServiceIpcIngressMessageTest.java
│ │ ├── SingleNodeTest.java
│ │ ├── StalledLeaderLogReplicationClusterTest.java
│ │ ├── StartFromTruncatedRecordingLogTest.java
│ │ └── TestClusterTest.java
│ ├── driver/
│ │ ├── BytesSentAndReceivedTest.java
│ │ ├── DriverNameResolverTest.java
│ │ ├── DriverShouldStartIfAeronDirectoryExistsTest.java
│ │ ├── DriverSpaceTest.java
│ │ ├── DutyCycleLabelFormatTest.java
│ │ ├── ExperimentalDriverFeaturesTest.java
│ │ ├── FilePageSizeTest.java
│ │ ├── Issue1719Test.java
│ │ ├── NextCorrelationIdTest.java
│ │ ├── NextSessionIdTest.java
│ │ ├── ResolveEphemeralSubscriptionPortTest.java
│ │ ├── SocketLifecycleTest.java
│ │ └── SystemCountersTest.java
│ ├── security/
│ │ ├── SimpleAuthenticatorTest.java
│ │ └── SimpleAuthorisationServiceTest.java
│ └── test/
│ └── driver/
│ └── TestMediaDriverTest.java
├── aeron-test-support/
│ ├── README.md
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── io/
│ │ └── aeron/
│ │ └── test/
│ │ ├── AdjustableClock.java
│ │ ├── BindingsTest.java
│ │ ├── CapturingPrintStream.java
│ │ ├── CountersAnswer.java
│ │ ├── CountingFragmentHandler.java
│ │ ├── DataCollector.java
│ │ ├── DisableJavaUtilLogging.java
│ │ ├── EventLogExtension.java
│ │ ├── HideStdErrExtension.java
│ │ ├── IgnoreStdErr.java
│ │ ├── InterruptAfter.java
│ │ ├── InterruptingTestCallback.java
│ │ ├── IpTables.java
│ │ ├── MediaDriverTestUtil.java
│ │ ├── NetworkTestingUtil.java
│ │ ├── NullOutputStream.java
│ │ ├── RandomWatcher.java
│ │ ├── SlowTest.java
│ │ ├── SystemTestConfig.java
│ │ ├── SystemTestWatcher.java
│ │ ├── TestContexts.java
│ │ ├── TestIdleStrategy.java
│ │ ├── Tests.java
│ │ ├── ThreadNamingTestCallback.java
│ │ ├── TopologyTest.java
│ │ ├── archive/
│ │ │ └── RecordingSignalCollector.java
│ │ ├── cluster/
│ │ │ ├── ClusterTests.java
│ │ │ ├── StubClusteredService.java
│ │ │ ├── TestBackupNode.java
│ │ │ ├── TestCluster.java
│ │ │ ├── TestClusterClock.java
│ │ │ └── TestNode.java
│ │ ├── driver/
│ │ │ ├── CTestMediaDriver.java
│ │ │ ├── DriverOutputConsumer.java
│ │ │ ├── JavaTestMediaDriver.java
│ │ │ ├── PortLossGenerator.java
│ │ │ ├── RedirectingNameResolver.java
│ │ │ ├── StreamIdLossGenerator.java
│ │ │ └── TestMediaDriver.java
│ │ └── launcher/
│ │ ├── FileResolveUtil.java
│ │ ├── RemoteLaunchClient.java
│ │ └── RemoteLaunchServer.java
│ └── test/
│ └── java/
│ └── io/
│ └── aeron/
│ └── test/
│ ├── DataCollectorTest.java
│ ├── ThreadNamingCallbackTest.java
│ ├── cluster/
│ │ └── TestClusterClockTest.java
│ └── launcher/
│ └── RemoteLauncherTest.java
├── build.gradle
├── buildSrc/
│ ├── build.gradle
│ ├── settings.gradle
│ └── src/
│ └── main/
│ └── java/
│ └── io/
│ └── aeron/
│ └── build/
│ ├── AsciidocUtil.java
│ ├── AsciidoctorPreprocessTask.java
│ ├── GithubUtil.java
│ ├── SonatypeCentralPortalUploadRepositoryTask.java
│ └── TutorialPublishTask.java
├── config/
│ ├── checkstyle/
│ │ ├── checkstyle.xml
│ │ └── suppressions.xml
│ └── ide/
│ ├── clion/
│ │ └── aeron_cpp.xml
│ └── idea/
│ └── aeron.xml
├── cppbuild/
│ ├── Doxyfile.in
│ ├── cppbuild
│ ├── cppbuild.ps1
│ ├── rocky/
│ │ └── Dockerfile
│ └── rocky-docker-build
├── gradle/
│ ├── libs.versions.toml
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── run-ci-tests.sh
├── settings.gradle
└── version.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto
*.bat text eol=crlf
*.cmd text eol=crlf
================================================
FILE: .github/codeql/codeql-config.yml
================================================
name: "Aeron CodeQL Scanning"
queries:
- uses: security-and-quality
query-filters:
- exclude:
id: java/missing-override-annotation
- exclude:
id: cpp/poorly-documented-function
- exclude:
id: cpp/unused-static-variable
- exclude:
id: java/unused-reference-type
- exclude:
id: java/unused-parameter
- exclude:
id: cpp/trivial-switch
- exclude:
id: cpp/long-switch
- exclude:
id: cpp/integer-used-for-enum
- exclude:
id: cpp/stack-address-escape
================================================
FILE: .github/workflows/ci-low-cadence.yml
================================================
name: Continuous Integration (Low Cadence)
on:
workflow_call:
workflow_dispatch:
repository_dispatch:
types: run-slow-tests
schedule:
- cron: '0 0,12 * * *'
push:
branches:
- master
- 'release/**'
pull_request:
types: [opened, synchronize]
branches:
- master
- 'release/**'
concurrency:
group: ci-low-cadence-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name != 'schedule' }}
env:
GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.warning.mode=fail'
INSTALL_COMPILER_RETRIES: '5'
JAVA_VERSION: '17'
permissions:
contents: read
jobs:
java-slow-tests:
name: Java Slow Tests (JDK ${{ matrix.java }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
java: [ '17', '21', '25' ]
os: ['ubuntu-24.04', 'windows-latest', 'macos-15']
steps:
- name: Use faster temporary storage (Windows)
if: runner.os == 'Windows'
run: |
echo "TMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "TEMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Disable CPU hogs (Windows)
if: runner.os == 'Windows'
run: |
Set-MpPreference -DisableRealtimeMonitoring $true -Force
Add-MpPreference -ExclusionPath "C:\" -Force
Add-MpPreference -ExclusionPath "D:\" -Force
sc config wuauserv start= disabled
Stop-Service wuauserv -ErrorAction SilentlyContinue
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsl.exe" /v Debugger /t REG_SZ /d "block.exe" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\CompatTelRunner.exe" /v Debugger /t REG_SZ /d "block.exe" /f
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION (Linux/MacOS)
if: runner.os == 'Linux' || runner.os == 'macOS'
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" >> $GITHUB_ENV
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION (Windows)
if: runner.os == 'Windows'
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=$env:JAVA_HOME" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Setup localhost name (MacOS)
if: runner.os == 'macOS'
run: |
sudo sed -i bak "s/localhost/localhost $(hostname)/" /etc/hosts
dscacheutil -flushcache
- name: Setup java to run Gradle
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Enable core dumps (Linux)
if: runner.os == 'Linux'
run: |
ulimit -c unlimited
sudo systemctl stop apport.service || true
sudo systemctl disable apport.service || true
sudo mkdir -p /var/coredump
sudo chmod a+rw /var/coredump
sudo sysctl -w kernel.core_pattern="/var/coredump/core_%e.%p"
- name: Enable core dumps (MacOS)
if: runner.os == 'macOS'
run: |
ulimit -c unlimited
sudo mkdir -p /var/coredump
sudo chmod a+rw /var/coredump
sudo sysctl -w kern.coredump=1
sudo sysctl -w kern.corefile="/var/coredump/core.%P"
- name: Build and Run Slow Tests with Gradle
run: ./gradlew slowTest
env:
BUILD_JAVA_VERSION: ${{ matrix.java }}
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
${{ runner.os == 'Windows' && 'echo "file=build/distributions/test_logs.tbz2" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append' || 'echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT' }}
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-${{ matrix.os }}-java-${{ matrix.java }}
path: ${{ steps.copy_test_logs.outputs.file }}
java-javadoc:
name: JavaDoc (JDK ${{ matrix.java }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
java: [ '17', '21', '25' ]
os: [ 'ubuntu-24.04' ]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" >> $GITHUB_ENV
- name: Setup java to run Gradle
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build and Run Javadoc
run: ./gradlew javadoc
env:
BUILD_JAVA_VERSION: ${{ matrix.java }}
cpp-slow-tests-gcc:
name: C++ Slow System Tests GCC ${{ matrix.version }}
runs-on: ubuntu-24.04
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
version: [ '14' ]
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++-${{ matrix.version }} libbsd-dev uuid-dev
- name: Build
run: cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --slow-system-tests --no-system-tests --no-unit-tests --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-cpp-slow-tests-gcc-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-slow-tests-clang:
name: C++ Slow System Tests Clang ${{ matrix.version }}
runs-on: ubuntu-24.04
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
version: [ '22' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo mkdir -p /etc/apt/keyrings/
curl --retry ${INSTALL_COMPILER_RETRIES} https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/noble/ llvm-toolchain-noble-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }} libbsd-dev uuid-dev
- name: Build
run: cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --slow-system-tests --no-system-tests --no-unit-tests --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-cpp-slow-tests-clang-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-slow-tests-msvc:
name: C++ Slow System Tests MSVC
runs-on: windows-latest
timeout-minutes: 120
env:
CC: cl
CXX: cl
steps:
- name: Use faster temporary storage (Windows)
run: |
echo "TMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "TEMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Disable CPU hogs (Windows)
run: |
Set-MpPreference -DisableRealtimeMonitoring $true -Force
Add-MpPreference -ExclusionPath "C:\" -Force
Add-MpPreference -ExclusionPath "D:\" -Force
sc config wuauserv start= disabled
Stop-Service wuauserv -ErrorAction SilentlyContinue
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsl.exe" /v Debugger /t REG_SZ /d "block.exe" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\CompatTelRunner.exe" /v Debugger /t REG_SZ /d "block.exe" /f
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=$env:JAVA_HOME" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build
run: cppbuild/cppbuild.ps1 --slow-system-tests --no-system-tests --no-unit-tests --c-warnings-as-errors --cxx-warnings-as-errors --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" | Out-File $env:GITHUB_OUTPUT -Encoding utf8 -Append
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-cpp-slow-tests-msvc-latest
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-sanitize-gcc:
name: C++ Sanitise Build GCC ${{ matrix.version }}
runs-on: ubuntu-24.04
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
version: [ '14' ]
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++-${{ matrix.version }} libbsd-dev uuid-dev
- name: Build
run: cppbuild/cppbuild --relwithdebinfo-build --sanitise-build --c-warnings-as-errors --cxx-warnings-as-errors --slow-system-tests --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-cpp-sanitize-gcc-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-sanitize-clang:
name: C++ Sanitise Build Clang ${{ matrix.version }}
runs-on: ubuntu-24.04
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
version: [ '22' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo mkdir -p /etc/apt/keyrings/
curl --retry ${INSTALL_COMPILER_RETRIES} https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/noble/ llvm-toolchain-noble-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }} libbsd-dev uuid-dev
- name: Build
run: cppbuild/cppbuild --relwithdebinfo-build --sanitise-build --c-warnings-as-errors --cxx-warnings-as-errors --slow-system-tests --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-cpp-sanitize-clang-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
================================================
FILE: .github/workflows/ci.yml
================================================
name: Continuous Integration
on:
workflow_call:
workflow_dispatch:
repository_dispatch:
types: run-commit-tests
push:
branches:
- master
- 'release/**'
pull_request:
types: [opened, synchronize]
branches:
- master
- 'release/**'
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.warning.mode=fail'
INSTALL_COMPILER_RETRIES: '5'
JAVA_VERSION: '17'
permissions:
contents: read
jobs:
java-build:
name: Java ${{ matrix.java }} (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
java: [ '17', '21', '25' ]
os: ['ubuntu-24.04', 'windows-latest', 'macos-15']
steps:
- name: Use faster temporary storage (Windows)
if: runner.os == 'Windows'
run: |
echo "TMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "TEMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Disable CPU hogs (Windows)
if: runner.os == 'Windows'
run: |
Set-MpPreference -DisableRealtimeMonitoring $true -Force
Add-MpPreference -ExclusionPath "C:\" -Force
Add-MpPreference -ExclusionPath "D:\" -Force
sc config wuauserv start= disabled
Stop-Service wuauserv -ErrorAction SilentlyContinue
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsl.exe" /v Debugger /t REG_SZ /d "block.exe" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\CompatTelRunner.exe" /v Debugger /t REG_SZ /d "block.exe" /f
- name: Setup small temp file system (Linux)
if: runner.os == 'Linux'
run: |
sudo mkdir -p /mnt/tmp_aeron_dir
sudo mount -t tmpfs -o size=50M,mode=777 tmpfs /mnt/tmp_aeron_dir
- name: Setup small temp file system and localhost name (MacOS)
if: runner.os == 'macOS'
run: |
sudo sed -i bak "s/localhost/localhost $(hostname)/" /etc/hosts
dscacheutil -flushcache
sudo diskutil eraseDisk APFS tmp_aeron_dir $(hdiutil attach -nomount ram://$((2 * 1024 * 60)))
- name: Setup small temp file system (Windows)
if: runner.os == 'Windows'
run: |
$current_size = (Get-PartitionSupportedSize -DiskNumber 1 -PartitionNumber 1)
$new_size = ($current_size.SizeMax - 100 * 1024 * 1024)
Resize-Partition -DiskNumber 1 -PartitionNumber 1 -Size ($new_size)
New-Partition -DiskNumber 1 -Size 60MB -DriveLetter T | Format-Volume -FileSystem NTFS -Confirm:$false
New-Item -ItemType Directory -Path T:\tmp_aeron_dir
- name: Enable core dumps (Linux)
if: runner.os == 'Linux'
run: |
ulimit -c unlimited
sudo systemctl stop apport.service || true
sudo systemctl disable apport.service || true
sudo mkdir -p /var/coredump
sudo chmod a+rw /var/coredump
sudo sysctl -w kernel.core_pattern="/var/coredump/core_%e.%p"
- name: Enable core dumps (MacOS)
if: runner.os == 'macOS'
run: |
ulimit -c unlimited
sudo mkdir -p /var/coredump
sudo chmod a+rw /var/coredump
sudo sysctl -w kern.coredump=1
sudo sysctl -w kern.corefile="/var/coredump/core.%P"
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION (Unix)
if: runner.os != 'Windows'
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" >> $GITHUB_ENV
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION (Windows)
if: runner.os == 'Windows'
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=$env:JAVA_HOME" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Setup java to run Gradle
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build with Gradle
run: ./gradlew -x javadoc --console=plain
- name: Remove small temp file system (Linux)
if: always() && runner.os == 'Linux'
run: |
sudo umount /mnt/tmp_aeron_dir
sudo rm -rf /mnt/tmp_aeron_dir
- name: Remove small temp file system (MacOS)
if: always() && runner.os == 'macOS'
run: sudo diskutil eject tmp_aeron_dir
- name: Remove small temp file system (Windows)
if: always() && runner.os == 'Windows'
run: |
if (Test-Path "T:\tmp_aeron_dir")
{
Remove-Partition -DriveLetter T -Confirm:$false
}
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
${{ runner.os == 'Windows' && 'echo "file=build/distributions/test_logs.tbz2" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append' || 'echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT' }}
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-${{ matrix.os }}-java-${{ matrix.java }}
path: ${{ steps.copy_test_logs.outputs.file }}
java-topology-build:
name: Java Topology Tests (JDK ${{ matrix.java }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
java: [ '17' ]
os: [ 'ubuntu-24.04' ]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" >> $GITHUB_ENV
- name: Setup virtual network interfaces
run: ./aeron-samples/scripts/cluster/setup-namespaces
- name: Build aeron with Gradle
run: ./gradlew clean assemble -x javadoc
- name: Run execution agents
working-directory: ./aeron-samples/scripts/cluster
run: ./agent-ns
- name: Get network information
run: |
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -F FORWARD
sudo iptables -P FORWARD ACCEPT
- name: Run topology tests with Gradle
run: ./gradlew topologyTest
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
${{ runner.os == 'Windows' && 'echo "file=build/distributions/test_logs.tbz2" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append' || 'echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT' }}
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-topology-${{ matrix.os }}-java-${{ matrix.java }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-gcc-2404-build:
name: C++ GCC ${{ matrix.version }} (Ubuntu 24.04)
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
version: [ '11', '12', '13', '14' ]
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++-${{ matrix.version }} libbsd-dev uuid-dev
- name: Setup small temp file system
run: |
sudo mkdir -p /mnt/tmp_aeron_dir
sudo mount -t tmpfs -o size=50M,mode=777 tmpfs /mnt/tmp_aeron_dir
- name: Build
run: cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --cxx-hide-deprecation-message
- name: Remove small temp file system
if: always()
run: |
sudo umount /mnt/tmp_aeron_dir
sudo rm -rf /mnt/tmp_aeron_dir
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-gcc-2404-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-gcc-rocky-build:
name: C++ Rocky 9
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
version: [ '13' ]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build
run: GCC_VERSION=${{ matrix.version }} cppbuild/rocky-docker-build
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-gcc-rhel-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-clang-ubuntu-2404-build:
name: C++ Clang ${{ matrix.version }} (Ubuntu 24.04)
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
version: [ '17', '18', '19', '20', '21', '22' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo mkdir -p /etc/apt/keyrings/
curl --retry ${INSTALL_COMPILER_RETRIES} https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/noble/ llvm-toolchain-noble-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }} libbsd-dev uuid-dev
- name: Setup small temp file system
run: |
sudo mkdir -p /mnt/tmp_aeron_dir
sudo mount -t tmpfs -o size=50M,mode=777 tmpfs /mnt/tmp_aeron_dir
- name: Build
run: cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --cxx-hide-deprecation-message
- name: Remove small temp file system
if: always()
run: |
sudo umount /mnt/tmp_aeron_dir
sudo rm -rf /mnt/tmp_aeron_dir
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-clang-2404-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-clang-debug-build:
name: C++ Clang ${{ matrix.version }} debug build
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
version: [ '22' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Install compiler
run: |
echo 'Acquire::Retries "${INSTALL_COMPILER_RETRIES}";' | sudo tee -a /etc/apt/apt.conf.d/99retries
sudo mkdir -p /etc/apt/keyrings/
curl --retry ${INSTALL_COMPILER_RETRIES} https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/noble/ llvm-toolchain-noble-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }} libbsd-dev uuid-dev
- name: Build
run: cppbuild/cppbuild --debug-build --cxx-hide-deprecation-message
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-clang-debug-${{ matrix.version }}
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-xcode-build:
name: C++ Xcode (macOS)
runs-on: macos-15
timeout-minutes: 60
env:
CC: clang
CXX: clang++
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Setup small temp file system and localhost name
run: |
sudo sed -i bak "s/localhost/localhost $(hostname)/" /etc/hosts
dscacheutil -flushcache
sudo diskutil eraseDisk APFS tmp_aeron_dir $(hdiutil attach -nomount ram://$((2 * 1024 * 60)))
- name: Build
run: cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --cxx-hide-deprecation-message
- name: Remove small temp file system
run: sudo diskutil eject tmp_aeron_dir
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" >> $GITHUB_OUTPUT
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-xcode-latest
path: ${{ steps.copy_test_logs.outputs.file }}
cpp-msvc-build:
name: C++ MSVC (Windows)
runs-on: windows-latest
timeout-minutes: 60
env:
CC: cl
CXX: cl
steps:
- name: Use faster temporary storage
run: |
echo "TMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "TEMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Use faster temporary storage (Windows)
run: |
echo "TMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "TEMP=$env:RUNNER_TEMP" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Disable CPU hogs
run: |
Set-MpPreference -DisableRealtimeMonitoring $true -Force
Add-MpPreference -ExclusionPath "C:\" -Force
Add-MpPreference -ExclusionPath "D:\" -Force
sc config wuauserv start= disabled
Stop-Service wuauserv -ErrorAction SilentlyContinue
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wsl.exe" /v Debugger /t REG_SZ /d "block.exe" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\CompatTelRunner.exe" /v Debugger /t REG_SZ /d "block.exe" /f
- name: Setup small temp file system
run: |
$current_size = (Get-PartitionSupportedSize -DiskNumber 1 -PartitionNumber 1)
$new_size = ($current_size.SizeMax - 100 * 1024 * 1024)
Resize-Partition -DiskNumber 1 -PartitionNumber 1 -Size ($new_size)
New-Partition -DiskNumber 1 -Size 60MB -DriveLetter T | Format-Volume -FileSystem NTFS -Confirm:$false
New-Item -ItemType Directory -Path T:\tmp_aeron_dir
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=$env:JAVA_HOME" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build
run: cppbuild/cppbuild.ps1 --c-warnings-as-errors --cxx-warnings-as-errors --cxx-hide-deprecation-message
- name: Remove small temp file system (Windows)
if: always()
run: |
if (Test-Path "T:\tmp_aeron_dir")
{
Remove-Partition -DriveLetter T -Confirm:$false
}
- name: Copy test logs
id: copy_test_logs
if: failure()
run: |
echo "file=build/distributions/test_logs.tbz2" | Out-File $env:GITHUB_OUTPUT -Encoding utf8 -Append
./gradlew tarTestLogs
- name: Upload crash logs
if: always() && steps.copy_test_logs.outputs.file == 'build/distributions/test_logs.tbz2'
uses: actions/upload-artifact@v5
with:
name: crash-logs-msvc-latest
path: ${{ steps.copy_test_logs.outputs.file }}
================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"
on:
workflow_call:
workflow_dispatch:
repository_dispatch:
types: run-commit-tests
push:
branches:
- master
- release/**
pull_request:
types: [opened, synchronize]
branches:
- master
- release/**
concurrency:
group: codeql-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
JAVA_VERSION: '17'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ java, cpp ]
steps:
- name: Checkout
uses: actions/checkout@v5
with:
ref: ${{ github.sha }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Install compiler
run: sudo apt-get install -y g++-14
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql/codeql-config.yml
packs: "codeql/${{ matrix.language }}-queries:AlertSuppression.ql"
- name: Autobuild
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
id: analyze
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"
upload: false
output: sarif-results
- name: filter-sarif
uses: advanced-security/filter-sarif@v1
with:
# Filter out generated and third party code.
patterns: |
-**/thirdparty/**
-**/generated/**
-**/generated-src/**
-**/generated-test/**
-**/_deps/**
-**/aeron-samples/**:java/uncaught-number-format-exception
-**/*Test.java:java/uncaught-number-format-exception
-**/*Tool.java:java/uncaught-number-format-exception
-**/*Debug*.java:java/uncaught-number-format-exception
input: sarif-results/${{ matrix.language }}.sarif
output: sarif-results/${{ matrix.language }}.sarif
- name: Upload SARIF
id: upload
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: sarif-results/${{ matrix.language }}.sarif
wait-for-processing: true
# optional: for debugging the uploaded sarif
- name: Upload loc as a Build Artifact
uses: actions/upload-artifact@v5
with:
name: sarif-results-${{ matrix.language }}
path: sarif-results
retention-days: 1
- name: Dismiss alerts
if: github.ref == 'refs/heads/master'
uses: advanced-security/dismiss-alerts@v2
with:
sarif-id: ${{ steps.upload.outputs.sarif-id }}
sarif-file: sarif-results/${{ matrix.language }}.sarif
env:
GITHUB_TOKEN: ${{ github.token }}
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
workflow_dispatch:
push:
tags:
- "*.*.*"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.warning.mode=fail'
JAVA_VERSION: '17'
jobs:
release-java:
name: Release java artifacts
permissions:
contents: read
packages: write
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.ref }}
- name: Setup java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ env.JAVA_VERSION }}" >> $GITHUB_ENV
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=17" >> $GITHUB_ENV
- name: Publish with Gradle
run: ./gradlew publish uploadArtifactsToCentralPortal
env:
SIGNING_GPG_SECRET_KEY: ${{ secrets.GPG_RSA_SIGN_KEY }}
SIGNING_GPG_PASSWORD: ${{ secrets.GPG_RSA_SIGN_KEYPASS }}
SONATYPE_CENTRAL_PORTAL_USERNAME: ${{ secrets.SONATYPE_CENTRAL_PORTAL_USERNAME }}
SONATYPE_CENTRAL_PORTAL_PASSWORD: ${{ secrets.SONATYPE_CENTRAL_PORTAL_PASSWORD }}
================================================
FILE: .gitignore
================================================
target
GTAGS
GRTAGS
GPATH
prop
out/
classes/
bin/
# OS X
.DS_Store
# eclipse
.project
.classpath
.settings
# intellij
*.iml
*.ipr
*.iws
.idea/
.run/
# editors
*.sublime-project
*.sublime-workspace
*~
# the build
build-local.properties
.gradle/
build/
!buildSrc/
!buildSrc/src/**/build
cmake-build-debug/
cmake-build-release/
cmake-build-debug-*/
cmake-build-release-*/
# cpp build linux
cppbuild/CMakeCache.txt
cppbuild/CMakeFiles/
cppbuild/CTestTestfile.cmake
cppbuild/Makefile
cppbuild/Testing/
cppbuild/aeron-common/
cppbuild/aeron-samples/
cppbuild/binaries/
cppbuild/cmake_install.cmake
cppbuild/cmake/
cppbuild/cmake*/
# cpp build windows
cppbuild/*.opensdf
cppbuild/*.sdf
cppbuild/*.sln
cppbuild/*.suo
cppbuild/*.vcxproj
cppbuild/*.filters
cppbuild/*.lastbuildstate
cppbuild/*.tlog
cppbuild/*.log
cppbuild/*.cache
cppbuild/Debug
cppbuild/Release
cppbuild/RelWithDebInfo
cppbuild/Win32
# JVM crash reports
hs_err_pid*
*.hprof
*-gc.log
*-crash.log
# Archive and Cluster data from system tests
/aeron-cluster/aeron-archive/
/aeron-cluster/aeron-cluster/
aeron-samples/scripts/cluster/logs/
aeron-samples/scripts/cluster/node*/
================================================
FILE: CHANGELOG.adoc
================================================
= Aeron Releases
== 1.51.0 (Unreleased)
=== New & Noteworthy
* **Breaking:** **[Cluster]** The classes RecordingLog.Snapshot, RecordingLog.Log and Recording.RecoveryPlan have been
changed from flat classes to records, so the data accessors are now methods and not fields.
* **Breaking:** **[Cluster]** Removed the `ClusteredServiceContainer.Context.standbySnapshotsEnabled` method. This
configuration is no longer required. It is controlled `ConsensusModule.Context.standbySnapshotsEnabled` configuration
option and is propagated across as this needs to be consistent across both agents.
=== Changelog
* **[Breaking]**: **[Client/C{plus}{plus} Wrapper]** Remove `close()` method from `Publication/ExclusivePublication`,
i.e. the underlying `aeron_publication_t/aeron_exclusive_publication_t` will be closed when the corresponding C++
object is destroyed.
* **[Client/C{plus}{plus} Wrapper]** Do not use locks for adding/removing destinations to `ExclusivePublication` and
`Subscription` since these classes are not threadsafe.
* **[Client/C]** Allow setting idle strategy on the `aeron_context`.
* **[Client/C{plus}{plus} Wrapper]** Set idle strategy on the underlying `aeron_context` using configured
`idleSleepDuration`.
* **[Client/C]** Close image before invoking unavailable handler when closing subscription.
* **[Client/C]** Client conductor should process one command at a time.
* **[Client/C]** Fix blocking logic of the `aeron_add_xxx_handler/aeron_remove_xxx_handler` methods, i.e. do not exit
early if client command queue is empty and instead retry until command is added and confirmed or timeout occurs.
* **[Client/C{plus}{plus} Wrapper]** Ensure that `Aeron` instance is deleted after all of its children are deleted.
* **[Client/C{plus}{plus} Wrapper]** Handle a case when a media driver dies/is stopped leading to the underlying
C-managed resources being closed, i.e. fix `AsyncAddSubscription` memory leak.
* **[Client/C{plus}{plus} Wrapper]** Fix pending `AsyncDestination` memory leak when not polled to completion.
* **[Driver/C]** Avoid double freeing memory when setting new idle strategy programmatically.
* **[C]** Fix `gradlew` invocation from `cmake`, i.e. fix `aeron-all.jar` generation when running inside CLion.
* **[Samples/Java]** Remove deprecated `UseBiasedLocking` JVM option.
* **[Cluster]** Backup query responses are now resolved using the most recent entry in the RecordingLog instead of being derived from the RecoveryPlan.
* **[Cluster]** When a ClusteredServiceAgent fails to start, e.g. from an exception during snapshot load, the ConsensusModuleAgent will also terminate with an error in the log. Previously this would hang indefinitely.
* **[Java Samples]** Added a sample for ReplayMerge.
* **[Java]** Avoid bind conflicts when removing and adding a subscription to the same channel.
(https://github.com/aeron-io/aeron/pull/1955[#1955])
* **[Driver/Java]** Close sockets on the conductor thread just like the C driver.
* **[Driver/C]** Fix memory leak whereby async commands submitted to the async executor were not freed upon driver
termination. (https://github.com/aeron-io/aeron/pull/1960[#1960])
* **[C{plus}{plus} Wrapper]** Cleanup pending async resources when `Aeron` client is closed, i.e. prevent a memory leak.
* **[C]** Refactor async resource registration in `aeron_client_conductor` to ensure proper cleanup if resource cannot
be added to the client conductor.
* **[Client]** Fixed a bug in the controlled fragment assemblers where their handler after aborting on a fragmented
message would receive on subsequent calls for that message a header with invalid position and fragmented frame length.
* **[Driver/C]** Fix data corruption resulting from `aeron_append_block` ignoring `term_offset`. (https://github.com/aeron-io/aeron/issues/1944[#1944])
* **[Driver]** Process pending loss without delays in case of an unreliable subscriber (`reliable=false`), i.e. do not
apply NAK delay if no recovery will be attempted. (https://github.com/aeron-io/aeron/issues/1946[#1946])
* **[Driver/Java]** Now replies with a `RESOURCE_TEMPORARILY_UNAVAILABLE` error when the endpoint is mid-closing (as in the C driver) when reuse would be unsafe and new endpoint/socket creation would lead to a bind error.
* **[Cluster Client/Java]** Now retries when a `RESOURCE_TEMPORARILY_UNAVAILABLE` error is encountered when creating an egress subscription.
* **[Cluster]** Enforce a maximum service count of 10. This limit has always existed in Cluster
but is now explicitly enforced via the ClusteredServiceContainer.Configuration.MAX_SERVICE_COUNT setting.
* **[Cluster]** Restores old behaviour around single-node cluster liveness timeouts. (https://github.com/aeron-io/aeron/pull/1947[#1947])
* **[Cluster]** Fix single-node cluster leader re-election which could happen after a stall or a time jump.
* Increase default cycle thresholds to 100ms as the previous value of 1ms was too short and their counts kept ticking up under normal conditions.
* **[Archive]** Fix `CATALOG_RESIZE` debug logging.
* **[C]** Renamed `aeron_archive_proxy_set_control_esssion_id` to `aeron_archive_proxy_set_control_session_id`.
* **[Java]** Upgrade to `Gradle` 9.4.1.
* **[Java]** Upgrade to `ByteBuddy` 1.18.7.
* **[Java]** Upgrade to `Mockito` 5.23.0.
* **[Java]** Upgrade to `JUnit` 6.0.3.
* **[Java]** Upgrade to `Checkstyle` 12.3.1.
* **[Java]** Upgrade to `Shadow` 9.4.0.
== 1.50.4 (2026-03-20)
* **[Breaking]**: **[Client/C{plus}{plus} Wrapper]** Remove `close()` method from `Publication/ExclusivePublication`,
i.e. the underlying `aeron_publication_t/aeron_exclusive_publication_t` will be closed when the corresponding C++
object is destroyed.
* **[Client/C{plus}{plus} Wrapper]** Do not use locks for adding/removing destinations to `ExclusivePublication` and
`Subscription` since these classes are not threadsafe.
* **[Client/C]** Allow setting idle strategy on the `aeron_context`.
* **[Client/C{plus}{plus} Wrapper]** Set idle strategy on the underlying `aeron_context` using configured
`idleSleepDuration`.
* **[Client/C]** Close image before invoking unavailable handler when closing subscription.
* **[Client/C]** Client conductor should process one command at a time.
* **[Client/C]** Fix blocking logic of the `aeron_add_xxx_handler/aeron_remove_xxx_handler` methods, i.e. do not exit
early if client command queue is empty and instead retry until command is added and confirmed or timeout occurs.
* **[Client/C{plus}{plus} Wrapper]** Ensure that `Aeron` instance is deleted after all of its children are deleted.
* **[Client/C{plus}{plus} Wrapper]** Handle a case when a media driver dies/is stopped leading to the underlying
C-managed resources being closed, i.e. fix `AsyncAddSubscription` memory leak.
* **[Client/C{plus}{plus} Wrapper]** Fix pending `AsyncDestination` memory leak when not polled to completion.
* **[Driver/C]** Avoid double freeing memory when setting new idle strategy programmatically.
* **[C]** Fix `gradlew` invocation from `cmake`, i.e. fix `aeron-all.jar` generation when running inside CLion.
* **[Samples/Java]** Remove deprecated `UseBiasedLocking` JVM option.
* **[Java]** Upgrade to `Gradle` 9.4.1.
* **[Java]** Upgrade to `Shadow` 9.4.0.
== 1.50.3 (2026-03-13)
* **[Java]** Avoid bind conflicts when removing and adding a subscription to the same channel.
(https://github.com/aeron-io/aeron/pull/1955[#1955])
* **[Driver/Java]** Close sockets on the conductor thread just like the C driver.
* **[Driver/C]** Fix memory leak whereby async commands submitted to the async executor were not freed upon driver
termination. (https://github.com/aeron-io/aeron/pull/1960[#1960])
* **[C{plus}{plus} Wrapper]** Cleanup pending async resources when `Aeron` client is closed, i.e. prevent a memory leak.
* **[C]** Refactor async resource registration in `aeron_client_conductor` to ensure proper cleanup if resource cannot
be added to the client conductor.
* **[Java]** Upgrade to `Gradle` 9.4.0.
* **[Java]** Upgrade to `ByteBuddy` 1.18.7.
* **[Java]** Upgrade to `Mockito` 5.23.0.
* **[Java]** Upgrade to `Shadow` 9.3.2.
== 1.50.2 (2026-02-27)
* **[Client]** Fixed a bug in the controlled fragment assemblers where their handler after aborting on a fragmented
message would receive on subsequent calls for that message a header with invalid position and fragmented frame length.
* **[Archive/C]** Fix typo in `aeron_archive_proxy_set_control_esssion_id` function name.
* **[Driver/C]** Fix data corruption resulting from `aeron_append_block` ignoring `term_offset`. (https://github.com/aeron-io/aeron/issues/1944[#1944])
* **[Driver]** Process pending loss without delays in case of an unreliable subscriber (`reliable=false`), i.e. do not
apply NAK delay if no recovery will be attempted. (https://github.com/aeron-io/aeron/issues/1946[#1946])
* **[Cluster]** Restores old behaviour around single-node cluster liveness timeouts. (https://github.com/aeron-io/aeron/pull/1947[#1947])
* **[Java]** Upgrade to `ByteBuddy` 1.18.5.
* **[Java]** Upgrade to `JUnit` 6.0.3.
* **[Java]** Upgrade to `Checkstyle` 12.3.1.
== 1.50.1 (2026-02-05)
* **[Cluster]** Fix single-node cluster leader re-election which could happen after a stall or a time jump.
* Increase default cycle thresholds to 100ms as the previous value of 1ms was too short and their counts kept ticking up under normal conditions.
* **[Archive]** Fix `CATALOG_RESIZE` debug logging.
== 1.50.0 (2026-01-16)
=== New & Noteworthy
* **[Breaking]**: **[C{plus}{plus}]** Remove deprecated standalone C{plus}{plus} API. The C{plus}{plus} Wrapper API should be used instead.
* The `interface` channel parameter now accepts network interface names in the `\{interface-name}` format, e.g. `interface=\{eth0}`.
+
When used with multicast channels, it specifies the interface to join with and send on.
+
The `interface` parameter might sometimes be used with non-multicast channels to control the local address of a socket.
In those cases, the socket will be bound to an address of an appropriate family assigned to the named interface.
If there are multiple matching addresses available, it's unspecified which one will be used.
+
It's also possible to specify the port used with the resolved address by using the `\{interface-name}:port` format.
=== Changelog
* **[Archive]** Do not set `session-id` on the replay channel if response channels are used to avoid `session-id` clash.
* **[Archive]** Default `AeronArchive.Context.Archive` instance is configured with `RethrowingErrorHandler` for Subscriptions.
* **[Archive]** Allow asynchronously connecting to Archive using AgentInvokers.
* **[Archive]** Format size and duration parameters when using `ChannelUriStringBuilder` to create full channel URI.
* **[Archive]** Use the configured control term buffer length for the replication client instead of hardcoding `64k`.
* **[Archive/Java/C/C{plus}{plus} Wrapper]** Make message retry attempts for `aeron_archive` configurable. (Java PR: https://github.com/aeron-io/aeron/pull/1885[#1885])
* **[Archive]** Ensure that errors from `ReplaySession` are both captured in the error log and sent to the control session. Improve error messages.
* **[Cluster]** Prevent fast follower node from consuming log ahead of the commit position when majority lags behind. (https://github.com/aeron-io/aeron/pull/1898[#1898])
* **[Cluster]** Prevent infinite loop while awaiting service ACKs if services terminated/crashed.
* **[Cluster]** Add reason to the `STATE_CHANGE` event. Always quote `reason` value across all events.
* **[Cluster]** Default `AeronCluster.Context.Archive` instance is configured with `RethrowingErrorHandler` for Subscriptions.
* **[Cluster]** Add support for `AgentInvoker`/`Aeron.conductorAgentInvoker` to `AeronCluster#asyncConnect`.
* **[Cluster]** Add log event for `Vote` message, i.e. a response to `RequestVote`.
* **[Cluster]** Handle quorum commit position going backwards.
* **[Cluster]** Make default Cluster consensus channel use UDP term length of the media driver instead of assigning `term-length=64k`. With the Aeron defaults this increases the term length from `64KB` to `16MB`.
* **[Cluster]** Unconditionally set `reliable=true` on the ingress subscription to ensure that the ingress stream is reliable.
* **[Cluster]** Ignore unknown schema messages (e.g. from Sequencer) in `EgressPoller`.
* **[Cluster]** Make `AeronCluster.asyncConnect` fully asynchronous by using `Aeron#asyncAddExclusivePublication/asyncAddPublication` API when dealing with redirect requests in case no valid existing leader publication was found.
* **[Cluster]** Reuse existing leader ingress publication if it is still valid when receiving redirect response.
* **[Cluster]** Only consider active members when computing `hasQuorumAtPosition`. We now always await for the active quorum of nodes o reach target position. Remove `hasVotersAtPosition` since it is no longer used.
* **[Cluster]** Refactor `isCandidate` checks and document why we must consider all existing members when doing so. We cannot check only the "active" nodes since that breaks the nomination phase whereby the nodes will stop proposing themselves as candidates once `timeOfLastAppendPositionNs` stops advancing.
* **[Cluster]** Only consider active Cluster members when computing the quorum position.
* **[Cluster]** Consistently update follower position, i.e. always set `logPosition`, `leadershipTermId` and `timeOfLastAppendPositionNs` together. Add missing update of the follower info upon receiving `CanvassPosition`.
* **[Cluster]** Increment snapshot counter after updating snapshot duration tracker to avoid a race in a test.
* **[Java/C]** Allow to specify network interface name in the interface channel parameter. (https://github.com/aeron-io/aeron/pull/1901[#1901])
* **[Driver]** Do not append threading mode to the name resolver cycle counters.
* **[C]** Fix threshold formatting + format threshold info for the name resolver cycle tracker.
* **[C]** Remove duty cycle threshold limit of 1 hour.
* **[C]** Format duty cycle threshold before adding to the driver counters.
* **[Java]** Use `SystemUtil#formatDuration` to format `threshold` for the duty cycle tracker counters.
* **[C]** Set `ownerId` for each stream counter created via client command (e.g. `ADD_PUBLICATION`).
* **[Java]** Set `ownerId` for each stream counter created via client command (e.g. `ADD_PUBLICATION`).
* **[Java]** Add Publication type to the counters and log buffer metadata, i.e. `pub-pos` counter now has a suffix (`(concurrent)` or `(exclusive)` depending on the type) and log buffer metadata contains a new field `type` (`unit8`) at offset 497 which can have values `0` (concurrent publication), `1` (exclusive publication) or `2` (publication image).
* **[C]** Add Publication type to the counters and log buffer metadata, i.e. `pub-pos` counter now has a suffix (`(concurrent)` or `(exclusive)` depending on the type) and log buffer metadata contains a new field `is_exclusive_publication` (`unit8`) at offset 497.
* **[Driver/C]** Increase sender/receiver IO vector capacity and publication max messages per send to `4` from `2`.
* **[C]** Do not throttle sends to one per call if short sends are encountered.
* **[Driver/C/Java]** Add `EF_VI`, `VMA`, `ATS`, `DPDK` and `Selector` counter types. Synchronize Java and C counter definitions.
* **[C]** Add `aeron_format_duration_ns`.
* **[C]** Add `aeron_format_size64`.
* **[C]** Refactor duration and size parsing.
* **[C]** Fixes data races on AERON_GET_ACQUIRE and AERON_SET_RELEASE usages. (https://github.com/aeron-io/aeron/pull/1902[#1902])
* **[C]** Fixes broken atomic instructions. (https://github.com/aeron-io/aeron/pull/1905[#1905])
* **[C]** Replace `__asm__ volatile` with `__asm__ __volatile__` just like in Linux kernel.
* **[C]** aeron_atomic64_gcc_x86_64.h acquire/release fixes (https://github.com/aeron-io/aeron/pull/1904[#1904])
* **[C]** Optimized register allocation aeron_atomic64_gcc_x86_64h (https://github.com/aeron-io/aeron/pull/1910[#1910])
* **[C]** Fix aeron_log_buffer.c mem leak (https://github.com/aeron-io/aeron/pull/1907[#1907])
* **[C]** Fixed aeron_agent_init role_name bugs. (https://github.com/aeron-io/aeron/pull/1908[#1908])
* **[C]** Do not resolve `endpoint` with ephemeral port for MDS subscription. Copy original channel as-is if no resolution is performed.
* **[Java]** Do not resolve `endpoint` with ephemeral port if MDS is used.
* **[Java]** Parse channel lazily when `tryResolveChannelEndpointPort` is called.
* **[Java]** Fix `Subscription#tryResolveChannelEndpointPort` when no addresses exist, i.e. return `null` if active address is not yet available. Also cache results and avoid doing any work if `endpoint` is not defined or does not contain a port zero.
* **[Java]** Fixed StatusIndicator deprecated method usage. (https://github.com/aeron-io/aeron/pull/1895[#1895])
* **[Java]** Replaced the AtomicCounter.getWeak usages by getPlain. (https://github.com/aeron-io/aeron/pull/1893[#1893])
* **[Java]** Replaced Counter.getAndAddOrdered by getAndAddRelease. (https://github.com/aeron-io/aeron/pull/1894[#1894])
* **[Java]** Add per-stream counters to `StreamStat` and extract counter name from label instead of relying on static mapping by type.
* **[C]** fix: double free in `aeron_archive_context_t`. (https://github.com/aeron-io/aeron/pull/1897[#1897])
* **[C]** Make `aeron_subscription_image_release` and `aeron_subscription_image_retain` no op if image is not found in the
current image list, i.e. handle a case of `on_unavailable_image` being called and attempting to retain an image that
was already removed (i.e. C{plus}{plus} Wrapper)).
* **[C]** invoke the client when in `aeron_archive_replay_merge_close`. (https://github.com/aeron-io/aeron/pull/1873[#1873])
* **[C]** Handle `aeron_archive_encoded_credentials_t` being `NULL` as well as `data` field being `NULL`, i.e. treat both as empty credentials.
* **[C]** Fix race condition in `aeron_archive_client` reentrancy check, i.e. first acquire lock and then do the check. Use
mutex to protect `aeron_archive_close` from concurrent execution.
* **[C]** Create `aeron_mutex_t` as recursive/reentrant on POSIX systems, i.e. match behavior on Windows and the Java implementation.
* **[C]** Fix missing mutex unlock in case of an error.
* **[Cluster]** Optimize redirect handling in `AeronCluster`: reuse existing publication if available and use async API
to connect to the leader otherwise.
* **[Cluster]** Protect against NPE during follower catchup if recording is stopped, because the leader transitions to a
follower and stops sending log.
* **[Driver/C]** Perform sender address re-resolution checks on a fixed schedule rather than awaiting next control
polling cycle, i.e. align behavior with the `Sender#doWork` implementation.
* **[Driver/Java]** Perform full name and address matching in driver name resolver. Add tests to ensure partial matches
are not allowed. Remove allocations when matching neighbors by address.
* **[Driver/C]** Fix segfault when invalid name resolver configuration is provided. Cleanup allocated resources to avoid
leaking memory.
* **[Driver/C]** Use `aeron_interface_parse_and_resolve` to resolve `aeron.driver.resolver.interface` parameter, i.e.
skip the `aeron_find_interface` checks. This aligns the implementation with the `DriverNameResolver` in Java. Fix
filtering out of self entries, i.e. use full name matching instead of a prefix match.
* **[C]** Add `aeron_is_frame_valid` method.
* **[C/Java]** Add all missing counter type constants for the premium components.
* **[C]** Do not truncate frames longer than 1408 bytes when logging, i.e. allow up to `AERON_MAX_UDP_PAYLOAD_LENGTH`
(`65504`) bytes instead.
* **[C]** Ensure that fallback `receiverId` cannot be zero.
* **[Java]** Improve mark file APIs: use high-level operations to signal ready/terminated, reset activity timestamp
upon failure, update tests to reflect activity timestamp changes during startup sequence.
* **[Java/C]** Fix formatting of large values and counter ids in `AeronStat`.
* **[Java/C]** Add dissector for the `ERR` (`0x04`) frame type.
* **[Java]** Add version information to `ComponentLogger` and print enabled loggers upon agent startup.
* **[C]** Print enabled loggers upon agent startup and their versions.
* **[C]** Add function to counter number of leading zeroes in 64 bit value (`aeron_number_of_leading_zeroes_u64`).
* **[C]** Add ability to counter number of digits in a 32-bit number (`aeron_digit_count`).
* **[C]** Link `aeron-client` against `libbsd`.
* **[Java]** Delete `DeduplicateTask`, i.e. use built-in capabilities of the Shadow plugin instead.
* **[Java]** Upgrade to https://github.com/aeron-io/agrona/releases/tag/2.4.0[Agrona 2.4.0].
* **[Java]** Upgrade to https://github.com/aeron-io/simple-binary-encoding/releases/tag/1.37.1[SBE 1.37.1].
* **[Java]** Upgrade to `ByteBuddy` 1.18.3.
* **[Java]** Upgrade to `ASM` 9.9.1.
* **[Java]** Upgrade to `JUnit` 6.0.2.
* **[Java]** Upgrade to `Mockito` 5.21.0.
* **[Java]** Upgrade to `Checkstyle` 12.3.0.
* **[Java]** Upgrade to `Shadow` 9.3.1.
* **[C]** Upgrade to `CMake` 4.2.1.
== 1.49.3 (2025-12-15)
* **[Cluster]** Ignore messages from unknown schemas (e.g. from Sequencer) in `EgressPoller`.
* **[Archive]** Ensure that errors from `ReplaySession` are both captured in the error log and sent to the control session.
* **[C]** fix double free in `aeron_archive_context_t`. (https://github.com/aeron-io/aeron/pull/1897[#1897])
* **[C]** Make `aeron_subscription_image_release` and `aeron_subscription_image_retain` no op if image is not found in the
current image list, i.e. handle a case of `on_unavailable_image` being called and attempting to retain an image that
was already removed (i.e. C{plus}{plus} Wrapper)).
* **[C]** invoke the client when in `aeron_archive_replay_merge_close`. (https://github.com/aeron-io/aeron/pull/1873[#1873])
* **[C]** Handle `aeron_archive_encoded_credentials_t` being `NULL` as well as `data` field being `NULL`, i.e. treat both as empty credentials.
* **[C]** Fix race condition in `aeron_archive_client` reentrancy check, i.e. first acquire lock and then do the check. Use
mutex to protect `aeron_archive_close` from concurrent execution.
* **[C]** Create `aeron_mutex_t` as recursive/reentrant on POSIX systems, i.e. match behavior on Windows and the Java implementation.
* **[C]** Fix missing mutex unlock in case of an error.
== 1.49.2 (2025-11-24)
* **[C]** Do not resolve `endpoint` with ephemeral port for MDS subscription. Copy original channel as-is if no
resolution is performed.
* **[Java]** Fix `Subscription#tryResolveChannelEndpointPort` when no addresses exist, i.e. return `null` if active
address is not yet available. Avoid doing any work if `endpoint` is not defined (IPC, MDS, response channel) or does not
contain a port zero.
* **[C]** Add `aeron_is_frame_valid` method.
* **[C/Java]** Add all missing counter type constants for the premium components.
* **[C]** Do not truncate frames longer than 1408 bytes when logging, i.e. allow up to `AERON_MAX_UDP_PAYLOAD_LENGTH`
(`65504`) bytes instead.
* **[C]** Ensure that fallback `receiverId` cannot be zero.
* **[Java]** Improve mark file APIs: use high-level operations to signal ready/terminated, reset activity timestamp
upon failure, update tests to reflect activity timestamp changes during startup sequence.
* **[Java/C]** Fix formatting of large values and counter ids in `AeronStat`.
* **[Java/C]** Add dissector for the `ERR` (`0x04`) frame type.
* **[Java]** Add version information to `ComponentLogger` and print enabled loggers upon agent startup.
* **[C]** Print enabled loggers upon agent startup and their versions.
* **[C]** Add function to counter number of leading zeroes in 64 bit value (`aeron_number_of_leading_zeroes_u64`).
* **[C]** Add ability to counter number of digits in a 32-bit number (`aeron_digit_count`).
* **[C]** Link `aeron-client` against `libbsd`.
* **[Java]** Delete `DeduplicateTask`, i.e. use built-in capabilities of the Shadow plugin instead.
* **[Java]** Upgrade to https://github.com/aeron-io/agrona/releases/tag/2.3.2[Agrona 2.3.2].
* **[Java]** Upgrade to https://github.com/aeron-io/simple-binary-encoding/releases/tag/1.36.2[SBE 1.36.2].
* **[Java]** Upgrade to `ByteBuddy` 1.17.8.
* **[Java]** Upgrade to `ASM` 9.9.
* **[Java]** Upgrade to `JUnit` 6.0.1.
* **[Java]** Upgrade to `Checkstyle` 12.1.1.
* **[C]** Upgrade to `CMake` 4.1.3.
== 1.49.1 (2025-11-01)
* **[Cluster]** Optimize redirect handling in `AeronCluster`: reuse existing publication if available and use async API
to connect to the leader otherwise.
* **[Cluster]** Protect against NPE during follower catchup if recording is stopped, because the leader transitions to a
follower and stops sending log.
* **[Driver/C]** Perform sender address re-resolution checks on a fixed schedule rather than awaiting next control
polling cycle, i.e. align behavior with the `Sender#doWork` implementation.
* **[Driver/Java]** Perform full name and address matching in driver name resolver. Add tests to ensure partial matches
are not allowed. Remove allocations when matching neighbors by address.
* **[Driver/C]** Fix segfault when invalid name resolver configuration is provided. Cleanup allocated resources to avoid
leaking memory.
* **[Driver/C]** Use `aeron_interface_parse_and_resolve` to resolve `aeron.driver.resolver.interface` parameter, i.e.
skip the `aeron_find_interface` checks. This aligns the implementation with the `DriverNameResolver` in Java. Fix
filtering out of self entries, i.e. use full name matching instead of a prefix match.
== 1.49.0 (2025-10-03)
=== New & Noteworthy
* **[Driver]** Support for IPC media was added to response channels. (https://github.com/aeron-io/aeron/issues/1761[#1761])
+
The feature works exactly the same as for UDP media but does not require `control` endpoint to be specified.
+
For an example see
https://github.com/aeron-io/aeron/blob/da9fffbd44676ed0a7d4bc0d874dbec2211dbc0f/aeron-system-tests/src/test/java/io/aeron/ResponseChannelsTest.java#L204-L272[ResponseChannelsTest#shouldConnectResponsePublicationUsingImageAndIpc].
* **[Driver]** Add support for `response-correlation-id=prototype` to allow pre-creating response publications to
reserve and hold onto a local port. (https://github.com/aeron-io/aeron/pull/1863[#1863])
+
For usage example see https://github.com/aeron-io/aeron/blob/807e947a511147d17561ce305b6d82f46624e4fd/aeron-system-tests/src/test/java/io/aeron/ResponseChannelsTest.java**[ResponseChannelsTest]**.
* **[Driver]** Add API to create counters asynchronously.
+
Counters can now be created asynchronously using `Aeron.asyncAddCounter` and `Aeron.asyncAddStaticCounter` methods.
Created counter is returned by the `Aeron.getCounter` method. There is also `Aeron.asyncRemoveCounter` to asynchronously
remove counter by `registrationId`.
+
For usage example see
https://github.com/aeron-io/aeron/blob/807e947a511147d17561ce305b6d82f46624e4fd/aeron-system-tests/src/test/java/io/aeron/CounterTest.java#L523[CounterTest#shouldAddCounterAsynchronously],
https://github.com/aeron-io/aeron/blob/807e947a511147d17561ce305b6d82f46624e4fd/aeron-system-tests/src/test/java/io/aeron/CounterTest.java#L561[CounterTest#shouldAddCounterAsynchronouslyUsingLabelAndTypeId]
and
https://github.com/aeron-io/aeron/blob/807e947a511147d17561ce305b6d82f46624e4fd/aeron-system-tests/src/test/java/io/aeron/CounterTest.java#L592[CounterTest#shouldAddStaticCounterAsynchronously].
* **[Archive]** Named Archive clients.
+
Client name can be specified using `AeronArchive.Context.clientName(java.lang.String)` API or
`aeron.archive.client.name` system property. Once specified the name will be sent to the Archive with connect request
along with additional information such as client version. Archive will add a new `control-session` counter
(`typeId=113`) for each connected client:
+
----
control-session: name=test client 5 version=1.49.0-SNAPSHOT commit=e79ebfa4ff sourceIdentity=127.0.0.1:51360 sessionId=1083930759 - archiveId=519
----
* **[Cluster]** Named Cluster clients.
+
Client name can be specified using `AeronCluster.Context.clientName(java.lang.String)` API or
`aeron.cluster.client.name` system property. Once specified the name will be sent to the Cluster with connect request
along with additional information such as client version. Cluster will add a new `cluster-session` counter
(`typeId=241`) for each connected client:
+
----
cluster-session: name=test client version=1.49.0-SNAPSHOT commit=4ac30af55a sourceIdentity=127.0.0.1:54444 sessionId=325223904 - clusterId=0
----
* **[Cluster]** Default Authorisation Service
+
Updated the default `AuthorisationService` to allow heartbeat and standby-snapshot requests, which are required for https://aeron.io/aeron-premium/aeron-cluster-standby/**[Aeron Cluster Standby]**.
* **[Breaking]** `org.agrona.concurrent.ShutdownSignalBarrier` changes in https://github.com/aeron-io/agrona/releases/tag/2.3.0[Agrona 2.3.0].
Please read the corresponding release notes on how to upgrade.
* **[Breaking]** `ClusteredServiceContainer.Context.shutdownSignalBarrier`, `ConsensusModule.Context.shutdownSignalBarrier`
and `ClusterBackup.Context.shutdownSignalBarrier` methods were removed and replaced with an explicit `ShutdownSignalBarrier`.
+
For example this is how `ConsensusModule#main` changed:
+
- Before:
+
[source,java]
----
public static void main(final String[] args)
{
loadPropertiesFiles(args);
try (ConsensusModule consensusModule = launch())
{
consensusModule.context().shutdownSignalBarrier().await();
System.out.println("Shutdown ConsensusModule...");
}
}
----
+
- After:
+
[source,java]
----
public static void main(final String[] args)
{
loadPropertiesFiles(args);
try (ShutdownSignalBarrier barrier = new ShutdownSignalBarrier();
ConsensusModule ignored = launch(new Context().terminationHook(barrier::signalAll)))
{
barrier.await();
System.out.println("Shutdown ConsensusModule...");
}
}
----
* **[Breaking]** Aeron jars no longer provide OSGI metadata as `bnd` plugin was removed, because it breaks
compatibility with Gradle 9.1 and causes self-dependency via `baseline` task.
=== Changelog
* **[Agent]** Make agent classes accessible outside of `io.aeron.agent` package.
* **[Agent]** Fix `CMD_IN_MAX_RECORDED_POSITION` logging.
* **[Agent]** Add `CLUSTER_SESSION_STATE_CHANGE` log event.
* **[Agent]** Add `APPEND_SESSION_OPEN` log event.
* **[Agent]** Remove `ADD_PASSIVE_MEMBER` log event.
* **[Agent/C]** Remove extraneous `]` suffix from log messages `CMD_IN_REMOVE_PUBLICATION`, `CMD_IN_REMOVE_SUBSCRIPTION` and `CMD_IN_REMOVE_COUNTER`.
* **[Agent/C]** Fix `UNTETHERED_SUBSCRIPTION_STATE_CHANGE` logging, i.e. log previous state and add missing logging to `aeron_publication_image`.
* **[Archive]** Allow for the archive to update the channel for a specific recording.
* **[Archive]** Return an error code when replaying and stopping an empty recording. (https://github.com/aeron-io/aeron/pull/1854[#1854])
* **[Archive]** Capture abort reason in `RecordingSession`.
* **[Archive]** Add additional "length" that will replay the data available, but not follow a live recording. Add more
appropriately named constants and update javadoc.
* **[Archive]** Ensure `AeronArchive.State.CLOSED` is used when `AeronArchive` instance is closed.
* **[Archive/C]** Close uri string builders upon error when concluding `aeron_archive_context`.
* **[Archive]** Adjust aliases on Archive streams for easier debugging.
* **[Archive/Driver/Cluster]** Lower `cycle threshold` for core components to `1ms` by default.
* **[Archive]** Add `ALLOW_ALL` and `DENY_ALL` authorisation supplier options for the Archive.
* **[Archive/C]** Add aeron_archive_wrapper's own sources to the `target_include_directories`.
* **[Archive]** Do not log a warning when control response publication is disconnected or a control request image is going
away, i.e. treat those events as normal client termination.
* **[Archive]** Copy `response-endpoint`, `ttl` and `stream-id` URI parameters from the original channel definition when creating recordings and replays.
* **[Client]** Add Sequencer counter types.
* **[Client]** Read `mtu` from the log buffer metadata only once.
* **[Client]** Provide additional context when log buffer cannot be mapped.
* **[Client]** Add `InternalApi` annotation.
* **[Client/C{plus}{plus} Wrapper]** Add missing assignment operator to match the copy constructor.
* **[Client/C]** Send `CLIENT_CLOSE` command to media driver when aeron is closing. (https://github.com/aeron-io/aeron/pull/1837[#1837])
* **[Client/C]** Fix client build to properly resolve `-DHAVE_BSDSTDLIB_H -DHAVE_ARC4RANDOM`.
* **[Cluster]** Update the default AuthorisationService to allow requests necessary for Cluster Standby. (https://github.com/aeron-io/aeron/pull/1870[#1870])
* **[Cluster]** Handle exception during snapshot, i.e. continue running if exception is non-terminal.
* **[Cluster]** Remove more references to membership changes/passive members/dynamic join.
* **[Cluster]** Re-create ingress publication upon redirect from a follower while connecting to the Cluster.
* **[Cluster]** Ensures proper handling when ingress publication is closed but not null. (https://github.com/aeron-io/aeron/pull/1861[#1861])
* **[Cluster]** Add more context for transitioning from `FOLLOWER_LOG_REPLAY` state.
* **[Cluster]** Add more context to `unexpected commit position` events.
* **[Cluster]** Add context to `unexpected commit position from new leader` event.
* **[Cluster]** Service snapshot time now includes time to serialize sessions and connect to the Archive.
* **[Cluster]** Only log `APPEND_SESSION_CLOSE` upon successful append to the log + reduce slow cycle frequency caused by
failed append attempts.
* **[Cluster]** Within the ClusterToolOperator bind the adapter before the publication and await for the subscription to be
bound to reduce the chance of the returning publication not being connected and rejecting the return message.
* **[Cluster]** Prevent standby replicated snapshots getting stuck if the address on the standby entry is invalid.
* **[Cluster]** Add `ALLOW_ALL` and `DENY_ALL` authorisation supplier options for the Cluster.
* **[Driver]** Fix incorrect update frequency in PublisherPos javadoc. (https://github.com/aeron-io/aeron/pull/1867[#1867])
* **[Driver]** Untethered subscriptions are closed after `LINGER` if `rejoin=false` is specified.
* **[Driver]** Correctly handle connection status updates for untethered IPC subscribers.
* **[Driver/C]** Ensure `rcv-naks-sent` counter is cleaned up if publication image creation fails.
* **[Driver/C]** Prevent sending empty NAK message upon initial connection to the publisher.
* **[Driver]** Set absolute minimum value for NAK unicast delay at `1us` and use it as a default value.
* **[Driver]** Ignore NAKs with zero length and treat NAKs with negative length as invalid packets.
* **[Driver/C]** Fix `untethered_linger_timeout_ns` parsing and validation. Remove `1us` min value that was applied when parsing untethered timeouts.
* **[Driver]** Validate `untetheredLingerTimeoutNs` not below `timerIntervalNs`.
* **[Driver/C]** Update documented NAK defaults.
* **[Driver/Java]** Do not overwrite `imageConnections` on every received packet.
* **[Driver/Java]** Stop processing errors when a receiver is found.
* **[Driver/Java]** Include `SIZE_OF_INT` in `keyLength` when allocating `ChannelEndpointStatus` counters. (https://github.com/aeron-io/aeron/pull/1844[#1844])
* **[Driver]** Add an ability to fetch next available session id from the media driver.
* **[Driver/C]** Fix system counter creation, i.e. assign `registrationId` and unset `ownerId` fields.
* **[Driver]** Add `Control protocol version` system counter.
* **[Driver/Java]** Detect `Address in use` errors synchronously when creating endpoints, issue https://github.com/aeron-io/aeron/issues/1830[#1830]. (https://github.com/aeron-io/aeron/pull/1842[#1842])
* **[Driver/C]** Error handling fixes for destination and endpoint creation.
* **[Driver/Java]** Handle more cases of `NumberFormatException` while parsing publication parameters.
* **[CI]** Add JDK 25.
* **[CI]** Add `Clang` 21 to the build matrix.
* **[CI]** Build on Rocky 9.
* **[Java]** Network Partition Testing. (https://github.com/aeron-io/aeron/pull/1858/[#1858])
* **[Java]** Upgrade to https://github.com/aeron-io/agrona/releases/tag/2.3.0[Agrona 2.3.0].
* **[Java]** Upgrade to https://github.com/aeron-io/simple-binary-encoding/releases/tag/1.36.0[SBE 1.36.0].
* **[Java]** Upgrade to `Gradle` 9.1.0.
* **[Java]** Upgrade to `ByteBuddy` 1.17.7.
* **[Java]** Upgrade to `Checkstyle` 11.1.0.
* **[Java]** Upgrade to `JUnit` 6.0.0.
* **[Java]** Upgrade to `Mockito` 5.20.0.
* **[Java]** Upgrade to `Shadow` 9.2.2.
* **[Java]** Upgrade to `Versions` 0.53.0.
* **[C]** Upgrade to `CMake` 4.1.2.
* **[C]** Upgrade to `HDR Histogram` 0.11.9.
== 1.48.10 (2025-11-21)
* **[C]** Add `aeron_is_frame_valid` method.
* **[C/Java]** Add all missing counter type constants for the premium components.
* **[C]** Do not truncate frames longer than 1408 bytes when logging, i.e. allow up to `AERON_MAX_UDP_PAYLOAD_LENGTH`
(`65504`) bytes instead.
* **[C]** Ensure that fallback `receiverId` cannot be zero.
* **[C]** Link `aeron-client` against `libbsd`.
== 1.48.9 (2025-11-11)
* **[Java]** Upgrade to `Shadow` 9.2.2 to fix duplicate classes issue in the uber-jar (i.e. `aeron-agent.jar` and
`aeron-all.jar`).
== 1.48.8 (2025-11-11)
=== Known issues
* Uber-jars `aeron-agent.jar` and `aeron-all.jar` contain duplicate classes. Fixed in
https://github.com/aeron-io/aeron/releases/tag/1.48.9[1.48.9].
=== Changelog
* **[Driver/Java/C]** Add log dissectors for `ERR` (`0x04`) frame type.
* **[Java]** Delete `DeduplicateTask`, i.e. use built-in capabilities of the `Shadow` plugin instead.
== 1.48.7 (2025-11-01)
* **[Driver/C]** Fix `UNTETHERED_SUBSCRIPTION_STATE_CHANGE` logging, i.e. log previous state and add missing logging to
`aeron_publication_image`.
* **[Driver/C]** Ensure `rcv-naks-sent` counter is cleaned up if publication image creation fails.
* **[Driver/C]** Prevent sending empty NAK message upon initial connection to the publisher.
* **[Driver/C]** Ignore NAKs with zero length and treat NAKs with negative length as invalid packets.
* **[Driver/Java]** Ignore NAKs with zero length and treat NAKs with negative length as invalid packets.
* **[Driver/Java]** Fix connectivity status handling in `NetworkPublication`, i.e. do not transition to `NOT_CONNECTED`
when the last remote subscriber disconnects if there is at least one spy and spies simulate connection (`ssc=true`).
* **[Driver/C]** Fix connectivity status handling in `aeron_network_publication`, i.e. do not transition to
`NOT_CONNECTED` when the last remote subscriber disconnects if there is at least one spy and spies simulate connection
(`ssc=true`).
* **[Driver/Java]** Handle connection status updates for untethered IPC subscribers.
* **[Driver/C]** Handle connection status updates for untethered IPC subscribers.
* **[Agent/C]** Remove extraneous `]` suffix from `CMD_IN_REMOVE_PUBLICATION`, `CMD_IN_REMOVE_SUBSCRIPTION` and
`CMD_IN_REMOVE_COUNTER` log events.
* **[Driver/C]** Perform sender address re-resolution checks on a fixed schedule rather than awaiting next control
polling cycle, i.e. align behavior with the `Sender#doWork` implementation.
* **[Driver/Java]** Perform full name and address matching in driver name resolver. Add tests to ensure partial matches
are not allowed. Remove allocations when matching neighbors by address.
* **[Driver/C]** Fix segfault when invalid name resolver configuration is provided. Cleanup allocated resources to avoid
leaking memory.
* **[Driver/C]** Use `aeron_interface_parse_and_resolve` to resolve `aeron.driver.resolver.interface` parameter, i.e.
skip the `aeron_find_interface` checks. This aligns the implementation with the `DriverNameResolver` in Java. Fix
filtering out of self entries, i.e. use full name matching instead of a prefix match.
== 1.48.6 (2025-08-08)
* **[Cluster]** Prevent standby replicated snapshots getting stuck if the address on the standby entry is invalid.
== 1.48.5 (2025-07-21)
* **[Java]** Add `ALLOW_ALL` and `DENY_ALL` authorisation supplier options for the Archive.
* **[Java]** Add `ALLOW_ALL` and `DENY_ALL` authorisation supplier options for the ConsensusModule.
* **[Archive]** Copy `response-endpoint`, `ttl` and `stream-id` URI parameters from the original channel definition when creating recordings and replays.
* **[Archive]** Do not abort `ControlSession` after it was closed and prevent multiple `abort` calls from overwriting each other.
* **[Archive]** Do not log warning when control response publication is disconnected or a control request image is going away, i.e. treat those events as normal client termination. To avoid unnecessary warnings when `AeronArchive` is being closed and there is a race between `close` message arriving at the Archive and images going unavailable or publication disconnecting.
* **[C]** Fix client build to properly resolve `-DHAVE_BSDSTDLIB_H -DHAVE_ARC4RANDOM`. (https://github.com/aeron-io/aeron/issues/1836[#1836])
* **[C]** Fallback to `/dev/urandom` if `arc4random` is not available.
* **[C]** Add aeron_archive_wrapper's own sources to the `target_include_directories`. (https://github.com/aeron-io/aeron/pull/1835[#1835])
* **[C]** Send client_close command to media driver when aeron is closing. (https://github.com/aeron-io/aeron/pull/1837[#1837])
* **[C]** Add missing assignment operator to match the copy constructor.
* **[C]** Error handling fixes for destination and endpoint creation.
* **[C]** Use static structs for holding loss state and cleanup dynamically allocated memory during initial load. (https://github.com/aeron-io/aeron/issues/1833[#1833])
* **[C]** Bump `CMake` to 4.0.3.
== 1.48.4 (2025-06-27)
* **[C]** Fix `aeron_cnc_is_file_length_sufficient`, i.e. take into account error buffer length. (https://github.com/aeron-io/aeron/issues/1828[#1828])
* **[C]** Preserve `agent_on_start_func` override during driver startup procedure. (https://github.com/aeron-io/aeron/issues/1826[#1826])
* **[C{plus}{plus} Wrapper]** Add methods to get the `registrationId` of an asynchronously created resource.
* *Breaking:* **[Cluster]** Allow `ConsensusModuleExtension` to do work while election is in progress. (https://github.com/aeron-io/aeron/pull/1827[#1827])
* **[Cluster]** Add `-ext` suffix to `ConsensusModuleExtension` archive client request and response channel aliases.
* **[Driver]** Add `fragmentedFrameLength` getter to `Header`. (https://github.com/aeron-io/aeron/issues/1829[#1829])
* **[AeronArchive]** Allow `NOT_CONNECTED` to be returned without throwing an exception before client is closed.
* **[Cluster]** Fix `ClusterToolOperator#queryClusterMembers` return value when query times out.
* **[Java]** Bump `Agrona` to https://github.com/aeron-io/agrona/releases/tag/2.2.4[2.2.4].
* **[Java]** Bump `SBE` to https://github.com/aeron-io/simple-binary-encoding/releases/tag/1.35.6[1.35.6].
* **[Java]** Bump `ByteBuddy` to 1.17.6
* **[Java]** Bump `Shadow` to 8.3.7.
* **[Java]** Bump `JUnit` to 5.13.2.
* **[Java]** Bump `Checkstyle` to 10.26.0.
* **[Java]** Bump `jgit` to 7.3.0.202506031305-r.
== 1.48.3 (2025-06-20)
* **[Java/C]** Use `untethered-linger-timeout` in IPC publications.
* **[Java]** Bump `Agrona` to 2.2.3.
* **[Java]** Bump `SBE` to 1.35.5.
== 1.48.2 (2025-06-12)
* **[Java/C/C{plus}{plus}]** Poll Archive client on slow duty cycle. (https://github.com/aeron-io/aeron/pull/1817[#1817])
* **[C]** Close send channel endpoints immediately once they have been released by the sender thread, don't wait for a managed resource cycle. (https://github.com/aeron-io/aeron/pull/1816[#1816])
* **[Java]** Cluster tool exit code bugfix. (https://github.com/aeron-io/aeron/pull/1818[#1818)]
* **[Java]** Fix IndexedReplicatedRecording LIVE_CHANNEL config (https://github.com/aeron-io/aeron/pull/1815[#1815])
* **[Java]** Bump `JUnit` to 5.13.1.
== 1.48.1 (2025-06-06)
* **[C{plus}{plus}]** Add warning that C{plus}{plus} API will be removed in 1.50.0.
* **[Java]** Publish artifacts to Central Portal using OSSRH Staging API.
* **[Java]** Bump `Agrona` to 2.2.2.
* **[Java]** Bump `SBE` to 1.35.3.
* **[Java]** Bump `JGit` to 7.2.1.202505142326-r.
* **[Java]** Bump `Checkstyle` to 1.25.0.
* **[Java]** Bump `Gradle` 8.14.2.
== 1.48.0 (2025-06-03)
=== Noteworthy Changes
* `ExclusivePublication#revoke`.
+
--
Release publisher and subscriber resources immediately with exclusive publication revoke. Publication will not linger and not allow any trailing loss to be resolved. Subscription will not wait for any data to be received.
NOTE: Media driver and client code (publisher and subscriber) must run Aeron 1.48.0 or higher.
--
+
For more information see https://github.com/aeron-io/aeron/wiki/Publication%23revoke[Publication#revoke] wiki page.
* `Image#reject`.
+
Reject incoming sessions from a publisher. This allows you to quickly stop data flow in scenarios where the data is no longer needed or is invalid.
+
For more information see https://github.com/aeron-io/aeron/wiki/Image%23reject[Image#reject] wiki page.
* Track connection status in `AeronCluster`.
+
--
`AeronCluster` now contains a state machine to track connection status. The state machine is updated during poll operations (`AeronCluster#pollEgress` and `AeronCluster#controlledPollEgress`) and while sending data to the Cluster (i.e. `AeronCluster#offer`, `AeronCluster#tryClaim`, `AeronCluster#sendKeepAlive`). If a break in communication is detected and it lasts for more than `AeronCluster.Context#newLeaderTimeoutNs()` then `AeronCluster` will close itself.
NOTE: When `AeronCluster.Context#newLeaderTimeoutNs()` is not set the `AeronCluster` will wait for double the *leadership timeout* from an actual Cluster. If that is not available (i.e. Cluster is running on an older Aeron version) then it will fallback to a 10 seconds default value, i.e. will wait for 20 seconds.
--
If `AeronCluster#ingressPublication` or `AeronCluster#egressSubscription` are used directly then it is a user responsibility to call new APIs in order to update the connection tracking state machine, i.e.:
** After each invocation of the `offer`/`tryClaim` on the `AeronCluster#ingressPublication` a call to `AeronCluster#trackIngressPublicationResult` must be made.
** Every time `AeronCluster#egressSubscription` is polled a call to `AeronCluster#pollStateChanges` must be made.
* Response channels GA.
+
Response channels have been promoted from experimental to General Availability. Users no longer need to enable experimental features to use this feature.
* C & C{plus}{plus} wrapper Archive client APIs GA.
+
--
The APIs have been promoted from experimental to General Availability, achieving feature-completeness and parity with Java.
NOTE: Old C{plus}{plus} APIs will be decommissioned in *1.50.0*.
--
* Per-stream NAK counters.
+
Two new stream-specific NAK counters where added:
+
** `snd-naks-received` (`typeId=19`) - tracks the number of NAKs received by the sender.
** `rcv-naks-sent` (`typeId=20`) - tracks the number of NAKs sent by the receiver.
* Affinity setting `AERON_DRIVER_ASYNC_EXECUTOR_CPU_AFFINITY` for async thread (`aeron_executor`) was removed.
* Retransmit Receiver Window Multiple
+
To avoid overwhelming receivers in the event of retransmissions, Aeron limits the amount of data sent in a single retransmission to a multiple of the receiver window. Previously, this multiple was 16 for unicast, 16 for min and tagged multicast, and 4 for max multicast. It now defaults to 16 for unicast, 4 for all multicast strategies, and can be configured with the properties `aeron.unicast.flow.control.rrwm` and `aeron.multicast.flow.control.rrwm`.
* Linger timeout
+
There is a new option to control how long untethered subscriptions will linger before being removed from flow control. If the new untethered linger timeout is not set, the default timeout is equal to the untethered window limit timeout. Previously, the untethered linger timeout was always equal to the window limit timeout. Now they can be changed independently. The new property name is `aeron.untethered.linger.timeout`. It can also be set via `untethered-linger-timeout` URI parameter.
=== Changelog
* **[Java]** Initialize `archiveId` early using CnC file if Aeron instance is not specified.
* **[Java]** Close extension's Archive client.
* **[Java]** Close snapshot replication before replay and recording are closed.
* **[Java]** Adjust archive client name based on the configuration.
* **[C]** Add client name for the implicit Aeron client created by the Archive client.
* **[Java]** Name implicit Aeron clients based on their usage.
* **[C]** Use `untethered-linger-timeout` on the receiver side.
* **[Java]** Store `untethered-linger-timeout` in the log buffer metadata.
* **[Java]** Fix a bug where `untethered-linger-timeout` was not added to the resulting URI.
* **[Java]** Use `untethered-linger-timeout` on the receiver side.
* **[Java]** Use `Publication#revoke` and `Image#reject` to close `ControlSession` resources.
* **[Java]** Use `Publication#revoke` to abort replay session.
* **[Java]** Don't through an exception when failing to copy a file within the data collector. This breaks other parts of the data collection on test failure (e.g. event log capture).
* **[C]** Flow control retransmit receiver window multiple for C driver. (#https://github.com/aeron-io/aeron/pull/1807[1807])
* **[C]** C version of untethered linger timeout. (#https://github.com/aeron-io/aeron/pull/1808[1808])
* **[Java]** Require `ArchiveThreadingMode.INVOKER` if MediaDriver is running in the invoker mode.
* **[Java/C]** Per stream NAKs. (#https://github.com/aeron-io/aeron/pull/1806[1806])
* **[Java]** Add separate linger timeout for untethered subscriptions. (#https://github.com/aeron-io/aeron/pull/1801[1801])
* **[Java/C]** `Publication#revoke`. (#https://github.com/aeron-io/aeron/pull/1781[1781])
* **[Java]** Make cluster publish leader heartbeat timeout to clients. (#https://github.com/aeron-io/aeron/pull/1805[1805])
* **[Java]** Require Aeron client to run in the invoker mode if MediaDriver is running with `ThreadingMode.INVOKER`, i.e. `Aeron.Context.useConductorAgentInvoker(true)` must be set when `Aeron.Context.driverAgentInvoker()` is set.
* **[Java]** Add event code type for sequencer.
* **[Java/C]** `Image#reject`. (#https://github.com/aeron-io/aeron/pull/1785[1785])
* **[Java]** Fsync `archive.catalog` file to disc when shutting down Archive.
* **[C]** Align flow control receiver timeout with Java, i.e. use `AERON_FLOW_CONTROL_RECEIVER_TIMEOUT` env variable instead of `AERON_MIN_MULTICAST_FLOW_CONTROL_RECEIVER_TIMEOUT`.
* **[Java]** Remove legacy `aeron.MinMulticastFlowControl.receiverTimeout` config option, i.e. use `aeron.flow.control.receiver.timeout` directly.
* **[C]** Remove experimental feature flag for response channels.
* **[Java]** Remove experimental option for response channels for the response channels.
* **[C]** MDC short send fix. (#https://github.com/aeron-io/aeron/pull/1770[1770])
* **[Java]** Flow control retransmit receiver window multiple (#https://github.com/aeron-io/aeron/pull/1800[1800])
* **[Java]** Prevent potential silent message loss on cluster ingress/egress.
* **[Java]** Make AeronCluster track connection status.
* **[Java]** Create new Ping message for archive client keepalive. (#https://github.com/aeron-io/aeron/pull/1799[1799])
* **[Java]** File page aligned mark files. (#https://github.com/aeron-io/aeron/pull/1789[1789])
* **[Java]** Increment snapshot counter after standby snapshots were successfully replicated.
* **[Config]** Update code style to reduce use of '.*' imports.
* **[Java]** Improve storage space exception detection.
* **[Java]** Properly check for EOS flag. (#https://github.com/aeron-io/aeron/pull/1795[1795])
* **[C]** Fix issue for untethered slow consumers impacting whole server. (#https://github.com/aeron-io/aeron/pull/1792[1792])
* **[C{plus}{plus} Wrapper]** Remove 'experimental' indicator for C/C{plus}{plus} wrapper archive APIs. (#https://github.com/aeron-io/aeron/pull/1793[1793])
* **[Java]** Refactor session liveness check.
* **[C]** Use `async-executor` name for the async thread, i.e. align with the Java impl.
* **[Java]** Use `async-executor` prefix for async threads.
* **[Bash]** Simplify thread affinity listing.
* **[Java]** Surface method to describe extension snapshot content in ClusterTool. Support printing snapshot entries as hex dumps.
* **[C{plus}{plus}]** Add `#include <cstdint>`.
* **[C{plus}{plus} Wrapper]** Add missing <cstdint> header. (#https://github.com/aeron-io/aeron/pull/1786[1786])
* **[C]** Remove affinity settings for the async thread (`aeron_executor`).
* **[Java]** Add TestIdleStrategy.
* **[Java]** Synchronize session ids across cluster nodes. (#https://github.com/aeron-io/aeron/pull/1774[1774])
* **[CI]** Add Clang 20 to the build matrix.
* **[C]** Call close_session in `archive_close()`. (#https://github.com/aeron-io/aeron/pull/1778[1778])
* **[Java]** Added close reason to consensus module extension call back on session close.
* **[C]** Create log buffers sparse by default.
* **[Java]** Create log buffers sparse by default.
* **[Java]** Add context to the disconnected control session warning message, i.e. show the response streamId/channel pair to help identify client that was disconnected.
* **[Java]** Use separate fragment assemblers for IPC and UDP inputs.
* **[C{plus}{plus} Wrapper]** Sync `addAliasIfAbsent` method to ChannelUri. (#https://github.com/aeron-io/aeron/pull/1755[1755])
* **[C{plus}{plus} Wrapper]** Allow setting the recording events channel. (#https://github.com/aeron-io/aeron/pull/1768[1768])
* **[Java]** Use `MarkFile#timestampRelease`.
* **[C{plus}{plus} Wrapper]** fix uri_buffer length in `Subscription.tryResolveChannelEndpointPort()`. (#https://github.com/aeron-io/aeron/pull/1767[1767])
* **[Java]** Don't report error if the publication is closed or not connected during replay.
* **[Doc]** Document the reserved range for Aeron counter typeIds. (#https://github.com/aeron-io/aeron/pull/1771[1771])
* **[Java]** Update `sub-pos` iff the image was not closed. Otherwise, the JVM might crash with `SIGSEGV` while accessing closed `Position`.
* **[CMake]** Only link to client for signal test.
* **[C]** Add TERM signal handling to C media driver and supporting test.
* **[C]** Add missing <mutex> header. (#https://github.com/aeron-io/aeron/pull/1765[1765])
* **[CI]** Enable JDK 24 GA.
* **[Java]** Do not send termination position to services if there aren't any.
* **[Java]** Assert that a rejected image will reconnect after a liveness timeout.
* **[C{plus}{plus}]** Use method references instead of capturing lambda to avoid warnings on Windows.
* **[C]** Align counter API with the Java implementation: - Rename `*volatile` methods to `*release`. - Rename all `*_ordered` methods to `*_release`. - Add missing `_plain` methods.
* **[Client]** Append block without modifying the underlying buffer, i.e. copy the entire block without the first header and the copy the header to complete write similar to `io.aeron.logbuffer.TermRebuilder.insert`.
* **[Java]** Simple test fixes. (#https://github.com/aeron-io/aeron/pull/1760[1760])
* **[Java]** Fix mock usage on JDK 21+.
* **[C{plus}{plus}]** More `#include <chrono>` fixes for Windows.
* **[C{plus}{plus} Wrapper]** Include `<chrono>` to fix compilation error on Windows.
* **[C]** Return an actual ref count value after increment/decrement operation completes + rename `aeron_image_refcnt_volatile` to `aeron_image_refcnt_acquire`.
* **[Java]** Switched to the new Agrona release functions. (#https://github.com/aeron-io/aeron/pull/1748[1748])
* **[C]** Tidy up image list handling in subscription.
* **[C]** Close an image when it is being removed from a subscription.
* **[C]** Call `aeron_subscription_is_connected` to force an image list change number update so that image/log buffers can be freed by the conductor thread.
* **[C]** Use `DeviceIoControl` to create sparse files.
* **[C]** Create files with `FILE_FLAG_POSIX_SEMANTICS` on Windows.
* **[C]** Specify `DELETE` access right when creating files on Windows.
* **[C{plus}{plus} Wrapper]** Handle potential exception from `std::make_shared`.
* **[C]** Use `FILE_ATTRIBUTE_SPARSE_FILE` upon file creation instead of using `DeviceIoControl`.
* **[C]** Use `SHFileOperation` to delete file on Windows.
* **[C]** Use `CreateFile` to open for r/w.
* **[C]** Use `CreateFile` on Windows and enable `FILE_SHARE_DELETE` sharing mode to allow file to be deleted even if open mappings exist.
* **[C{plus}{plus} Wrapper]** Remove definitions that shadow `aeron_logbuffer_descriptor.h` definitions.
* **[C{plus}{plus}]** Configure ARM support in `Platform.h`.
* **[C{plus}{plus} Wrapper]** Use randomized `aeron.dir` in `SystemTestParameterized`.
* **[C]** Use `aeron_format_date` function from `aeron_strutil.h`.
* **[C{plus}{plus} Wrapper]** Decrement ref count of an `Image` after it was created, because it was counted twice: once in the C code when looking the `aeron_image_t` and the second time by invoking `aeron_subscription_image_retain` inside the `Image` constructor.
* **[C{plus}{plus}]** Await until `image_available` callback is called.
* **[PowerShell]** CMake installation progress report.
* **[PowerShell]** Tidy up CMake installation.
* **[C]** Enable `--sanitise-build` on MacOS.
* **[Java]** Use null values when resetting descriptor.
* **[Java]** Use correlationId as sessionId.
* **[Java]** Remove Mockito MockMaker setting from aeron-cluster.
* **[Java]** Await recently added subscription in StreamStatTest. (#https://github.com/aeron-io/aeron/pull/1733[1733])
* **[C]** Make sure aeron_array_fast_unordered_remove is used correctly (fixes #https://github.com/aeron-io/aeron/issues/1728[1728]).
* **[Java]** Change log event for NAK received to use NAK length rather than packet length.
* **[C]** Fix var-args bug in error reporting.
* **[Java]** Bump `Agrona` to 2.2.1.
* **[Java]** Bump `SBE` to 1.35.1.
* **[Java]** Bump `Checkstyle` to 10.24.0.
* **[Java]** Bump `Gradle` to 8.14.1.
* **[Java]** Bump `ByteBuddy` to 1.17.5.
* **[Java]** Bump `JUnit` to 5.13.0.
* **[Java]** Bump `Mockito` to 5.18.0.
* **[Java]** Bump `ASM` to 9.8.
* **[C]** Bump `CMake` to 4.0.2.
== 1.47.7 (2025-08-08)
* **[Cluster]** Prevent standby replicated snapshots getting stuck if the address on the standby entry is invalid.
* **[Java]** Publish artifacts to Central Portal using OSSRH Staging API.
== 1.47.5 (2025-05-09)
* **[Driver]** Check if `EOS` flag bit is set instead of the entire mask. (https://github.com/aeron-io/aeron/pull/1795[#1795])
* **[Driver]** Record bytes lost in the loss report only once when a loss is detected, i.e. do not count the same loss when resending NAKs. (https://github.com/aeron-io/aeron/pull/1796[#1796])
* **[Driver]** Prevent NetworkPublication's `pub-lmt` from wrapping around into the dirty term. (https://github.com/aeron-io/aeron/pull/1794[#1794])
* **[Cluster]** Prevent ConsensusModule's state (`nextSessionId`) diverging between leader and follower nodes when a session is rejected during the authentication phase. (https://github.com/aeron-io/aeron/pull/1774[#1774])
* **[Cluster]** Only send TerminationAck to the leader that requested it. (https://github.com/aeron-io/aeron/pull/1797[#1797])
* **[Cluster]** Use separate fragment assemblers for IPC and UDP inputs.
* **[Client/C]** Do not update image list change number when retaining/releasing images as those can be called from a client conductor thread.
* **[Client/C{plus}{plus} Wrapper]** Use const on `Context.h` copy constructor.
* **[Archive Client/C]** Call `close_session()` in `archive_close()`. (https://github.com/aeron-io/aeron/pull/1778[#1778])
== 1.47.4 (2025-03-14)
* **[Driver]** Increment retransmit count only if data was actually sent.
* **[Cluster]** Fix buffer reference for ClusterMarkFile. (https://github.com/aeron-io/aeron/pull/1753[#1753])
* **[Cluster/Archive]** Protect against access to the closed mark file.
* **[Cluster/Archive]** Prevent JVM crash when opening an old version of the mark file (i.e. without a message header).
* **[C{plus}{plus} Wrapper]** Add an AsyncDestination type definition to Subscription.h. (https://github.com/aeron-io/aeron/pull/1749[#1749])
* **[C{plus}{plus} Wrapper]** Change wrapper version of the Context so that it does not hold a pointer to the underlying C context and track the values directly on the object and pass them through during init. Keep the pointer to the C context on the Aeron object to be properly cleaned up. (https://github.com/aeron-io/aeron/issues/1730[#1730])
* **[C]** Check that an image exists in the Subscription when retaining/releasing. (https://github.com/aeron-io/aeron/issues/1752[#1752])
== 1.47.3 (2025-02-14)
* **[Java]** Reset `ClusterBackup` state if the Cluster node from which `ClusterBackup` is replaying the log is "not available", i.e. either no longer eligible (i.e. after an election) or the backup query cannot be sent to it (e.g. `ConsensusModule` is down).
* **[Java]** Fix typo in ReplicationSession state change reason.
* **[C]** Adding setter/getter methods for CPU affinity to media driver. (https://github.com/aeron-io/aeron/pull/1737[#1737])
* **[C]** Support use of `sendmmsg()` without an address (i.e. when connect address is used). (https://github.com/aeron-io/aeron/pull/1742[#1742])
* **[C]** Close image when it is being removed from a subscription.
* **[C{plus}{plus} Wrapper]** Decrement ref count of an `Image` after it was created, because it was counted twice: once in the C code when looking the `aeron_image_t` and the second time by invoking `aeron_subscription_image_retain` inside the `Image` constructor.
* **[C{plus}{plus} Wrapper]** Remove definitions that shadow `aeron_logbuffer_descriptor.h` definitions. (https://github.com/aeron-io/aeron/issues/1740[#1740])
* **[Java]** Upgrade to Gradle 8.12.1.
* **[Java]** Upgrade to Shadow 8.3.6.
* **[Java]** Upgrade to Checkstyle 10.21.2.
* **[Java]** Upgrade to ByteBuddy 1.17.1.
== 1.47.2 (2025-01-30)
=== Known issues
* **[Java]** `ClusterBackup` might connect to two different Cluster nodes simultaneously whereby one is used to provide the live Raft log replay and to download the snapshots, whereas the other one is used to fetch the latest list of snapshot entries and the recording log metadata. As long as all of the Cluster nodes are "in sync" (i.e. have the same set of snapshots) then everything is ok. However, if the second node from which `ClusterBackup` fetches the snapshots was down for some time (i.e. does not have all of the snapshots) then the `ClusterBackup` might end up with a broken recording log whereby recording log entries will have a different log position to the underlying snapshot recordings.
+
Fixed in https://github.com/aeron-io/aeron/releases/tag/1.47.3[1.47.3].
=== Changelog
* **[Java]** Fix a regression in `AeronArchive#listRecording` which could return arbitrary recording information when the specified `recordingId` is not found (does not exist or state is not `VALID`) instead of sending back `ControlResponseCode.RECORDING_UNKNOWN`.
* **[C]** Apply `aeron.conductor.cpu.affinity` to the thead in `SHARED` threading mode and `aeron.sender.cpu.affinity` to sender/receiver thread in `SHARED_NETWORK` threading mode.
* **[C]** Add support for setting CPU affinity for the async executor thread (`aeron.driver.async.executor.cpu.affinity` property and `AERON_DRIVER_ASYNC_EXECUTOR_CPU_AFFINITY` env variable).
== 1.47.1 (2025-01-29)
=== Known issues
* **[Java]** `ClusterBackup` might connect to two different Cluster nodes simultaneously whereby one is used to provide the live Raft log replay and to download the snapshots, whereas the other one is used to fetch the latest list of snapshot entries and the recording log metadata. As long as all of the Cluster nodes are "in sync" (i.e. have the same set of snapshots) then everything is ok. However, if the second node from which `ClusterBackup` fetches the snapshots was down for some time (i.e. does not have all of the snapshots) then the `ClusterBackup` might end up with a broken recording log whereby recording log entries will have a different log position to the underlying snapshot recordings.
+
Fixed in https://github.com/aeron-io/aeron/releases/tag/1.47.3[1.47.3].
=== Changelog
* **[Java]** Fix Archive regression where sending descriptors (i.e. https://github.com/aeron-io/aeron/blob/429ca685762a582032ab383987a0e1e20fc410ad/aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java#L1452[AeronArchive#listRecording], https://github.com/aeron-io/aeron/blob/429ca685762a582032ab383987a0e1e20fc410ad/aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java#L1368[AeronArchive#listRecordings], https://github.com/aeron-io/aeron/blob/429ca685762a582032ab383987a0e1e20fc410ad/aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java#L1407[AeronArchive#listRecordingsForUri], https://github.com/aeron-io/aeron/blob/429ca685762a582032ab383987a0e1e20fc410ad/aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java#L1719[AeronArchive#listRecordingSubscriptions]) could result in corrupted or duplicate data to be returned.
* **[Java/C]** Send a new NAK if the gap length changes. (https://github.com/aeron-io/aeron/pull/1729[#1729])
* **[Java]** Update the archiveId in the mark file if it is set when concluding the context. (https://github.com/aeron-io/aeron/pull/1726[#1726])
* **[Java]** Fix java system test on Alpine (musl libc). (https://github.com/aeron-io/aeron/pull/1734[#1734])
* **[C]** Fix var-args bug in error reporting.
* **[C{plus}{plus}]** add aeronDir() method for context. (https://github.com/aeron-io/aeron/pull/1725[#1725])
* **[C{plus}{plus}]** Fix the issue with .h file imports in apron-client cpp_wrapper. (https://github.com/aeron-io/aeron/pull/1727[#1727])
* **[Java]** Upgrade to ByteBuddy 1.16.1.
== 1.47.0 (2025-01-17)
=== Important Update: Aeron is moving to a new GitHub organisation
Aeron is moving to a new GitHub organisation following its adoption by Adaptive in 2022. This transition marks a significant milestone in Aeron's journey, ensuring continued innovation and support for the world's leading low-latency message transport system.
You can find the new Aeron, SBE and Agrona repositories and all related resources at https://github.com/aeron-io[aeron-io].
All links to the previous repository location are automatically redirected to the new location.
However, to avoid confusion, we recommend updating any existing local clones to point to the new repository URL. You can do this by using `git remote` on the command line:
----
git remote set-url origin NEW_URL
----
Thank you for your continued support and contributions to the Aeron Open Source project.
=== Breaking changes
* **[Java]** Agrona upgrade contains breaking changes. See
https://github.com/aeron-io/agrona/releases/tag/2.0.0[Agrona 2.0.0 release notes].
NOTE: `--add-opens java.base/jdk.internal.misc=ALL-UNNAMED` JVM option must be specified in order to run Aeron. In
addition to `--add-opens java.base/java.util.zip=ALL-UNNAMED` that is required to running the Aeron Archive.
=== Noteworthy Changes
* Detect and terminate dormant Archive clients.
+
Archive will now send periodic heartbeat messages to each connected Archive client. By default, it is done once per
second and can be configured via `aeron.archive.session.liveness.check.interval` property or programmatically via
`io.aeron.archive.Archive.Context#sessionLivenessCheckIntervalNs(long)` method. If it detects that it cannot send such
a message for more than a connection timeout (i.e. `aeron.archive.connect.timeout`, defaults to 5 seconds) then it will
close the corresponding control session which will cause such Archive client to disconnect.
* Eliminate interference between Archive clients.
* C/C{plus}{plus} Wrapper implementation of the Archive client APIs.
+
In terms of feature completeness and stability, they are still marked experimental, as there's a small chance some of the functions might change as the feature is hardened. Furthermore, a number of the async APIs have yet to be implemented.
* Make the algorithm used for SecureRandom configurable and specify NativePRNGNonBlocking as the default. This stops the Archive from blocking when there is not sufficient entropy available.
* Fix duplicate service messages during failover/restart when using multiple services in Cluster.
+
When service messages are being sent from multiple services, these can be enqueued in different orders. This means during failover/restart pending messages can be skipped or duplicated when a new leader is elected.
+
NOTE: *Upgrade procedure:* Those affected will need to do a clean shutdown (with a snapshot) and restart the whole cluster with the fix.
* Invalidate Standby snapshots.
+
When invalidating latest snapshot both normal and Standby snapshots are taken into account. In order to prevent invalidated snapshots from being re-downloaded from the Standby node upon recovery.
* New log events for NAK messages sent and received.
+
`NAK_RECEIVED` logging event was added when a NAK request is received by the sender. An existing `SEND_NAK_MESSAGE` event was renamed to `NAK_SENT` and logs a NAK message being sent by the receiver.
* Prevent client process crashing by a pathologically slow consumer.
+
If a call to `Controlled/FragmentHandler#onFragment` blocks for disproportionate amount of time, i.e. long enough for an `Image` to become unavailable. Then the corresponding log buffer will freed by the client conductor thread. Any further access to the log buffer will cause the client process to segfault. The `Image` was updated to prevent any further access once it was closed.
=== Known issues
* **[Java]** `AeronArchive#listRecording/listRecordings/listRecordingsForUri/listRecordingSubscriptions` might return a wrong recording information upon `BACK_PRESSURED`/`ADMIN_ACTION` result when sending a recording descriptor.
+
Fixed in https://github.com/aeron-io/aeron/releases/tag/1.47.2[1.47.2].
* **[Java]** `ClusterBackup` might connect to two different Cluster nodes simultaneously whereby one is used to provide the live Raft log replay and to download the snapshots, whereas the other one is used to fetch the latest list of snapshot entries and the recording log metadata. As long as all of the Cluster nodes are "in sync" (i.e. have the same set of snapshots) then everything is ok. However, if the second node from which `ClusterBackup` fetches the snapshots was down for some time (i.e. does not have all of the snapshots) then the `ClusterBackup` might end up with a broken recording log whereby recording log entries will have a different log position to the underlying snapshot recordings.
+
Fixed in https://github.com/aeron-io/aeron/releases/tag/1.47.3[1.47.3].
=== Changelog
* **[Java]** Speedup `purgeSegments/deleteDetachedSegments` operations by only deleting files in a range between the current startPosition and the previous startPosition (purge) or the oldest existing segment file position (detached files).
* **[C]** Fix dangling pointer in replay merge. (#1723)
* **[Java]** Prevent segfaults through mark file API after close.
* **[Java]** Trigger slow build on push to master.
* **[Java]** Do not close Cluster archive when doing next rounds of backup queries since the replay might still be active. Also do not switch to `RESET_BACKUP` state unless the current Cluster node has switched its role and therefore is no longer eligible for replay.
* **[Java]** Use ClusterEvent instead of ClusterException with Category.WARN.
* **[Java]** Use ClusterEvent to report issues when stopping recording/replay + prevent an NPE when stopping a replay as `clusterArchive` could have been closed while in the BACKUP_QUERY stage.
* **[C/C{plus}{plus}]** Change interval of driver keepalive error reporting.
* **[C]** Update C driver to use the same matching logic as the Java driver for checking the validity of tagged publications and subscriptions.
* **[CI]** Core dump dir creation.
* **[CI]** Enable core dumps on Linux and MacOS.
* **[CI]** Collect Windows core dump files.
* **[CI]** Trigger slow build on PR.
* **[C]** compare publication stream id with link stream id when checking for matching spy subscriptions (#1722)
* **[CI]** Add `ubuntu-24.04-arm` to the build matrix for Java.
* **[CI]** Use env to store base Java version.
* **[Java]** Handle multiple PendingServiceMessageTrackers while producing consensus module patch.
* **[CI]** Simplify log upload.
* **[CI]** Fix crash log upload on Windows.
* Bug/fix error with tagged channels reresolution (#1720)
* **[C]** add a call to init the new fields in the logbuffer metadata (#1717)
* **[Java]** Add the few missing fields for logbuffer descriptor (#1721)
* **[Java]** Close temporary MarkFile when migrating from old version.
* **[Java]** Write message header before mark file header in the `cluster-mark.dat` file to be able to use SBE features based on the `actingBlockLength` and `actingVersion`.
* tidy up the namespace for exception_handler_t (#1715)
* **[C]** Handle connecting to Archive without credentials. (#1716)
* **[Java]** Write message header before mark file header in the `archive-mark.dat` file to be able to use SBE features based on the `actingBlockLength` and `actingVersion`.
* **[Java]** Fix config not found issue.
* **[Java]** Extract capturing lambda allocation to outside loop and yield when not making progress.
* Replacement of ThreadHints.onSpinWait by Thread. (#1713)
* **[Java]** Add `archiveId` to the ArchiveMarkFile.
* **[Java]** Fix an off-by-one error while searching for counters.
* **[Java]** Tidy up after #1711.
* **[Java]** Add a test for address re-resolution back to the initial IP address.
* fix resolution bug, when the new ip is back to udpChannel.remoteData, this can not be triggered `resolution changes` (#1711)
* **[Java]** Use different URI for early access JDK build.
* **[Java]** Fix Javadoc URI.
* **[Java]** Run Mockito as Java agent for JDK 23+ compatibility.
* **[CI]** Add JDK 23 to the build matrix.
* **[Java]** Change comment prevent JDK23 javadoc warning, FIX #1710.
* **[C]** Prevent double free of the aeron_exclusive_publication_t which is closed by the proxy.
* **[Java]** Poll for remote Archive errors while awaiting log recording session to be created.
* **[Java]** Add OS max/default values for SO_SNDBUF and SO_RCVBUF parameters to the log buffer metadata section.
* **[C]** Add OS default/max fields for the `OS_SNDBUF/OS_RCVBUF` to the log buffer metadata section.
* Fixes problem with socket snd/rcv buffer in logbuffer metadata. (#1707)
* **[Java]** Add method to convert error code to String.
* **[Java]** Remove remaining dynamic join APIs.
* **[Java]** Move config printing option to the CommonContext.
* **[Java]** Cleanup after #1705.
* rename the null value to compatible with C{plus}{plus} (#1705)
* **[Java]** Touch ups.
* Logbuffer metadata extra fields (#1700)
* **[C]** Rename `SEND_NAK_MESSAGE` to `NAK_SENT` so that it is symmetric with `NAK_SENT`
* **[C]** Add `AERON_DRIVER_EVENT_NAK_RECEIVED` event logging.
* **[Java]** Rename `SEND_NAK_MESSAGE` to `NAK_SENT` so that it is symmetric with `NAK_SENT`.
* **[Java]** Add log event for when a NAK message is received.
* Fix duplicate service messages during failover/restart when using multiple services (#1703)
* **[Java]** Change Tests.sleep so that it uses LockSupport.parkNanos to prevent catching of InterruptedException and clearing the interrupt flag.
* **[C]** Remove duplicate definition of aeron_semantic_version_compose. (#1701)
* **[Java]** Close AeronArchive client if control response Subscription is disconnected.
* **[Build]** correct release gradle cache path
* **[Java]** Rename IngressAdapter onFragment to onMessage and remove interface to provide more appropriate naming.
* **[Build]** Remove OSS c/c++ binary step in release workflow
* **[Java]** Simplify synchronous connect.
* **[Java]** Use Agrona Checksum classes.
* **[Java]** Emit WARN event when ControlSession is closed abruptly + add reason to the ControlSession state transition log + increase default stale session check interval to 1s.
* **[Java]** Fix `shouldRejoinAfterResting` test.
* **[Java]** Add isConnected to Subscription.toString.
* **[Java]** Add more detail to AeronArchive exception when subscription is not connected.
* **[Java]** Add test utility for stubbing addition of counters.
* **[C]** Close uri after parsing.
* **[C]** Fix printing of the error message.
* **[C]** Add `stream-id` and `pub-wnd` URI parameters.
* **[C]** Add `AERON_ERROR_CODE_IMAGE_REJECTED` and `AERON_ERROR_CODE_PUBLICATION_REVOKED` error codes.
* **[Java]** Add `IMAGE_REJECT` and `PUBLICATION_REVOKE` error codes.
* **[Java]** Fix a race condition in `shouldRecordThenBoundReplayWithCounter`.
* **[C]** Align logging for `aeron_driver_conductor_on_publication_error` with the Java implementation.
* **[Java]** Use AeronEvent when logging onPublicationError and add additional parameters.
* **[C{plus}{plus}]** Close broadcast_receiver to avoid leaking scratch buffer memory.
* **[C]** Make broadcast_receiver scratch buffer expandable to accommodate for large responses from the media driver.
* **[C]** Reset `aeron_uri_t` struct before parsing so that cleanup would not fail with a segfault.
* **[Java]** Validate that channel URI does not exceed 4095 characters.
* **[Java]** Allow client buffer to accept responses larger than 4KB.
* **[C]** Validate channel URI length, i.e. it cannot exceed 4095 characters.
* **[C]** Fix buffer potential buffer overflow on error.
* **[C]** Add `AERON_URI_MAX_LENGTH` and extend `AERON_MAX_PATH` to 4096 bytes + cleanup.
* **[CI]** Add Clang 19.
* **[Java]** Rename extension property in AeronCluster.Context.
* **[C{plus}{plus}]** Fix race conditions in Archive tests.
* **[Java]** Clarify Javadoc for `scheduleTime/cancelTimer` operations.
* **[Java]** Remove `ControlSessionDemuxer`.
* **[C]** Fix sender MTU validation.
* **[Java]** Fix error message for `SO_RCVBUF` validation.
* **[Java]** Fix `logReplicationSessionStateChange`.
* **[Java]** Validate that control publication is exclusive.
* **[C]** Align driver conductor duty cycle with the Java implementation.
* **[C]** Set not connected status immediately when network publication has no receivers.
* **[Java]** Set not connected status immediately when network publication has no receivers.
* **[Java]** invalidate standby snapshots inside `invalidateLatestSnapshot` (#1692)
* **[Java]** Add ClusterMember to the ConsensusModuleControl.
* **[Build]** Remove draft release notes
* **[Java]** Improve checkstyle config for javadoc and apply changes.
* Update checkstyle config for types.
* Upgrade Checkstyle and BND.
* **[Java]** Do not fail on heartbeat response.
* **[Java]** Timeout `ControlSession` if AeronArchive is not being polled.
* **[Java]** Image reject reason is stored as ASCII and shot be validated accordingly.
* **[C]** Update C{plus}{plus} test code to await Archive startup.
* **[C]** Use the same C code for the C{plus}{plus} wrapper tests.
* **[C]** Simplify Archive test setup.
* **[C]** Pass process handle variable into spawn/kill/await routines.
* **[C]** Await Archive startup + fix PID resolution on Windows.
* **[C]** More memory leak fixes.
* **[C]** Free idle strategy state if it is not explicitly assigned.
* **[C]** Close `aeron_uri_string_builder_t` to prevent a memory leak.
* **[C]** Add unique `session-id` to both request and response channels to ensure that different Archive clients are not blocking each other if not being polled. This only applies if response channel does not specify `control-mode=response`.
* **[C]** Fix `aeron_uri_string_builder`.
* **[C]** Move helper parsing functions to the `aeron_parse_util.h`.
* **[C]** Move `aeron_randomised_int32` implementation to `aeron_bitutil.c`.
* **[C]** Use signals to terminate Archive process.
* **[Java]** Make `RecordingLog.invalidateEntry` an O(1) operation and non-public.
* **[Java]** Ensure that ENTRY_TYPE_SNAPSHOT always sorted after ENTRY_TYPE_STANDBY_SNAPSHOT and ENTRY_TYPE_TERM.
* **[Java]** Move CRC classes to Agrona.
* **[Java]** Surface the clusterId in the ConsensusModuleControl interface.
* **[Java]** Add convenience method for determining if an endpoint uses a multicast address.
* **[Java]** Remove MDS channel transports when endpoint is closing.
* **[Java]** Make default secure random algorithm dependent on OS.
* **[Java]** Make the algorithm used for SecureRandom configurable and specify NativePRNGNonBlocking as the default.
* **[C]** Use the correct function point for on_request_setup when in non-shared modes.
* **[C]** add a README for the C Archive client
* **[C]** Use separate variable for disabling status messages.
* Remove function macro UINT8_C() from AERON_DATA_HEADER_UNFRAGMENTED definition. (#1685)
* **[Java]** Update RecoverPlan after standby snapshot replication completes with the replicated snapshot entries.
* **[Java]** Use subtract and compare to zero for all deadline calculations for consistency.
* **[Java]** Ensure that deadline checking is wrapping safe and use separate variable for disabling status messages.
* **[C]** Use next_sm_deadline_ns instead of last_sm_time_ns as the code is simpler and safer.
* **[Java]** Use nextSmDeadlineNs instead of lastSmTimeNs as the code is simpler and safer.
* **[C]** Fix image matching check on `stream_id` plus refactor.
* **[Java]** Do not log warning if the PublicationImage is active.
* **[Java]** Fix SM timeout check.
* **[C]** Stop sending status messages on draining/lingering images when a new publication image with the same channel/stream/session is created.
* **[Java]** Use more accurate check for sm timeout.
* **[Java]** Stop sending status messages on draining/lingering images when a new publication image with the same channel/stream/session is created.
* **[C]** Align send channel validation with Java.
* **[C]** Extract subscription matching logic and reuse across different methods.
* Undef if defined major() and minor() defined in sys/sysmacros.h (#1681)
* **[Java]** Send `appVersion` in the `NewLeadershipTerm`.
* **[C]** Align network subscription validation with the Java side + fix clashing subscription validation.
* **[C]** Extend subscription clash validation with a `isResponse` check, i.e. do not allow `control-mode=response` match a non-response subscription.
* **[Java]** Extend subscription clash validation with a `isResponse` check, i.e. do not allow `control-mode=response` match a non-response subscription.
* **[C]** Ensure that we use the incoming channel uri's control_mode to verify if it as response channel request when checking for clashing subscriptions.
* **[Java]** Enable response channels test.
* **[C]** Take into account `is_response` field when linking network Subscriptions.
* **[C]** Create wildcard session interest when `session-id` not specified.
* **[C]** Free allocated memory in `aeron_data_packet_dispatcher_add_subscription` in case of initialization error.
* **[Java]** Remove session id from response channel when replaying via response channels.
* **[Java]** Fix a race whereby subscription might try to add an image that was already removed when Aeron client gets shutdown.
* **[Java]** Modify receive channel matching by delegating to `isWildcardOrSessionIdMatch`, i.e. take into account `isResponse` flag.
* **[Java]** Capture complete AeronStat by delaying close after a test was executed.
* **[Java]** Check for errors before test-level cleanup callbacks are executed, i.e. ensure that we get access to the complete set of counters before things are being closed.
* **[Java]** Add unique `session-id` to both request and response channels to ensure that different Archive clients are not blocking each other if not being polled. This only applies if response channel does not specify `control-mode=response`.
* enterElection reason message tidy up. (#1677)
* **[C]** Prevent a segfault caused by a pathologically slow consumer, i.e. when a call to `Controlled/FragmentHandler#onFragment` blocks until an Image becomes unavailable and the corresponding log buffers are being freed by the client conductor.
* **[Java]** Increase resting timeout to trigger the segfault condition.
* **[Java]** Add PathologicallySlowConsumerTest.
* **[Java]** Prevent a process segfault caused by a pathologically slow consumer, i.e. when a call to `Controlled/FragmentHandler#onFragment` blocks until an Image becomes unavailable and the corresponding log buffers are being freed by the client conductor.
* **[Java]** Deprecate `aeron.cluster.members.ignore.snapshot` property.
* **[Java]** Add commit position counter id to ConsensusModuleControl interface.
* **[Java]** Generate unique control response stream id for AeronArchive in the Cluster. (#1670)
* Use provided credentials on standby snapshot (#1674)
* **[Java]** Support time travel Cluster tests.
* **[Java]** Extend test to assert actual position recovery.
* Tethering join position (#1672)
* cppbuild exitcode=1 when unknown arg. (#1673)
* **[Java]** Send recording descriptors the same way other responses are sent, i.e. retry on failure and preserve relative order of the responses.
* **[Build]** Replace use of 7-zip in cppbuild.ps1 with the PowerShell built-in Expand-Archive.
* **[Java]** Use `term-length=64k` for the local control request/response channels.
* **[Java]** Add additional information that is useful for debugging, include the name of the aeron directory on the MediaDriver toString and the thread name for the background executor thread.
* **[Java]** Use `sendErrorResponse` when sending errors back from the Archive.
* **[Java]** Remove ControlResponseProxy parameter.
* **[Java]** Schedule RecordingSignal sending the same way the responses are scheduled.
* **[Java]** Track total snapshot duration on follower nodes.
* **[C]** Do not fail fast on I/O exceptions in the send/receive path, i.e. process remaining transports/publications/destinations in the same duty cycle.
* **[Java]** Do not fail fast on IOExceptions in the send/receive path, i.e. process remaining transports/publications/destinations in the same duty cycle.
* **[Java]** Add end-to-end test for session interest fix.
* **[Java]** Count bytes received when the number of transports exceeds `TransportPoller#ITERATION_THRESHOLD`.
* **[Java]** Add testing callback that will put the test method name onto the thread name.
* **[Java]** Do not refine response channel for a ClusterSession during a replay or loading of a snapshot.
* **[C]** Check subscribed sessions before removing a stream interest before removing by stream_id.
* **[build]** remove .CMakeLists.txt.swp
* **[Java]** Assert that synchronous ControlSession calls are only allowed from a conductor thread.
* **[Java]** Fix race with new Image becoming available while reject errors are asserted.
* **[Java]** Add debug wrapper for `messageTimeout`.
* **[Java]** Remove expensive file existence checks when scheduling segment file deletion.
* **[Java]** Delete segment files without renaming so that conductor thread will not be blocked for a long period of time.
* **[C]** Use plain read and write of the "begin" field in Dekker's algorithm as it is properly fenced.
* **[Java]** Use plain read and write of the "begin" field in Dekker's algorithm as it is properly fenced.
* **[Java]** Fix endianness when accessing string fields.
* **[C]** Rename `AERON_GET_VOLATILE -> AERON_GET_ACQUIRE` and `AERON_PUT_ORDERED -> AERON_SET_RELEASE` to reflect the actual semantics of those operations and to match the naming of the Java APIs.
* **[C]** Remove `AERON_PUT_VOLATILE`.
* **[C]** Optimize SM and loss handling by using acquire/release operations with fences.
* **[Java]** Optimize SM and loss handling by using acquire/release operations with fences.
* **[Java]** Keep publishing position updates from canvass and into nominate state so other cluster node members can take action in extended election timeout durations.
* **[Java]** Make it clear that appointed leader config is a testing feature only.
* **[Java]** Don't return error when stopReplay is called on a replay that does not exist (likely already stopped).
* **[Gradle]** Disable auto detection of JVMs to force a specific JVM for test execution in CI.
* **[Java]** Update Cluster documentation around operations that require looping until success.
* **[Java]** Tidy up incrementing of ClusterBackup snapshot counter.
* **[Java]** Expose a counter on the Cluster Backup to track the number of snapshots downloaded.
* **[Java]** Have ClusterTool.describeLatestConsensusModuleSnapshot return an indication of failure or success.
* **[Java]** Migrate atomic field updaters to var handles.
* **[Java]** Use storeStoreFence in HeaderWriter now VarHandle is available.
* **[Java]** Move CapturingPrintStream to test-support.
* **[Java]** Await client error before asserting static counter state.
* **[Java]** Suppress Checkstyle LineLength for package-info.java files.
* **[Java]** Suppress Checkstyle LineLength for package-info.java files.
* **[Java]** Update schema reference (#1664)
* **[Java]** Cluster tool refactoring to allow extensions (#1665)
* **[Java]** Introduce VarHandles to begin replacing atomic field updaters.
* **[Archive]**Enhance the ArchiveTool.delete-orphaned-segments method (#1661)
* **[Gradle]** Simplify version management.
* **[Java]** More robust checking of symbolic links.
* **[Java]** Ensure that DataCollector does not traverse symbolic links when finding files.
* **[Java]** Use typesafe version catalogs.
* **[Git]** Exclude `buildSrc`.
* **[Build]** Correctly disable deprecation message in the Windows build.
* **[Build]** Add deprecation message to C{plus}{plus} API.
* **[Java]** Include an explicit name to the NameResolver interface to aid logging/debugging.
* **[Java]** Use unique `session-id` when creating live log recording and replaying data from the Cluster to ensure that the old replay data is not being picked up upon restart/reset.
* **[Java]** Update ClusterTest.shouldCatchupFollowerWithSlowService to account for fragment limits and being unresponsive due to some OSs sleeping for 16ms rather than the requested 1ms.
* **[Java]** Poll for archive response when loading snapshot any time a break occurs.
* **[Java]** Support consensus module snapshot extension.
* Error Frames and User Image Invalidation (#1604)
* **[C]** Add REMOVE_BY_DESTINATION_ID to debug logging.
* **[Java]** Add REMOVE_BY_DESTINATION_ID to debug logging.
* **[Java]** Upgrade to Agrona 2.0.1.
* **[Java]** Upgrade to SBE 1.34.1.
* **[Java]** Upgrade to ByteBuddy 1.15.11.
* **[Java]** Upgrade to JUnit 5.11.4.
* **[Java]** Upgrade to Mockito 5.15.2.
* **[Java]** Upgrade to Checkstyle 10.21.1.
* **[Java]** Upgrade to Gradle 8.11.1.
* **[Java]** Upgrade to Shadow 8.3.5.
== 1.46.8 (2025-01-13)
* **[Java]** Re-resolve endpoint address when address changes back to the original one. (https://github.com/aeron-io/aeron/pull/1711[#1711])
* **[Java]** Update RecoverPlan after standby snapshot replication completes with the replicated snapshot entries.
== 1.46.7 (2024-10-25)
* **[Java]** Prevent an untethered subscription re-joining the stream at an old position.
== 1.46.6 (2024-10-15)
* **[Java]** Fix a performance regression in `ControlTransportPoller/DataTransportPoller` when the number of transports is larger than five, i.e. the `bytesReceived` count was zero and as a result `IdleStrategy.idle()` was invoked on each duty cycle.
* **[Java]** Assert that synchronous ControlSession calls are only allowed from a conductor thread.
* **[C]** Check subscribed sessions before removing a stream interest before removing by stream_id.
* **[Java/C]** Do not fail fast on I/O exceptions in the send/receive path, i.e. process remaining transports/publications/destinations in the same duty cycle.
* **[Java]** Make it clear that appointed leader config is a testing feature only.
* **[Java]** Keep publishing position updates from canvass and into nominate state so other cluster node members can take action in extended election timeout duration.
* **[Java]** Track total snapshot duration on the follower nodes.
* **[Java]** Upgrade to Agrona 1.23.1.
== 1.46.5 (2024-09-28)
* **[Java]** Delete segment files without renaming so that the Archive conductor thread will not be blocked for a long period of time.
* **[Java]** Remove expensive file existence checks when scheduling segment file deletion.
== 1.46.4 (2024-09-24)
* **[C]** Align loss and SMs handling between Java and C media drivers.
== 1.46.2 (2024-09-11)
* **[Java]** Fix ClusterBackup issue whereby upon restart it could end up reading data from the previously started replay thus failing to recover the log.
== 1.46.1 (2024-08-30)
* **[Java]** Fail build on JavaDoc errors.
* **[Java]** Remove Nashorn dependency.
* **[Java]** Upgrade to Checkstyle 10.18.0.
* **[Java]** Upgrade to Mockito 5.13.0.
* **[Java]** Upgrade to ByteBuddy 1.15.1.
== 1.46.0 (2024-08-24)
=== Breaking changes
NOTE: *JDK 17 is required for compiling and running!*
=== Changelog
* **[Java]** Use new Selector API and fix samples.
* **[Java]** Fix config validation on JDK 17 by using an external Nashorn ScriptEngine.
* **[CI]** Execute tests using `ubuntu-24.04` and `macos-latest`.
* **[Java]** Upgrade to Agrona 1.23.0.
* **[Java]** Upgrade to SBE 1.33.0.
* **[Java]** Upgrade to Gradle 8.10.
* **[Java]** Upgrade to ByteBuddy 1.15.0.
* **[Java]** Upgrade to Shadow 8.3.0.
* **[Java]** Upgrade to bnd 7.0.0.
* **[Java]** Upgrade to Mockito 5.12.0.
* **[Java]** Upgrade to AsciiDoctor 2.5.13.
* **[Java]** Upgrade to JGit 6.10.0.202406032230-r.
* **[Java]** Force ASM 9.7.
== 1.45.2 (2025-09-26)
* **[Java]** Backport Image changes to protect against stalled subscribers.
* **[Java]** Backport releasing to Maven Central Portal.
* **[C/C{plus}{plus} Wrapper]** Include `<chrono>` to fix compilation error on Windows.
* **[CI]** Build changes to support new release process.
== 1.45.1 (2024-10-24)
* **[Java]** Prevent an untethered subscription re-joining the stream at an old position.
== 1.45.0 (2024-08-21)
=== Noteworthy Changes
* Per-Stream Session Limits
+
Allows users to limit the number of different sessions (i.e. distinct publication images) that can be created connecting to the same subscription (channel & stream). This can be used to avoid resource exhaustion the driver hosting the subscription, when clients on other drivers are over zealously creating publications.
* Infer Group Subscriptions for Recovery Behaviour
+
When using Multi-Destination Cast, if the user wants to make use of group semantics for nakking and retransmission, then previously group=true needed to be added to the channel configuration on the subscription. Failing to do so would potentially cause excessive nakking. This feature will set a flag on the SETUP message that the subscription can use to automate the setting of this configuration option. Setting group=true/false will override the derived value.
* Static Counters
+
Add new API to create static counters whose lifetime is decoupled from an Aeron client instance that created them. Unlike the normal counters which are deleted when an Aeron client is closed or times out, the static counters remain valid until the MediaDriver is closed.
+
Static counters are similar to the system counters which are created by the MediaDriver upon startup. Such counters cannot be delete and only one instance of each counter can exist per MediaDriver instance. A static counter is identified by a tuple <typeId, registrationId> which are specified at the creation time. Calling addStaticCounter with the same <typeId, registrationId> multiple times will only create a counter once with subsequent calls returning the id of an existing counter. An exception will be thrown upon an attempt to specify <typeId, registrationId> of an existing non-static counter.
* Archive Integration of Response Channels
+
Users of the AeronArchive client can make use of response channels for control, replay and replication communication paths.
* Archive Logging Improvements
+
To increase visiblity of replay and recording session state changes.
+
Enable either REPLAY_SESSION_STATE_CHANGE or RECORDING_SESSION_STATE_CHANGE when configuring the aeron agent.
* ReplayMerge Backoff
**To slow down internal state transitions that involve calls to ‘get max recorded position’.
** Reduces network traffic.
** Greatly reduces log output when debugging is enabled.
* RetransmitHandler Improvements
+
On unicast channels, a received NAK may immediately replace a previous received NAK so long as the offset has increased.
* Retransmitted Bytes Counter
+
To understand network conditions, it can be useful to know how many bytes have been retransmitted due to reception of NAKs.
+
We have exposed a new counter “Retransmitted bytes”, which serves as an approximate indicator of this information.
+
The counter only approximates the true value, as MDC retransmits are only recorded once, rather than N times (once for each destination). It is also worth noting that the retransmitted bytes are not included in the total bytes sent counter value. We may improve these aspects in the future.
* C{plus}{plus} API Deprecation
+
Aeron currently has two C{plus}{plus} APIs, a pure C{plus}{plus} version and a wrapper over the C API. This release we are no longer adding new features to the C{plus}{plus} API. This include being able to offer raw `uint8_t *` values and the new static counters feature.
=== Changelog
* **[Java Cluster]** IngressAdapter to delegate to ConsensusModuleAgent when schema id is unknown
* **[C{plus}{plus} Wrapper]** Correctly implement tracking of context on the header.
* **[C/C{plus}{plus}]** Do not compile with `-Ofast` compilation level.
* **[C/C{plus}{plus}]** Pass custom optimization level to the MSVC compiler.
* **[Build]** Download and install CMake as part of the build process to ensure latest version of CMake.
* **[C]** Tidy up aeron_reallocf to work correctly on allocation failure.
* **[C Driver]** Expose try_connect_stream method for use from within ATS.
* **[C Driver]** Remove unconnected stream message.
* **[C Driver]** Fix string format for AERON_SET_ERROR arguments.
* **[C/C{plus}{plus}/Java]** Add per channel untethered window limit and resting timeouts (#1588)
* **[C{plus}{plus} Wrapper]** Add findByTypeIdAndRegistrationId to C{plus}{plus} Wrapper.
* **[Java Driver]** Pre-start async task executor threads to avoid inheriting affinity from the conductor thread.
* **[Java Cluster]** Print `serviceId` when throwing "ack out of sequence" exception.
* **[C{plus}{plus}]** Fixed set thread name. (#1594)
* **[Java/C{plus}{plus} Archive]** Use response channels in the Archive Client (#1560)
* **[PS]** Add Powershell script for Windows build.
* **[C/Java Driver]** Do not resolve self hostname when starting MediaDriver to avoid a DNS-induced stall. Make `resolverName` required when driver name resolution is used.
* **[Java/C/C{plus}{plus} Client]** Propagate context though assembled header when using the buffer builder.
* **[Java]** Fix FixedLossGenerator to not drop frames before the specified "drop region".
* **[C/Java Driver]** Expose counter for number of bytes retransmitted.
* **[Java Cluster]** Remove redundant param.
* **[C]** Move validation earlier in the flow to prevents leaks in ATS on validation failure.
* **[Java Samples]** Use context instead of image by session id to resolve Image on request message.
* **[C/Java Driver]** Add session limits for a stream to prevent resource exhaustion of resources on drivers hosting subscriptions (#1598)
* **[Java Cluster]** Add support for installing schema extensions into the ConsensusModule.
* **[Java Samples]** Change response channels sample to use controlled poll to prevent response channel test failures.
* **[Java]** Add some additional error test to ReplayMerge and test for concurrent ReplayMerges along with additional error reporting.
* **[C{plus}{plus} Archive]** Rethrow original exception in ReplayMerge so information is not lost. #1587
* **[C]** add and use aeron_mkdir_recursive (#1602)
* **[Java]** Version interface to allow testing usage of it (#1605)
* **[Java]** Include file name when mark file version validation fails.
* **[Java]** Correct offsets for response setup flyweight in ReceiveChannelEndpointThreadLocals.
* **[Java]** Default cluster log flow control to driver default which will commonly be max now that overruns can go up to half a term.
* **[Java Archive]** Assign client name to Archive's Aeron client.
* **[Java Cluster]** Assign client name to Cluster Aeron clients.
* **[C{plus}{plus}/Java Client]** Pre-touch mapped log buffers on the client if `Aeron.Context.preTouchMappedMemory()` returns `true`, i.e. client configuration takes precedence over channel parameters and media driver configuration.
* **[Java Cluster]** Delegate decision on unknown schema to consensus agent
* **[Java Cluster]** Ensure service count is zero when consensus module extension is installed.
* **[C/C{plus}{plus}/Java]** Annotations to support config/counters documentation/validation (#1593)
* **[C/Java Driver]** Add unicast semantics to RetransmitHandler (#1603)
* **[Java Cluster]** Add archive and egress response endpoints for cluster and make them optional.
* **[Java Cluster]** Remove default for cluster services directory configuration and leave resolution of that value until conclude.
* **[Java Archive]** Use publication.availableWindow instead of looking up the pubLmt counter.
* **[Java Cluster]** First cut at consensus module extension integration.
* **[C Driver]** Fixes for fixed loss interceptor used for testing.
* **[Java Cluster]** Remove unused params.
* **[Java Archive]** Separate lines for debugging.
* **[Java Cluster]** Provide access to archive and aeron for consensus module extension.
* **[Java Cluster]** Delegate cluster session creation to extension if available.
* **[Java Cluster]** delegate callbacks to extension on state changes.
* **[C/Java Driver]** Track EOS for each receiver connected to the NetworkPublication (#1606)
* **[C Client]** Declare a volatile pointer to `aeron_image_list_stct` instead of a pointer to a volatile struct. (#1607)
* **[Java Cluster]** A more decoupled approach to ConsensusModuleExtension.
* **[Java Cluster]** Provide access to log publication after an election for consensus module extension.
* **[Java]** Improve error messages when publication errors occur.
* **[Java Cluster]** Consensus module extension API refinements.
* **[Java Cluster]** Add replay of session open and close delegation to consensus module extension.
* **[Java Cluster]** Add replay of extension message delegation to consensus module extension.
* **[Java Cluster]** ConsensusControlState to be passed from Agent to Extension and allows control.
* **[C/C{plus}{plus} Client]** Use `aeron-client-conductor` as a client conductor agent name across all implementations.
* **[Java Cluster]** pass actingVersion to onMessage of ConsensusModuleExtension
* **[Java]** Version generated class to have toString
* **[Bash]** Add option to disable C{plus}{plus} Archive API.
* **[Java Cluster]** Add ability to access response publication for a session and only update keepalive status when open.
* **[Java Cluster]** Handle cluster extension messages on egress listener side.
* **[Java Cluster]** Add extension message support to AeronCluster client.
* **[C{plus}{plus} Wrapper]** Allow pass through of `const uint8_t *` buffers.
* **[C{plus}{plus}]** Replace array with pointer to address code-ql issue on Publication in C{plus}{plus} API and Wrapper.
* **[Build]** Fix aeronmd rpath in the generated package.
* **[Java Cluster]** Use separate archive control session for consensus module extension.
* **[Java Cluster]** Add work cycle callback for ConsensusModuleExtension.
* **[C/Java Driver]** Replace exception with increment of counter for overflowing the retransmit pool.
* **[C]** add -w to C AeronStat app (#1614)
* **[Java Cluster]** Provide access to encoded principle for authorising consensus module extension session.
* **[Java Archive]** Add support for response channels startReplay and startBoundedReplay.
* **[Java Samples]** Fix StreamStat mapping of `sub-pos` which had a join position included in the channel uri and prevented it to be merged with the rest of stream positions. Also ensure that longest channel uri is printed.
* **[Java Cluster]** Extract ReplicationParams for RecordingReplication to allow for more flexible configuration.
* **[Java Cluster]** Use response channels for log replication during the election.
* **[C Driver]** Handle a case when `getifaddrs` call fails.
* **[Java Cluster]** Provide access to cluster client session from extension via an interface to restrict usage.
* **[Java Cluster]** Add source response channel to MultipleRecordingReplication.
* **[Java Cluster]** Simplify hash code for RecordingLog.
* **[Java Cluster]** Use response channel in ClusterBackup when connecting to the cluster archive.
* **[Java Archive]** add helper method to determine if Archive Context is concluded (#1617)
* **[Java Cluster]** Validate standby snapshot (#1616)
* **[Java]** Add tests for HeaderWrite class + always combine values in the same order (from MSB to LSB).
* Intercept replay and recording session state changes (#1615)
* **[Java Archive]** Use `getMaxRecordedPosition` instead of `getRecordingPosition` to avoid two different calls while resolving position. Also call `getMaxRecordedPosition` only once in the `attemptLiveJoin`.
* **[Java Cluster]** Add ability to close a cluster session from the consensus module extension.
* **[C/Java Archive/Driver]** add backoff to calls to getMaxRecordedPosition in ReplayMerge (#1618)
* **[Java Archive]** Prevent replay token clashes.
* **[C Samples]** Fix CnC version printed in AeronStat header.
* **[Build]** Modify CMake build to have exports for Aeron targets.
* **[Java Cluster]** separate ingress and log message callback
* **[Java Cluster]** Method renaming for log extension dispatch.
* **[Java Cluster]** Add authorization service to ConsensusModuleControl
* **[Java Cluster]** cluster session - do not delete principal when transitioning to open
* **[Java Cluster]** Clean up session logging.
* **[Java Cluster]** Add event log for getMaxRecordedPosition call.
* **[Java Cluster]** callback on prepare for new leadership in ConsensusModuleExtension
* **[Java Cluster]** Consistent checking of leadership id in admin request to cluster.
* **[Java Cluster]** Add reason for ELECTION_STATE_CHANGE + log state transition after the logic was executed.
* **[Java Cluster]** Process standby snapshot control signals like normal snapshot signals. (#1634)
* **[C Client]** Fix #1633, only get channel status if pointer is non-null.
* **[C{plus}{plus} Wrapper]** Fix Image wrapping in a couple of cases improvements. Delete implicit *FragmentAssembler copy/move ctors/operators (#1639)
* **[Java Archive]** Reduce archive listRecordingsForUri idling (#1638)
* **[C Client]** Return an error if the client name is too long (100 chars) instead of truncating.
* **[C{plus}{plus} Wrapper]** Use a copy constructor for wrapper Context to better handle resource management.
* **[C/Java]** Send a flag on SETUP to indicate that the publication is expecting a group of subscription and use that to select the multicast feedback delay generator when inferring behaviour.
* **[Java Driver]** Set default on stream session limit property.
* **[Java Cluster]** Consolidate logic for closing a cluster session in the consensus module.
* **[Java/C/C{plus}{plus} wrapper]** Add new API to create static counters. (#1625)
* **[C{plus}{plus} Wrapper Client]** Implement offer with raw pointer and length for exclusive publications.
* **[Java Cluster]** Do not reinstate cluster sessions that have timed out but not got committed before a change of leadership.
* **[C/Java Samples]** Align implementation of AeronStat.
* **[Java Cluster]** Do slow tick work in consensus module agent until no work is done in a cycle.
* **[Java Client]** Improve error message when failing to open CnC file.
* **[C/Java]** Retry on `ERROR_SHARING_VIOLATION (32)` on Windows when awaiting CnC file mapping.
* **[C{plus}{plus}/Java Archive]** Use Publication.publicationLimit instead of looking up counter.
* **[Java Driver]** Fix re-resolution to trigger when no SMs received by Publications and new Publications are constantly created.
* **[Java Cluster]** Fix for #1619. Handle the case where the last portion of data a cluster log is a padding frame.
* **[Java Cluster]** Make `describe recordingId` work with recordings in any state.
* **[Java Archive]** Only index valida recordings and implement ArchiveTool methods via `forEach`.
* **[Java]** Print offending value in exception with ChannelUriStringBuilder.
* **[Java Archive]** Do not mark recording as `VALID` if there are no segment files.
* **[Java Archive]** Always report state OK even when not changing the state.
* **[Java Archive]** Mark purged recording as `DELETED`.
* **[C]** Fix heap-buffer-overflow issue when removing entries from the `aeron_int64_counter_map`.
* **[C]** Align `aeron_int64_counter_map` with Java, i.e. do not allow initial_value to be put into the map.
* **[Java Cluster]** Add API for taking a snapshot in consensus module extension.
* **[C/Java Driver]** add config option and uri param for setting max retransmits (#1640)
* Upgrade to CMake 3.30.0.
* Upgrade to HdrHistogram 2.2.2.
* Upgrade to ByteBuddy 1.14.19.
* Upgrade to Agrona 1.22.0.
* Upgrade to Hamcrest 3.0.
* Upgrade to SBE 1.32.1.
* Upgrade to JUnit 5.11.0.
== 1.44.7 (2025-07-10)
* **[Archive]** Copy `ttl` URI parameter from the original channel definition when creating recordings and replays. To ensure that the control stream will use the same TTL setting as the incoming data stream.
* **[C/C{plus}{plus} Wrapper]** Include `<chrono>` to fix compilation error on Windows.
* **[Java]** Backport releasing to Maven Central Portal.
== 1.44.6 (2024-11-11)
* **[Java]** Update RecoverPlan after standby snapshot replication completes with the replicated snapshot entries.
== 1.44.5 (2024-10-25)
* **[Java]** Prevent an untethered subscription re-joining the stream at an old position.
== 1.44.4 (2024-10-10)
* **[C]** Check subscribed sessions before removing a stream interest before removing by stream_id.
* **[Java]** Add end-to-end test for session interest fix.
== 1.44.3 (2024-09-24)
* **[C]** Align loss and SMs handling between Java and C media drivers.
== 1.44.1 (2024-04-12)
* **[Java]** Fix ClusterBackup getting stuck in the `LIVE_LOG_REPLAY` state.
* **[Java]** Validate that the egressChannel is set.
* **[CI]** Add Clang 18 to the build matrix.
* Upgrade to SBE 1.31.1.
== 1.44.0 (2024-04-08)
=== Noteworthy Changes
* https://github.com/aeron-io/aeron/wiki/Response-Channels**[Response Channels]**
+
A new experimental feature that provides server/client behaviour to Aeron clients.
* Asynchronous DNS Name Resolution
+
Improve Publication/Subscription creation performance and avoid stalls by performing DNS resolution asynchronously with Aeron.
* Tethering Behaviour
+
Prevent premature disconnections by utilizing the maximum window size for tethering, even in congested networks. OR Improve tethering behaviour when using congestion control.
* Adjust Overrun Behaviour
** Make better use of buffers and reduce dropped consumers.
** Enhance the performance of receivers in a max flow control use-case.
* Congestion Control Recovery
+
Significantly reduce recovery time in congested networks, without the need for any configuration changes.
* Loss Recovery Improvements
+
Reduce negative acknowledgements and message redelivery to improve the efficiency of message recovery.
=== Known issues
* **[Cluster]** ClusterBackup is stuck in the `LIVE_LOG_REPLAY` state as it trying to find recording using wrong
`archiveId`.
+
Fixed in https://github.com/aeron-io/aeron/releases/tag/1.44.1[1.44.1].
=== Changelog
* **[Java/C Driver]** Support configuration flag for experimental features (#1577)
* **[C Driver]** Fix buffer overflow when updating counter labels.
* **[Java ConsensusModule]** Log cluster session failures.
* **[Java/C/C{plus}{plus} Client/Driver]** Add ability to set name on the Aeron client. (#1581)
* **[Java Driver]** Async DNS resolution. (#1564)
* **[C Driver]** async DNS resolution for the C media driver (#1566)
* **[Java CluserBackup]** Have cluster backup start from a specific position (#1579)
* **[Java ConsensusModule]** Introduce clustered service specific SnapshotDurationTracker (#1575)
* **[Java Cluster]** Allow setting ClusterClock via `aeron.cluster.clock` system property.
* **[Java Driver]** Call force on CnC file when doing clean shutdown and signalling ready.
* **[C Driver]** Add `aeron_msync` and use to flush CnC file contents upon start and shutdown.
* **[Java Cluster/Archive]** Add *MarkFile.force() method to flush any pending updates to disc and use it for signalling readiness and when closing the mark file.
* **[C/Java Driver]** Dissect frames and commands using key/value format.
* **[C/Java Driver]** Use nanosecond resolution for logging messages.
* **[C Driver]** Install pre-/post-interceptors logging interceptors if the incoming/outgoing chains are not NULL. Change logging order for outgoing events to log before executing command to match Java and log plain messages before encryption.
* **[Java Driver]** Fix `FRAME_IN/FRAME_OUT` event logging, i.e. allow redefinition of previously loaded classes.
* **[C Driver]** Scope logging functions with a "log" struct. (#1556)
* **[C Driver]** Add C driver logging for send_nak_message and resend (#1553)
* **[C Driver]** Track pending setups for cases when notified of unconnected messages. Only allow pending setups for unknown interest or existing images when in ACTIVE state. Handle unconnected streams by sending setup eliciting SMs.
* **[C Driver]** Fix potential leak in when adding stream interest to subscription by session.
* **[Java Samples]** Improve response channels samples.
* **[C Driver]** Align min flow control implementation with Java + allocate memory only if a receiver is added.
* **[Java ConsensusModule]** Use fixed 64 byte alignment that does not depend on the CACHE_LINE_LENGTH and is backwards compatible.
* **[Java ConsensusModule]** Fix IndexOutOfBoundsException when recording entry straddles page size.
* **[Java ConsensusModule]** Add leadership term id counter to ease debugging.
* **[Java ConsensusModule]** Add election counter.
* **[Java ClusterTool]** Ensure publication is connected before making cluster members query to avoid exception on checking result from ClusterTool.
* **[Java]** Add missing properties to the `toString` + print Archive/ConsensusModule/ClusteredServiceContainer configuration if `aeron.print.configuration=true`.
* **[C/C{plus}{plus}/Java Client]** Re-assemble header for the fragmented message before calling user code.
* **[Java Archive]** Add Archive threading mode to the conductor duty cycle counter labels.
* **[Java ClusteredServiceContainer]** Trap and log snapshot exceptions while allowing cluster to resume (#1568)
* **[Java ClusteredServiceContainer]** Track ClusteredService lifecycle via a single field.
* **[Java ConsensusModule]** Remove retry logic from the ConsensusModuleProxy.
* **[Java ConsensusModule]** Retry sending cluster member query.
* **[Java Cluster]** Clarify Javadoc around `clusterSessionId` for `offer/tryClaim` methods.
* **[C Samples]** add locks around channel info map in response server sample app
* **[Java Cluster Client]** Close any partially created ingress publications and egress subscription if connect was not completed.
* **[Java Client]** Add `Aeron#asyncRemoveSubscription`.
* **[Java ArchiveTool]** Update Help section of Archive Tool to describe the different 'describe' commands. (#1573)
* **[C{plus}{plus} Archive Client]** Add `archiveId` API to the AeronArchive.
* **[Java Archive Client]** Use `archiveId` for looking up the RecordingPos counters. (#1571)
* **[C{plus}{plus}/Java Archive Client]** Add getMaxRecordedPosition to AeronArchive to get the length of a recording if it is active or stopped.
* **[Java/C{plus}{plus} Archive Client]** Update Aeron Archive control protocol minor version.
* **[C Driver]** Align implementation of retransmit handler with Java driver.
* **[Java Cluster]** Set isLeader appropriately on cluster member when listing. Issue #1569
* **[Java Driver]** Remove unused sourceAddress from PublicationImage.
* **[Java Driver]** Allow the RetransmitHandler to prevent retransmissions where the term offsets don't match but NAK'd region is wholly subsumed by an existing retransmission.
* **[C Driver]** Per stream nak delay (#1570)
* **[Java Driver]** Add support for per channel configuration of nak-delay.
* **[Java Driver]** Add fixed loss interceptor for testing (#1551)
* **[Java Driver]** Suppress retransmits of the offset of the NAK is in the range of any active retransmits.
* **[Java Driver]** Clamp all retransmissions at the point where we create the RetransmitAction to ensure clamped length is accurately applied.
* **[C/Java Driver]** Change multicast NAK backoff and unicast delay linger to 10ms from 60ms.
* **[C{plus}{plus} Wrapper Client]** Prevent sanitiser errors when shutting down subscription and client in quick succession (#1549)
* **[Java Archive]** Validate replay completely before creating a replay Publication.
* **[C Samples]** add response_client/server sample apps (#1559)
* **[C Driver]** check for response parameters when adding destinations (#1565)
* **[Java Driver]** add validation when control-mode=response (#1563)
* **[C Utility]** Add support for PUT requests using aeron_http_util. (#1561)
* **[Build]** Set aeronmd rpath in the generated package. (#1557)
* Upgrade to Agrona 1.21.1.
* Upgrade to SBE 1.31.0.
* Upgrade to ByteBuddy 1.14.13.
* Upgrade to ASM 9.7.
== 1.43.0 (2023-12-19)
* **[Driver]** Support specifying endpoints and tags in the same URI
* **[C Driver]** Add reference id to counters.
* **[Driver]** Set reference id of sub-pos to registration id of the image/publication.
* **[C Client]** Fix aeron_print_counters.
* **[Java Driver]** Touch ups for RetransmitHandler.
* **[C Driver]** Put enum events in order.
* **[C Driver]** Remove reliance of max event num in enum for driver agent.
* **[C Driver]** Fix signed comparisons.
* **[C Driver]** Declare void param.
* **[C Driver]** Keep loop types consistent.
* **[Java Driver]** Add a clamp on retransmit length.
* **[Java Client]** Fix Aeron.getSubscription(long) JavaDoc.
* **[Java Driver]** Encapsulate retransmit multiples constants.
* **[Samples]** Add sample code to support stress testing of MDC and Unicast connections.
* **[Cluster]** Mark services as active only after they have successfully started.
* **[Driver]** Improve error messages reported by clients if the Media Driver has been shutdown.
* **[C Client]** Populate the client image subscriber_position_id.
* **[Cluster]** Improve error message when cluster fails to connect.
* Add detailed version information to Aeron error counters for all components. Include release version and Git SHA.
* **[C Driver]** Fix capture of spy subscription channels so that image availability callbacks include the correct subscription URI.
* **[C]** Use -fno-omit-frame-pointer on Linux native builds so provide easy and accurate profiling with tools like perf.
* Add `+guilty` to version information if using a build that has changes that have not been committed to git.
* **[C Client]** Correctly handle the case where an image is used across multiple subscriptions. Including ensuring the unavailability callbacks a delivered correctly.
* **[Archive]** Exclude invalid recordings from ArchiveTool describe and add a `describe-all` command which shows valid and invalid recordings.
* **[C Driver]** Introduce a parameters structure that can be used to carry transport configuration information when initialising a udp_channel_transport. Also pass MTU information through the bindings to allow for improved validation of within the DPDK bindings.
* **[Driver]** Only include timestamps on packets that carry the DATA_BEGIN_FLAG to prevent accidental corruption of packets when the timestamp is being carried within the payload.
* **[Cluster]** Remove the need for MDS subscription on cluster ingress by having a separate IPC ingress subscription when required. Plus await sockets closing on the log subscription in parallel with the other activities when preparing for an election.
* **[Cluster]** A leader should assert its leadership when a follower requests a vote and the leader has a more up-to-date log rather than re-initialising an election which could result in log truncation.
* **[C Driver]** Ensure loop iteration index is used when setting timestamps for publication.
* **[Cluster]** Log event for unknown session close in service container rather than throw and exception.
* **[Cluster]** Throw exception if a member id is not found in the cluster backup's configuration.
* **[Cluster]** Avoid list creation when throwing an exception.
* **[Archive]** Add ArchiveTool mark-valid, mark-invalid commands. These provide a way to patch the catalog in an emergency.
* **[Cluster]** Ensure that the ClusterMarkFile link is created using the parent directory from the MarkFile object.
* **[Driver]** Add stricter validation on control addresses, including: Require control address with `control-mode=dynamic`. Allow control addresses on non-MDC unicast publications. Add clearer validation on control-mode when using tags.
* **[Driver]** Introduce an enum to track the control mode specified on Channel URIs.
* **[Driver]** Update pub-pos when updating pub-lmt.
* **[Java Driver]** Check if CnC file has error log buffer allocated.
* **[Driver]** Print usable space when throwing StorageSpaceException or returning an error.
* **[C Samples]** Make AeronStat respect update interval option. AeronStat was effectively ignoring `-u` and incorrectly using `-t` instead.
* **[Java]** Fix NullPointerException in LogBuffers when construction fails with an exception.
* **[Driver]** Add counter to represent the number of bytes mapped by the Driver.
* **[Driver]** Pass in setup triggering SMs into flow control so that tags can be matched for controlling setup sender limiting.
* **[C]** Fix client image reference counting by use the appropriate literals to ensure that 64-bit parameters are used.
* **[Cluster]** Call unexpectedTermination on incompatible app versions in the ConsensusModuleAgent.
* **[C Driver]** Implement low storage warnings for the C driver.
* **[Java Driver]** Backoff from sending when a short send it detected by polling for status messages as a means to provide a little breathing room for underlying stack.
* **[Cluster]** Detect when log subscription in an election has an error, such as bind exception, throw an exception giving context and restart election.
* **[Cluster]** Close log subscription after prepareForNewLeadership.
* **[Cluster]** Introduce SnapshotDurationTracker to track the time taken for snapshots in the Cluster.
* **[Java]** Rename aeron-version module to aeron-annotations.
* **[C Driver]** add max_retransmission_length.
* **[Java]** Remove suffix from version.
* **[Cluster]** Stop log recording even if an image has not been picked up and no need to try stop the recording by identity if stopped by log subscription id.
* **[Cluster]** Increase visibility from private to package-protected for a number of ClusterTool utility methods.
* **[Cluster]** Add STANDBY as a component type to cluster mark file codec.
* **[Cluster]** Add cluster services directory to the cluster mark file and allow it to be set via the ConsensusModule.Context. This means that ClusterTool can resolve the location of the service container mark files even if they are not stored in the same directory.
* **[C{plus}{plus}]** Use static constexpr for declaring constants.
* **[C/C{plus}{plus}]** Use functions to return version information to enable runtime version checks against the media driver.
* **[C{plus}{plus} Wrapper Client]** Allow to access the underlying client of the C{plus}{plus} wrapper.
* **[C Driver]** Fix error reporting for aeron_port_manager.
* **[C Driver]** Implement timestamp capturing for the recvmsg path.
* **[C Driver]** Switch sender poller to poll for a single SM, i.e. do the `recvmsg` syscall.
* **[C Driver]** Add additional validation for frame_length on status messages.
* **[C Driver]** Fix error format strings when configuring sockets for the udp transport.
* **[C/C{plus}{plus}]** Remove date/time from the version files for a reproducible build.
* **[C]** Fix line ordering bug and add missing return statements and error appending.
* **[Driver]** Allow publication image flow control under runs if they are heartbeats so a stream can be kept connected and to get a more accurate EOS when using MDS.
* **[C Driver]** Use correct type for array length calculation, fix #1539.
* **[Driver]** Track EOS position per image connection for MDS.
* **[C{plus}{plus} Wrapper]** Fix maxMessageLength.
* **[C{plus}{plus} Wrapper]** Fix FragmentAssembler.
* Upgrade to AsciiDoctorJ 2.5.10
* Upgrade to JGit 5.13.2.202306221912-r
* Upgrade to Versions Plugin 0.50.0
* Upgrade to ByteBuddy 1.14.10
* Upgrade to ASM 9.6.
* Upgrade to Agrona 1.20.0
* Upgrade to JUnit 5.10.1
* Upgrade to SBE 1.30.0
== 1.42.1 (2023-09-01)
* **[Java]** Ensure that the `LoggingErrorHandler` instance is closed when wrapping a user-defined `ErrorHandler`.
* **[Java]** Invoke background work when idle and service is active so external connections from a cluster can be maintained.
* **[Doc]** JavaDoc clarifications on MediaDriver dirDeleteOnStart behavior.
* Upgrade to Agrona 1.19.2.
* Upgrade to ByteBuddy 1.14.7.
== 1.42.0 (2023-08-21)
* Add port manager to C and Java drivers to allow for a limited range of ports that can be used when subscription endpoint addresses and publication control addresses specify a port of `0`. This can make network access configuration simpler (Driver).
* Wait for end of stream event on the log instead of the counter becoming unavailable before entering into a new Election (Cluster).
* Close log publications before trying to stop recording to speed up graceful leader step down (Cluster).
* Ignore resting subscription positions when calculating join position or draining driver entities when tethering is being used (C Driver).
* Extensions points to support Standby Snapshots (Cluster).
* Ensure that the `clusterDirectoryName` field is synced with the `clusterDir` configuration parameter during conclude in `ConsensusModule` and `ClusterBacker` (Cluster).
* Cluster tutorial updates (Documentation).
* Extract invocation of background work in the service container.
* Do not fail if Aeron directory exists, but the CnC file does not (C Driver).
* Use `aeron_errcode` to get the latest error code when reporting problems creating the Aeron directory (C Driver).
* Don't let a bounded replay go beyond counter value to stop position so commit position can be used for replay (Archive).
* Add addition example Authentication and Authorisation services (Archive/Cluster).
* Add additional documentation to specify details when Authorisation is used (Archive/Cluster).
* Clarify logic about extending a replay while being bounded (Archive).
* Changes to host name resolution on start up (Driver).
** Perform host name resolution once and track its execution time via the duty cycle tracker and the event log.
** Use `<unresolved>` as a host name if it cannot be resolved instead of null.
** Fix GCC 9 warning
** Await initial counters being updated by the conductor thread before reading the values.
* Trigger graceful leader close election based on recording stop signal (Archive).
* Add end of stream position to Subscriptions (Client).
* Allow for relocatable mark files for the `ConsensusModule`, `ClusteredServiceContainer`, and `ClusterBackup` (Cluster).
* Move close operations on MDS transports on the conductor not the receiver thread (C Driver).
* Allow preparing for new leadership to be less serial to reduce election time (Cluster).
* Async removal of destinations as log adaptor closes when preparing for election (Cluster).
* Fix CMD_OUT_ERROR log format (C Driver).
* Fix `aeron_err_clear()` (C).
* C driver handle untethered subscriptions correctly, ensure that tethering behaviour matches Java driver (C Driver).
* Fix name in toString (Java Client).
* Improve error message (C{plus}{plus} Archive Client).
* Clean up Apple M1 compilation. Move loss reporter function into compilation unit. Add pragmas to account for unused but set variables (C).
* Add logging to track information when a `ReplicationSession` ends (Archive).
* Add deduplication step for aeron-agent jar.
* Add deduplication step for aeron-all jar.
* Add an annotation processor to generate a version class for a number of the Aeron packages.
* Include the git sha in the version C binaries.
* Extract `untetheredWindowLimit` method.
* Upgrade to SBE 1.29.0.
* Upgrade to JUnit 5.10.0.
* Upgrade to Agrona 1.19.1.
== 1.41.6 (2024-01-06)
* **[Java/C]** Allow publication image flow control under runs if they are heartbeats so a stream can be kept connected and to get a more accurate EOS when using MDS.
* **[Java/C]** Restrict the allowing of heartbeat under runs to only one term behind.
* **[Java/C]** Count under runs for heartbeats.
* **[Java/C]** Track EOS position per image connection for MDS.
== 1.41.5 (2023-11-09)
* **[Java]** A leader should assert its leadership when a follower requests a vote and the leader has a more up-to-date log rather than re-initialising an election which could result in log truncation.
* **[Java]** Change role to leader after winning election so leadership can be asserted during replay or replication.
* **[Java]** Log event for unknown session close in service container rather than throw and exception.
== 1.41.4 (2023-06-14)
* Store `Aeron.NULL_VALUE` for lastActivityTimestamp in the snapshot for sessions as the value should be transient (Cluster).
* On snapshot of PendingServiceMessageTracker, check to see if the buffer is empty and the nextServiceSessionId is lower than what it should be. Correct this and log an error that follower may not have executed the service IPC logic deterministically (Cluster).
* Include the recording position in the debug log when replicate session state changes (Archive).
* Don't cool down an Image that is EOS (Driver)
* Reset eos_flagged when adding a receiver (C Driver)
* Filter images by session id when adding new network subscriptions (C Driver)
* Allow the session-id of the publication used during replication to be specified to avoid session-id clashes on replication retries (Archive).
* Allow the authorisation credentials to be specified on a replication request to support simple authentication between the destination and source archives (Archive).
* Use custom session-ids when replicating snapshots and logs (Cluster).
* SBE 1.28.3
* Agrona 1.18.2
* ByteBuddy 1.14.5
* Version 0.47.0.
== 1.41.3 (2023-05-16)
* **[Java]** Add debug method for a replication completing withing Cluster.
* **[Java]** Let Archive take care of handling Aeron exceptions when client is embedded.
* **[C]** Prevent double free of the `aeron_udp_channel_t` when creating a `send_channel_endpoint_t`.
* **[C]** Upgrade to HDR Histogram 0.11.8
* **[Java]** Upgrade to JUnit 5.9.3 (platform console 1.9.3)
* **[Java/C]** Name resolution execution time tracking
* **[Java]** Simplify Client Close
* **[Java]** Perform Runtime.exit(int) on another thread in default error handler to avoid deadlocks if Aeron instances are used on JVM shutdown hooks.
* **[C]** Fix potential memory leak. Use correct action with publication notification.
* **[Java]** Ensure segment file write of final byte for extension is successful
== 1.41.2 (2023-04-20)
* **[Java]** Fixed ClusterBackup backwards compatibility issue caused by the missing `memberId` field.
* **[Java]** Set isLeader flag on the list of cluster members passed to `ClusterBackupEventsListener`.
* **[C]** Prevent negative shifts when receiving some messages from ATS.
* Upgrade to ByteBuddy 1.14.4.
* Upgrade to Gradle 8.1.
* Upgrade to Shadow 8.1.1.
== 1.41.1 (2023-04-17)
* Upgrade to Agrona 1.18.1.
* Upgrade to SBE 1.28.2.
== 1.41.0 (2023-04-14)
* Allow `NameResolver` to be configured for the `ConsensusModule` in order to support custom name resolution when configuring the ingress channel.
* Delay election state transitions if there is an active leader to avoid unnecessary reset and new election.
* Make `AeronCluster.asyncConnect` work completely asynchronously. Don't report exceptions to the error handler that are used for async resources.
* Add a system property and API to allow changing a directory where an Archive mark file (`archive-mark.dat`) is stored.
* Check the state of the interface when trying to resolve the multicast interface. Only use interfaces that are up. [Issue #1387](https://github.com/aeron-io/aeron/pull/1438[https://github.com/aeron-io/aeron/issue/1387])
* CnC file length validation. [Issue #1410](https://github.com/aeron-io/aeron/pull/1438[https://github.com/aeron-io/aeron/issue/1410])
* Fix issue of not capturing return code when recording signal arrives after an error to the archive client.
* Support migrating segments to the beginning or end of an existing archive recording.
* **[C]** Fix issue of using transport after it had been removed.
* **[Java]** Fix concurrent close of receive destination counters on multi-destination subscriptions.
* **[C]** Fix `remove_if` methods on pointer value maps which previously could miss an item.
* Add debug logging for clustered service acking.
* Add a specific error for archive replication failing to create a remote connection.
* Fix leak with Archive replay session if the async publication has a session clash.
* Shorten duration of cluster election after a leader has closed gracefully.
* **[C]** Fix image rejoin by swapping correcting cooldown map insertion and removal. https://github.com/aeron-io/aeron/pull/1438[PR #1338]
* Candidate ballot for 5+ node cluster cannot be cut short on quorum otherwise most up to date member may not be elected.
* **[C]** Allow for attempted recreation of an Image if initial attempt fails. https://github.com/aeron-io/aeron/pull/1435[PR #1435]
* Perform most replay validations before sending OK to the client so errors are synchronous when starting a replay.
* Delete all recording segment files when a recording is truncated to its start position.
* Close `ArchiveMarkFile` last when shutting down Archive to capture all errors.
* **[C{plus}{plus}]** Apply `std::forward` to fragment handler to avoid unnecessary copy. https://github.com/aeron-io/aeron/pull/1405[PR #1405]
* Fix handling of padding greater than max message length in Archive replay.
* Add debug logging for Archive recording signals.
* Close log subscription first when clustered service is cleanly closed to drop follower out of flow control as soon as possible.
* Drop cluster follower as soon as possible out of flow control to allow cluster to progress when follower is cleanly closed.
* **[C]** Report timeout accurately when driver keepalive beyond timeout. https://github.com/aeron-io/aeron/pull/1429[PR #1429]
* Add ability to run Archive with only IPC control channels for clients.
* Add `ClusterTool.isLeader` method.
* Add `Image` to `Subscription` before calling available handler rather than after.
* Set URI in receiver counters to match subscription channel.
* Add cluster member node state file and migrate out state that needs to be persistent, such as `candidateTermId` and member list, so the mark file can be in /dev/shm.
* **[C]** Fix issue with removing naming resolver neighbor that deleted adjacent memory.
* **[C]** Improve socket error handling on Windows.
* **[Java]** Add `toString()` to many Aeron classes to help debugging.
* **[C]** Improve parsing of unsigned 32-bit integers.
* **[C]** Set max of resource free queue length and resource free limit to `INT32_MAX`. This stops them being incorrectly set to 0 by aeron_config_parse_uint32 when comparing against int32 0. https://github.com/aeron-io/aeron/pull/1421[PR #1421]
* Deprecate cluster dynamic join feature. This is to be replaced with a more robust and user friendly premium offering.
* **[C]** Fix counter leak when subscription fails.
* **[C]** Fix spy channel memory leak when destination is removed for multi-destination subscription.
* **[C]** Fix channel memory leak on error when creating publications or subscriptions.
* Fix NPE on timeout exception for cluster client in some connect states.
* **[Java]** Improve efficiency of URI parsing.
* **[C]** Fix error messages with incorrect varargs.
* Warnings clean up in codebase to have less noisy CodeQL analysis.
* Support having mark files for `Archive`, `ConsensusModule`, and `ClusteredServiceContainer` to be in alternative directory such a /dev/shm so timeouts can be avoided when recording writes queue up on a network filesystem.
* Add timestamp params to stripped channel for pass through to Archive operations.
* Queue resource freeing operations in driver to avoid timeouts when unmapping operations are slow.
* **[C{plus}{plus}]** Work around compiler concurrency bug for `AtomicArrayUpdater` that can impact client Subscriptions causing image list to become corrupted.
* Improve javadoc for recording signal usage.
* Be strict on handling cluster leader liveness to the current leadership term.
* Only try unblocking a client command after liveness timeout to avoid "lost" commands. https://github.com/aeron-io/aeron/pull/1369[PR #1369]
* Make archive counters unique so multiple archives can run on the same media driver.
* Truncate files after `ArchiveTool.compact` is invoked to free disk space.
* Fix basic auction cluster tutorial configuration.
* Improve `ClusterConfig` sample to allow for ingress configuration.
* Add counters for the number of active recordings or replays in an Archive.
* Add counters for reporting on read and write operations in an Archive.
* Support allowing a `ClusteredService` being started before the `ConsensusModule`.
* Improve false sharing protections for more consistent latency.
* Simplify `ReplayMerge` samples to not require entity tags.
* Add batch script for launching low-latency media driver on Windows.
* Support message lengths greater than MTU in ping pong samples.
* Fix options handling in `cping` sample.
* Improve handling of timeouts in cluster elections for more robust state transitions when network is unstable. Effects are more pronounced in 5+ member clusters.
* **[Java]** Add `Aeron.addAsyncSubscripiton` for non-block setup.
* Compute source identity of images more precisely based on channel configuration.
* Improved handling of out of disk space errors.
* Support taking a cluster consensus module snapshot when member names are greater than MTU in length.
* Allow a follower to veto a member being elected cluster leader if they believe the leader is not valid. This is important in 5+ node clusters.
* Extend debugging for voting in cluster elections.
* Increment error counter when invalid version exceptions occur.
* Handle backpressure from commands between dedicated threads in driver with controlled polls to avoid live locks.
* **[C]** Add support for controlled poll operations on SPSC and MPSC ring buffers.
* Increase command queues to allow for more concurrent active changes in publications and images.
* Serve cluster backup queries from followers to take load from the leader.
* **[C]** Fix build when dot is used as thousands separator. https://github.com/aeron-io/aeron/pull/1372[PR #1372]
* Upgrade to JUnit 5.9.2.
* Upgrade to BND 6.4.0.
* Upgrade to ByteBuddy 1.14.3.
* Upgrade to Mockito 4.11.0.
* Upgrade to Version 0.46.0.
* Upgrade to Gradle 7.6.
* Upgrade to SBE 1.28.1.
* Upgrade to Agrona 1.18.0.
== 1.40.0 (2022-10-21)
* Memory align allocated buffers in `PublicationTest` so it works on Apple M1 processors.
* Check that`NoOpLock` is only allowed to be used when using Aeron client in invoker mode.
* Handle case of a delayed concurrent offer to a publication in which other threads have raced terms ahead without throwing an exception.
* Collapse term appenders into publications to reduce memory footprint and avoid data dependent loads.
* Short circuit Image polling operation when bound limit is less than current position to prevent term overrun.
* Add different aliases for consensus module/service container subscriptions. https://github.com/aeron-io/aeron/pull/1366[PR #1366].
* Stop an active cluster log replay when `ClusterBackup` is closed rather than waiting for timeout.
* Send unavailable counter events to Aeron clients when a client closes or times out.
* Allow Consensus Module Agent to be run via an Invoker in addition to having its own thread.
* Apply liveness checks to Archive and Cluster mark files so that multiple instances cannot be run in the same directory and corrupt files.
* **[Java]** Use fixed format for timestamps in agent debug logs.
* Allow Archive replicate to overwrite all metadata for an empty recording.
* **[C]** Handle log buffer files with `term_length == AERON_LOGBUFFER_TERM_MAX_LENGTH` on Windows. https://github.com/aeron-io/aeron/pull/1360[PR #1360].
* **[C]** Fix inclusion of symbols for debug builds on Windows.
* Remove `localhost` defaults for Archive and Cluster to help avoid mis-configuration in production. https://github.com/aeron-io/aeron/pull/1356[PR #1356].
* Await 'REPLICATE_END' when catching up as a follower across multiple leadership terms to avoid clashing session-id.
* Allow setting of receive socket buffer and window on cluster log channel subscribers. https://github.com/aeron-io/aeron/pull/1345[PR #1345].
* Fix application of send socket buffer lengths as configured when using MDC.
* Fix `ArchiveTool.dump` when fragment length is set <= 0.
* Capture closing sessions into snapshot so session close event is lost on cluster shutdown.
* Remove brackets from counters labels to make it easier for extract to Prometheus.
* Send cluster client session open acknowledgement before appending to the log to avoid race with service sending egress on open event. https://github.com/aeron-io/aeron/issues/1351[Issue #1351].
* **[C]** Fix off by one error local socket address into channel indicator counter.
* Add protocol version support to cluster consensus protocol.
* Add more context to error messages on Archive `ReplaySession`. https://github.com/aeron-io/aeron/pull/1349[PR #1349].
* Apply strict validation of consensus module snapshot state when messages are offered from clustered services. A number of customers have not been strict with all cluster nodes being deterministic and doing exactly the same thing which can result in corrupted and diverged snapshots.
* Consensus module state snapshot can be inspected with the `describe-latest-cm-snapshot` option to `ClusterTool`.
* If a consensus module snapshot is shown to be corrupt it may be fixed by running `ConsensusModuleSnapshotPendingServiceMessagesPatch` and if non-support customers wish to have help then they can contact link:mailto:sales@aeron.io?subject=Aeron[sales@aeron.io]. The patch can fix the leader and the fixed snapshot then needs to be replicated to the followers which can be done with `AeronArchive.replicate` using the correct recording ids.
* Add a tool to replicate a specific recording between archives. https://github.com/aeron-io/aeron/pull/1363[PR #1363].
* **[C{plus}{plus}]** use `getAsString` calls for pollers for record descriptors for channel fields. Add test from https://github.com/aeron-io/aeron/pull/1348[PR #1348].
* Add `ClusteredService.doBackgroundWork` which can be used for maintaining external connections beyond ingress and egress.
* Increase default message timeout from 5 to 10 seconds for Archive clients.
* Add EOS flag to status messages (SMs) once a stream is totally received so the sender can take clean up action.
* When EOS status message is received by a sender then allow the publication linger on unicast to be cut short so resources are received sooner.
* When EOS status message is received by a sender then remove the receiver from flow control for multicast and MDC with tagged and min FC.
* Fix the closing of session specific subscriptions to prevent resource leak.
* Add scripts for testing raw network performance on Windows.
* Close egress from cluster on change of leader so clients can detect it before a new leader is elected.
* Don't timeout and close cluster client session if quorum cannot be temporarily reached.
* Add logging support for `ClusterBackup` state changes.
* Close cluster clients when complete cluster is restarted.
* Support automatic reconnect from cluster client when the same leader is re-elected after a net split or temporarily loosing quorum.
* Add authentication for `ClusterBackup` to a cluster.
* Validate Archive mark file length before reading when mapped read-only to avoid access violations.
* Preserve iteration order for cluster client session based on session id so snapshots can have binary compatibility.
* Capture leadership term id for cluster backup queries.
* Account for padding when sweeping pending services messages to avoid out of bounds exception.
* Prevent `-1` leadership term ids appearing in the `RecordingLog`.
* Allow Archive replication and replay request to specify session level file IO max buffer length for throttling a stream.
* Add support for custom app version validation to clustered services with `AppVersionValidator`.
* Add false sharing protection to `DutyCycleTracker`.
* Update doc on `ReplayMerge` to indicate the `AeronArchive` client should not be shared. https://github.com/aeron-io/aeron/issues/1340[Issue #1340].
* Upgrade to Versions 0.43.0.
* Upgrade to Mockito 4.8.1.
* Upgrade to Google Test 1.12.1.
* Upgrade to JUnit 5.9.1.
* Upgrade to ByteBuddy 1.12.18.
* Upgrade to Gradle 7.5.1.
* Upgrade to SBE 1.27.0.
* Upgrade to Agrona 1.17.1.
== 1.39.0 (2022-07-14)
* **[Java]** Fix `IllegalStateException` that could exist for an MDS subscription on the rapid recycling of `ReplayMerge` operations.
* **[C]** Align ring buffer implementations and feature set with Java.
* **[Java]** Make sure that C and Java are aligned on resend window. Re-instate the max message length being accounted in the bottom of the resend window for Java.
* Add duty cycle duration tracking to all agents across all modules.
* **[C{plus}{plus}]** Improve efficiency by reducing the number of copy operations for fragment assembly when a stream has many fragmented messages.
* **[C]** Default to `CLOCK_REALTIME` for send/receive timestamps.
* **[Java]** Add setters for send/receive timestamp clocks to the `MediaDriver.Context`.
* Fix handling of fragment assembly when `reliable=false` is set for a channel and loss occurs.
* Improve handling of short sends on MDC publication to backoff from overloading a socket.
* Add round-robin facility to MDC publication for increased fairness.
* **[Java]** Publish `aeron-test-support` package as a JAR.
* **[Java]** Downgrade "unknown replay" errors to warnings for cluster catchup.
* **[Java]** Add `appVersion` to event logging for consensus module and check for correct app version when replaying log.
* **[Java]** Prevent timeout warnings with cluster dynamic nodes and log replication.
* **[Java]** Add cluster dynamic join state change logging events.
* Add counters for the number of receivers in min and tagged flow control strategies.
* **[Java]** Avoid race unmapping buffers on concurrent close of media drivers.
* Modify flow control strategies to have new method for when elicited setups are sent and add counters manager to `init` methods. Modify Min and Tagged flow control to use setup `snd-lmt` as min position until timeout or receiver added on SM.
* **[Java]** Account for possible padding in log buffer when checking for bottom resend window for retransmits.
* **[C]** Flush output when printing configuration.
* **[C]** Raise warning on failure to setup media timestamping.
* **[Java]** Update `recordingId` on any signal with a valid recording id when handling signals for snapshot replication.
* **[Java]** When attempting `ClientSession.tryClaim`, ensure that there is enough buffer space when returning a mocked offer for a follower.
* **[C]** Ensure publication image is released before it it freed.
* **[C]** Fix `scanf` that could result in buffer overflow when parsing HTTP for configuration.
* **[Java]** Change default cluster session timeout from 5 to 10 seconds.
* Prevent receiver joining min/tagged flow control if they are more than a window behind.
* **[C]** Add sample for working with large messages.
* **[Java]** Add logging event for appending a cluster session close.
* Upgrade to BND 6.3.1.
* Upgrade to Mockito 4.6.1.
* Upgrade to ByteBuddy 1.12.10.
* Upgrade to SBE 1.26.0.
* Upgrade to Agrona 1.16.0.
== 1.38.2 (2022-04-29) - C Driver/Client Release Only
* **[C]** Driver - Ensure the correct control address is used when adding multicast destinations with MDS.
* **[C]** Driver - Allow thread affinity on CPU 0.
* **[C]** API - Check handler parameter before polls. Check images for NULL before polling images.
== 1.38.1 (2022-04-14)
* Upgrade to SBE 1.25.3.
* Upgrade to Agrona 1.15.1.
== 1.38.0 (2022-04-14)
* **[Java/C/C{plus}{plus}]** Ensure driver is in ready state when requesting termination from client.
* **[Java]** Reduce allocation when listing archive directories to find segment files.
* **[Java]** Add flag to `ClusterTerminationException` to indicate if the termination was expected.
* **[Java]** Expand agent logging for consensus module operations, be careful if using `all` for cluster events as volume may now be greatly expanded.
* **[C]** Use connect and send to improve latency in C driver when sending data at lower volumes.
* **[Java]** Improve reliability of transferring snapshots to `ClusterBackup` via archive replication with improved re-try semantics.
* **[Java]** Support adding an IPC ingress destination to cluster leader for ingress optimisation.
* **[Java]** Create replay publication asynchronously to reduce latency pauses in Archive.
* **[Java/C{plus}{plus}]** Add new `RecordingSignal.REPLICATE_END` recording signal to indicate end of a replication operation.
* **[Java/C{plus}{plus}]** Make delivery of `RecordingSignal`s to archive client sessions reliable and ordered.
* **[Java]** Support specifying interface with endpoints in cluster config for multi-home members. https://github.com/aeron-io/aeron/pull/1290[PR #1290].
* **[C]** Add thread affinity support to C media driver. https://github.com/aeron-io/aeron/pull/1298[PR #1298].
* **[C/C{plus}{plus}]** Update CMake build to use `FetchContent` instead of `ExternalProject`.
* **[C/C{plus}{plus}]** Fix build on ARM with clang. https://github.com/aeron-io/aeron/pull/1291[PR #1291].
* **[Java]** Improve progress tracking and retry semantics for cluster members catching up in elections.
* **[C/C{plus}{plus}]** Enable support for parallel build on Windows.
* **[Java]** Add ability to async remove/close a publication by registration id.
* **[Java]** Fix publication leak in `ClusterBackup` when backup response timesout.
* **[C]** Improve agent logging in C media driver to be more consistent with Java driver.
* **[C]** Allow for configurable IO vector for `sendmmsg` and `recmmsg` in the C media driver. https://github.com/aeron-io/aeron/pull/1285[PR #1285].
* **[C]** Support static linking of the C media driver. https://github.com/aeron-io/aeron/pull/1261[PR #1261].
* **[Java/C]** Support ability to extend concurrent publications by setting initial values to be equivalent to exclusive publications.
* **[Java]** Fixed bug in `PriorityHeapTimerService.cancelTimerByCorrelationId`. https://github.com/aeron-io/aeron/pull/1281[PR #1281].
* **[C{plus}{plus}]** Improve error reporting in Archive client when a response is not received.
* **[Java/C{plus}{plus}]** Additional user specified delegating Invoker for Archive client to be used for progressing actions when awaiting responses.
* **[Java]** Rename Archive segment files before delete to avoid races with streams being extended.
* **[C{plus}{plus}]** Fixes for `ChannelUriStringBuilder`. https://github.com/aeron-io/aeron/pull/1268[PR #1268].
* **[Java]** Add admin command so that cluster snapshot can be triggered remotely via an authorised session.
* **[Java]** Support authorisation of service actions with a new API `AuthorisationService`. The hooks for this have been added to Archive requests and Cluster Snapshot requests.
* **[Java/C]** Support adding spy and IPC destinations to MDS subscriptions so destinations can be all channel types.
* **[Java]** Ensure Cluster will start on a consistent initial term id when racing to create first term.
* **[Java]** Prevent unnecessary creation of `RecordingLog` files when using `ClusterTool`.
* **[Java]** Add cluster session timeout to set adjusted when debugging.
* **[C]** Fixes to prevent message duplication and unnecessary sending of messages in MDS.
* Minimum CMake version was raised to 3.14.
* Upgrade to HdrHistogram_c 1.11.4.
* Upgrade to BND 6.2.0.
* Upgrade to Versions 0.42.0.
* Upgrade to Mockito 4.4.0.
* Upgrade to ByteBuddy 1.12.9.
* Upgrade to Shadow 7.1.2.
* Upgrade to Gradle 7.4.2.
* Upgrade to JUnit 5.8.2.
* Upgrade to Checkstyle 9.3.
* Upgrade to SBE 1.25.2.
* Upgrade to Agrona 1.15.0.
== 1.37.0 (2021-11-26)
* **[Java]** Improve error messages on channel conflicts.
* **[C]** Remove replicated command prefix in debug agent logging.
* **[Java]** Use async publication add for async connect to an Archive to minimise the impact of name resolution pauses.
* **[Java]** Make `ClusterConfig.calculatePort` public.
* **[C]** Correct channel length on metadata for stream counters.
* **[Java]** Extract channel value from counter label
gitextract_dqzhhjkk/ ├── .gitattributes ├── .github/ │ ├── codeql/ │ │ └── codeql-config.yml │ └── workflows/ │ ├── ci-low-cadence.yml │ ├── ci.yml │ ├── codeql.yml │ └── release.yml ├── .gitignore ├── CHANGELOG.adoc ├── CMakeLists.txt ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── aeron-agent/ │ ├── README.md │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── aeron/ │ │ │ └── agent/ │ │ │ ├── ArchiveComponentLogger.java │ │ │ ├── ArchiveEventCode.java │ │ │ ├── ArchiveEventDissector.java │ │ │ ├── ArchiveEventEncoder.java │ │ │ ├── ArchiveEventLogger.java │ │ │ ├── ArchiveInterceptor.java │ │ │ ├── ChannelEndpointInterceptor.java │ │ │ ├── CleanupInterceptor.java │ │ │ ├── ClusterComponentLogger.java │ │ │ ├── ClusterEventCode.java │ │ │ ├── ClusterEventDissector.java │ │ │ ├── ClusterEventEncoder.java │ │ │ ├── ClusterEventLogger.java │ │ │ ├── ClusterInterceptor.java │ │ │ ├── CmdInterceptor.java │ │ │ ├── CollectingEventLogReaderAgent.java │ │ │ ├── CollectingEventLogReaderAgentMBean.java │ │ │ ├── CommonEventDissector.java │ │ │ ├── CommonEventEncoder.java │ │ │ ├── ComponentLogger.java │ │ │ ├── ConfigOption.java │ │ │ ├── ControlInterceptor.java │ │ │ ├── DissectFunction.java │ │ │ ├── DriverComponentLogger.java │ │ │ ├── DriverEventCode.java │ │ │ ├── DriverEventDissector.java │ │ │ ├── DriverEventEncoder.java │ │ │ ├── DriverEventLogger.java │ │ │ ├── DriverInterceptor.java │ │ │ ├── DynamicLoggingAgent.java │ │ │ ├── EventCode.java │ │ │ ├── EventCodeType.java │ │ │ ├── EventConfiguration.java │ │ │ ├── EventLogAgent.java │ │ │ ├── EventLogReaderAgent.java │ │ │ ├── LogUtil.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── io.aeron.agent.ComponentLogger │ └── test/ │ └── java/ │ └── io/ │ └── aeron/ │ └── agent/ │ ├── AgentTests.java │ ├── ArchiveEventCodeTest.java │ ├── ArchiveEventDissectorTest.java │ ├── ArchiveEventEncoderTest.java │ ├── ArchiveEventLoggerTest.java │ ├── ArchiveLoggingAgentTest.java │ ├── ClusterEventCodeTest.java │ ├── ClusterEventDissectorTest.java │ ├── ClusterEventEncoderTest.java │ ├── ClusterEventLoggerTest.java │ ├── ClusterLoggingAgentTest.java │ ├── CommonEventDissectorTest.java │ ├── CommonEventEncoderTest.java │ ├── ConfigOptionTest.java │ ├── DriverEventCodeTest.java │ ├── DriverEventDissectorTest.java │ ├── DriverEventEncoderTest.java │ ├── DriverEventLoggerTest.java │ ├── DriverLoggingAgentTest.java │ ├── EventConfigurationTest.java │ ├── EventLogReaderAgentTest.java │ └── LogUtilTest.java ├── aeron-all/ │ └── README.md ├── aeron-annotations/ │ └── src/ │ └── main/ │ ├── java/ │ │ └── io/ │ │ └── aeron/ │ │ ├── api/ │ │ │ └── InternalApi.java │ │ ├── config/ │ │ │ ├── Config.java │ │ │ ├── ConfigInfo.java │ │ │ ├── ConfigProcessor.java │ │ │ ├── DefaultType.java │ │ │ ├── ExpectedCConfig.java │ │ │ ├── ExpectedConfig.java │ │ │ ├── docgen/ │ │ │ │ ├── ConfigDocGenerator.java │ │ │ │ └── GenerateConfigDocTask.java │ │ │ └── validation/ │ │ │ ├── Entry.java │ │ │ ├── ValidateConfigExpectationsTask.java │ │ │ ├── Validation.java │ │ │ ├── ValidationReport.java │ │ │ └── Validator.java │ │ ├── counter/ │ │ │ ├── AeronCounter.java │ │ │ ├── CounterInfo.java │ │ │ ├── CounterProcessor.java │ │ │ └── validation/ │ │ │ ├── ValidateCounterExpectationsTask.java │ │ │ ├── Validation.java │ │ │ ├── ValidationReport.java │ │ │ └── Validator.java │ │ ├── utility/ │ │ │ ├── ElementIO.java │ │ │ └── Processor.java │ │ ├── validation/ │ │ │ └── Grep.java │ │ └── version/ │ │ ├── Version.java │ │ ├── VersionProcessor.java │ │ └── Versioned.java │ └── resources/ │ └── META-INF/ │ └── services/ │ └── javax.annotation.processing.Processor ├── aeron-archive/ │ ├── README.md │ └── src/ │ ├── main/ │ │ ├── c/ │ │ │ ├── CMakeLists.txt │ │ │ └── client/ │ │ │ ├── README.md │ │ │ ├── aeron_archive.h │ │ │ ├── aeron_archive_async_connect.c │ │ │ ├── aeron_archive_async_connect.h │ │ │ ├── aeron_archive_client.c │ │ │ ├── aeron_archive_client.h │ │ │ ├── aeron_archive_client_version.c │ │ │ ├── aeron_archive_client_version.h │ │ │ ├── aeron_archive_configuration.c │ │ │ ├── aeron_archive_configuration.h │ │ │ ├── aeron_archive_context.c │ │ │ ├── aeron_archive_context.h │ │ │ ├── aeron_archive_control_response_poller.c │ │ │ ├── aeron_archive_control_response_poller.h │ │ │ ├── aeron_archive_credentials_supplier.c │ │ │ ├── aeron_archive_credentials_supplier.h │ │ │ ├── aeron_archive_proxy.c │ │ │ ├── aeron_archive_proxy.h │ │ │ ├── aeron_archive_recording_descriptor_poller.c │ │ │ ├── aeron_archive_recording_descriptor_poller.h │ │ │ ├── aeron_archive_recording_pos.c │ │ │ ├── aeron_archive_recording_signal.c │ │ │ ├── aeron_archive_recording_signal.h │ │ │ ├── aeron_archive_recording_subscription_descriptor_poller.c │ │ │ ├── aeron_archive_recording_subscription_descriptor_poller.h │ │ │ ├── aeron_archive_replay_merge.c │ │ │ ├── aeron_archive_replay_params.c │ │ │ ├── aeron_archive_replay_params.h │ │ │ └── aeron_archive_replication_params.c │ │ ├── cpp_wrapper/ │ │ │ ├── CMakeLists.txt │ │ │ └── client/ │ │ │ ├── archive/ │ │ │ │ ├── AeronArchive.h │ │ │ │ ├── ArchiveContext.h │ │ │ │ ├── CredentialsSupplier.h │ │ │ │ ├── RecordingPos.h │ │ │ │ ├── ReplayMerge.h │ │ │ │ ├── ReplayParams.h │ │ │ │ └── ReplicationParams.h │ │ │ └── util/ │ │ │ └── ArchiveExceptions.h │ │ ├── java/ │ │ │ └── io/ │ │ │ └── aeron/ │ │ │ └── archive/ │ │ │ ├── AbstractListRecordingsSession.java │ │ │ ├── Archive.java │ │ │ ├── ArchiveConductor.java │ │ │ ├── ArchiveCounters.java │ │ │ ├── ArchiveMarkFile.java │ │ │ ├── ArchiveMigrationPlanner.java │ │ │ ├── ArchiveMigrationStep.java │ │ │ ├── ArchiveMigration_0_1.java │ │ │ ├── ArchiveMigration_1_2.java │ │ │ ├── ArchiveMigration_2_3.java │ │ │ ├── ArchiveThreadingMode.java │ │ │ ├── ArchiveTool.java │ │ │ ├── ArchivingMediaDriver.java │ │ │ ├── Catalog.java │ │ │ ├── CatalogIndex.java │ │ │ ├── CatalogTool.java │ │ │ ├── CatalogView.java │ │ │ ├── ControlRequestDecoders.java │ │ │ ├── ControlResponseProxy.java │ │ │ ├── ControlSession.java │ │ │ ├── ControlSessionAdapter.java │ │ │ ├── ControlSessionCounter.java │ │ │ ├── ControlSessionProxy.java │ │ │ ├── CreateReplayPublicationSession.java │ │ │ ├── DedicatedModeArchiveConductor.java │ │ │ ├── DeleteSegmentsSession.java │ │ │ ├── ListRecordingByIdSession.java │ │ │ ├── ListRecordingSubscriptionsSession.java │ │ │ ├── ListRecordingsForUriSession.java │ │ │ ├── ListRecordingsSession.java │ │ │ ├── MigrationUtils.java │ │ │ ├── RecordingEventsProxy.java │ │ │ ├── RecordingReader.java │ │ │ ├── RecordingSession.java │ │ │ ├── RecordingSummary.java │ │ │ ├── RecordingWriter.java │ │ │ ├── ReplaySession.java │ │ │ ├── ReplicationCredentialsSupplier.java │ │ │ ├── ReplicationSession.java │ │ │ ├── Session.java │ │ │ ├── SessionWorker.java │ │ │ ├── SharedModeArchiveConductor.java │ │ │ ├── SimpleFragmentHandler.java │ │ │ ├── UpdateChannelSession.java │ │ │ ├── checksum/ │ │ │ │ ├── Checksum.java │ │ │ │ ├── Checksums.java │ │ │ │ └── package-info.java │ │ │ ├── client/ │ │ │ │ ├── AeronArchive.java │ │ │ │ ├── ArchiveEvent.java │ │ │ │ ├── ArchiveException.java │ │ │ │ ├── ArchiveProxy.java │ │ │ │ ├── ControlEventListener.java │ │ │ │ ├── ControlResponseAdapter.java │ │ │ │ ├── ControlResponseListener.java │ │ │ │ ├── ControlResponsePoller.java │ │ │ │ ├── RecordingDescriptorConsumer.java │ │ │ │ ├── RecordingDescriptorPoller.java │ │ │ │ ├── RecordingEventsAdapter.java │ │ │ │ ├── RecordingEventsListener.java │ │ │ │ ├── RecordingEventsPoller.java │ │ │ │ ├── RecordingSignalAdapter.java │ │ │ │ ├── RecordingSignalConsumer.java │ │ │ │ ├── RecordingSignalPoller.java │ │ │ │ ├── RecordingSubscriptionDescriptorConsumer.java │ │ │ │ ├── RecordingSubscriptionDescriptorPoller.java │ │ │ │ ├── ReplayMerge.java │ │ │ │ ├── ReplayParams.java │ │ │ │ ├── ReplicationParams.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── status/ │ │ │ ├── RecordingPos.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── archive/ │ │ ├── aeron-archive-codecs.xml │ │ ├── aeron-archive-mark-codecs.xml │ │ └── fpl/ │ │ └── sbe.xsd │ └── test/ │ ├── c/ │ │ ├── CMakeLists.txt │ │ ├── TestArchive.h │ │ └── client/ │ │ └── aeron_archive_test.cpp │ ├── cpp_wrapper/ │ │ ├── AeronArchiveWrapperTest.cpp │ │ ├── CMakeLists.txt │ │ └── TestArchive.h │ └── java/ │ └── io/ │ └── aeron/ │ └── archive/ │ ├── ArchiveConductorTest.java │ ├── ArchiveContextTest.java │ ├── ArchiveCountersTest.java │ ├── ArchiveMarkFileTest.java │ ├── ArchiveMigrationUtils.java │ ├── ArchiveMigration_2_3Test.java │ ├── ArchiveTest.java │ ├── ArchiveTests.java │ ├── ArchiveToolCliTest.java │ ├── ArchiveToolSeparateMarkFileTest.java │ ├── ArchiveToolTests.java │ ├── CatalogIndexTest.java │ ├── CatalogTest.java │ ├── CatalogViewTest.java │ ├── ControlSessionAdapterTest.java │ ├── ControlSessionAdapterV6Test.java │ ├── ControlSessionTest.java │ ├── DeleteSegmentsSessionTest.java │ ├── FailControlResponseListener.java │ ├── FailRecordingEventsListener.java │ ├── ListRecordingByIdSessionTest.java │ ├── ListRecordingsForUriSessionTest.java │ ├── ListRecordingsSessionTest.java │ ├── RecordingSessionTest.java │ ├── RecordingWriterTest.java │ ├── ReplaySessionTest.java │ ├── checksum/ │ │ └── ChecksumsTest.java │ ├── client/ │ │ ├── AeronArchiveTest.java │ │ └── ArchiveExceptionTest.java │ └── status/ │ └── RecordingPosTest.java ├── aeron-client/ │ ├── README.md │ └── src/ │ ├── main/ │ │ ├── c/ │ │ │ ├── CMakeLists.txt │ │ │ ├── README.md │ │ │ ├── aeron_agent.c │ │ │ ├── aeron_agent.h │ │ │ ├── aeron_alloc.c │ │ │ ├── aeron_alloc.h │ │ │ ├── aeron_client.c │ │ │ ├── aeron_client.h │ │ │ ├── aeron_client_conductor.c │ │ │ ├── aeron_client_conductor.h │ │ │ ├── aeron_cnc.c │ │ │ ├── aeron_cnc_file_descriptor.c │ │ │ ├── aeron_cnc_file_descriptor.h │ │ │ ├── aeron_common.h │ │ │ ├── aeron_context.c │ │ │ ├── aeron_context.h │ │ │ ├── aeron_counter.c │ │ │ ├── aeron_counter.h │ │ │ ├── aeron_counters.h │ │ │ ├── aeron_exclusive_publication.c │ │ │ ├── aeron_exclusive_publication.h │ │ │ ├── aeron_fragment_assembler.c │ │ │ ├── aeron_fragment_assembler.h │ │ │ ├── aeron_image.c │ │ │ ├── aeron_image.h │ │ │ ├── aeron_log_buffer.c │ │ │ ├── aeron_log_buffer.h │ │ │ ├── aeron_publication.c │ │ │ ├── aeron_publication.h │ │ │ ├── aeron_socket.c │ │ │ ├── aeron_socket.h │ │ │ ├── aeron_subscription.c │ │ │ ├── aeron_subscription.h │ │ │ ├── aeron_version.c │ │ │ ├── aeron_windows.c │ │ │ ├── aeron_windows.h │ │ │ ├── aeronc.c │ │ │ ├── aeronc.h │ │ │ ├── collections/ │ │ │ │ ├── aeron_array_to_ptr_hash_map.c │ │ │ │ ├── aeron_array_to_ptr_hash_map.h │ │ │ │ ├── aeron_bit_set.c │ │ │ │ ├── aeron_bit_set.h │ │ │ │ ├── aeron_hashing.c │ │ │ │ ├── aeron_hashing.h │ │ │ │ ├── aeron_int64_counter_map.c │ │ │ │ ├── aeron_int64_counter_map.h │ │ │ │ ├── aeron_int64_to_ptr_hash_map.c │ │ │ │ ├── aeron_int64_to_ptr_hash_map.h │ │ │ │ ├── aeron_int64_to_tagged_ptr_hash_map.c │ │ │ │ ├── aeron_int64_to_tagged_ptr_hash_map.h │ │ │ │ ├── aeron_linked_queue.c │ │ │ │ ├── aeron_linked_queue.h │ │ │ │ ├── aeron_map.c │ │ │ │ ├── aeron_map.h │ │ │ │ ├── aeron_str_to_ptr_hash_map.c │ │ │ │ └── aeron_str_to_ptr_hash_map.h │ │ │ ├── command/ │ │ │ │ └── aeron_control_protocol.h │ │ │ ├── concurrent/ │ │ │ │ ├── aeron_atomic.c │ │ │ │ ├── aeron_atomic.h │ │ │ │ ├── aeron_atomic64_c11.h │ │ │ │ ├── aeron_atomic64_gcc_x86_64.h │ │ │ │ ├── aeron_atomic64_msvc.h │ │ │ │ ├── aeron_blocking_linked_queue.c │ │ │ │ ├── aeron_blocking_linked_queue.h │ │ │ │ ├── aeron_broadcast_descriptor.h │ │ │ │ ├── aeron_broadcast_receiver.c │ │ │ │ ├── aeron_broadcast_receiver.h │ │ │ │ ├── aeron_broadcast_transmitter.c │ │ │ │ ├── aeron_broadcast_transmitter.h │ │ │ │ ├── aeron_concurrent_array_queue.h │ │ │ │ ├── aeron_counters_manager.c │ │ │ │ ├── aeron_counters_manager.h │ │ │ │ ├── aeron_distinct_error_log.c │ │ │ │ ├── aeron_distinct_error_log.h │ │ │ │ ├── aeron_executor.c │ │ │ │ ├── aeron_executor.h │ │ │ │ ├── aeron_logbuffer_descriptor.c │ │ │ │ ├── aeron_logbuffer_descriptor.h │ │ │ │ ├── aeron_mpsc_concurrent_array_queue.c │ │ │ │ ├── aeron_mpsc_concurrent_array_queue.h │ │ │ │ ├── aeron_mpsc_rb.c │ │ │ │ ├── aeron_mpsc_rb.h │ │ │ │ ├── aeron_rb.h │ │ │ │ ├── aeron_spsc_concurrent_array_queue.c │ │ │ │ ├── aeron_spsc_concurrent_array_queue.h │ │ │ │ ├── aeron_spsc_rb.c │ │ │ │ ├── aeron_spsc_rb.h │ │ │ │ ├── aeron_term_gap_filler.c │ │ │ │ ├── aeron_term_gap_filler.h │ │ │ │ ├── aeron_term_gap_scanner.c │ │ │ │ ├── aeron_term_gap_scanner.h │ │ │ │ ├── aeron_term_rebuilder.c │ │ │ │ ├── aeron_term_rebuilder.h │ │ │ │ ├── aeron_term_scanner.c │ │ │ │ ├── aeron_term_scanner.h │ │ │ │ ├── aeron_term_unblocker.c │ │ │ │ ├── aeron_term_unblocker.h │ │ │ │ ├── aeron_thread.c │ │ │ │ └── aeron_thread.h │ │ │ ├── protocol/ │ │ │ │ ├── aeron_udp_protocol.c │ │ │ │ └── aeron_udp_protocol.h │ │ │ ├── reports/ │ │ │ │ ├── aeron_loss_reporter.c │ │ │ │ └── aeron_loss_reporter.h │ │ │ ├── status/ │ │ │ │ ├── aeron_local_sockaddr.c │ │ │ │ └── aeron_local_sockaddr.h │ │ │ ├── uri/ │ │ │ │ ├── aeron_uri.c │ │ │ │ ├── aeron_uri.h │ │ │ │ ├── aeron_uri_string_builder.c │ │ │ │ └── aeron_uri_string_builder.h │ │ │ └── util/ │ │ │ ├── aeron_arrayutil.c │ │ │ ├── aeron_arrayutil.h │ │ │ ├── aeron_bitutil.c │ │ │ ├── aeron_bitutil.h │ │ │ ├── aeron_clock.c │ │ │ ├── aeron_clock.h │ │ │ ├── aeron_deque.c │ │ │ ├── aeron_deque.h │ │ │ ├── aeron_dlopen.c │ │ │ ├── aeron_dlopen.h │ │ │ ├── aeron_env.c │ │ │ ├── aeron_env.h │ │ │ ├── aeron_error.c │ │ │ ├── aeron_error.h │ │ │ ├── aeron_fileutil.c │ │ │ ├── aeron_fileutil.h │ │ │ ├── aeron_http_util.c │ │ │ ├── aeron_http_util.h │ │ │ ├── aeron_math.c │ │ │ ├── aeron_math.h │ │ │ ├── aeron_netutil.c │ │ │ ├── aeron_netutil.h │ │ │ ├── aeron_parse_util.c │ │ │ ├── aeron_parse_util.h │ │ │ ├── aeron_platform.h │ │ │ ├── aeron_properties_util.c │ │ │ ├── aeron_properties_util.h │ │ │ ├── aeron_strutil.c │ │ │ ├── aeron_strutil.h │ │ │ ├── aeron_symbol_table.c │ │ │ └── aeron_symbol_table.h │ │ ├── cpp_wrapper/ │ │ │ ├── Aeron.h │ │ │ ├── AeronCounters.h │ │ │ ├── BufferBuilder.h │ │ │ ├── CMakeLists.txt │ │ │ ├── ChannelUri.h │ │ │ ├── ChannelUriStringBuilder.h │ │ │ ├── ClientConductor.h │ │ │ ├── CncFileDescriptor.h │ │ │ ├── CncFileReader.h │ │ │ ├── Context.h │ │ │ ├── ControlledFragmentAssembler.h │ │ │ ├── Counter.h │ │ │ ├── ExclusivePublication.h │ │ │ ├── FragmentAssembler.h │ │ │ ├── HeartbeatTimestamp.h │ │ │ ├── Image.h │ │ │ ├── ImageControlledFragmentAssembler.h │ │ │ ├── ImageFragmentAssembler.h │ │ │ ├── Publication.h │ │ │ ├── Subscription.h │ │ │ ├── concurrent/ │ │ │ │ ├── AgentInvoker.h │ │ │ │ ├── AgentRunner.h │ │ │ │ ├── Atomic64.h │ │ │ │ ├── AtomicBuffer.h │ │ │ │ ├── AtomicCounter.h │ │ │ │ ├── BackOffIdleStrategy.h │ │ │ │ ├── BusySpinIdleStrategy.h │ │ │ │ ├── CountersReader.h │ │ │ │ ├── NoOpIdleStrategy.h │ │ │ │ ├── SleepingIdleStrategy.h │ │ │ │ ├── YieldingIdleStrategy.h │ │ │ │ ├── atomic/ │ │ │ │ │ ├── Atomic64_gcc_cpp11.h │ │ │ │ │ ├── Atomic64_gcc_x86_64.h │ │ │ │ │ └── Atomic64_msvc.h │ │ │ │ ├── errors/ │ │ │ │ │ ├── ErrorLogDescriptor.h │ │ │ │ │ └── ErrorLogReader.h │ │ │ │ ├── logbuffer/ │ │ │ │ │ ├── BufferClaim.h │ │ │ │ │ ├── DataFrameHeader.h │ │ │ │ │ ├── FrameDescriptor.h │ │ │ │ │ ├── Header.h │ │ │ │ │ ├── LogBufferDescriptor.h │ │ │ │ │ └── TermReader.h │ │ │ │ └── status/ │ │ │ │ ├── Position.h │ │ │ │ ├── ReadablePosition.h │ │ │ │ ├── StatusIndicatorReader.h │ │ │ │ └── UnsafeBufferPosition.h │ │ │ ├── status/ │ │ │ │ └── PublicationErrorFrame.h │ │ │ └── util/ │ │ │ ├── BitUtil.h │ │ │ ├── CommandOption.h │ │ │ ├── CommandOptionParser.h │ │ │ ├── Exceptions.h │ │ │ ├── Index.h │ │ │ ├── LangUtil.h │ │ │ ├── MacroUtil.h │ │ │ ├── MemoryMappedFile.h │ │ │ ├── Platform.h │ │ │ ├── ScopeUtils.h │ │ │ └── StringUtil.h │ │ └── java/ │ │ └── io/ │ │ └── aeron/ │ │ ├── Aeron.java │ │ ├── AeronCounters.java │ │ ├── AvailableCounterHandler.java │ │ ├── AvailableImageHandler.java │ │ ├── BufferBuilder.java │ │ ├── ChannelUri.java │ │ ├── ChannelUriStringBuilder.java │ │ ├── ClientConductor.java │ │ ├── CncFileDescriptor.java │ │ ├── CommonContext.java │ │ ├── ConcurrentPublication.java │ │ ├── ControlledFragmentAssembler.java │ │ ├── Counter.java │ │ ├── CounterProvider.java │ │ ├── DirectBufferVector.java │ │ ├── DriverEventsAdapter.java │ │ ├── DriverProxy.java │ │ ├── ErrorCode.java │ │ ├── ExclusivePublication.java │ │ ├── FragmentAssembler.java │ │ ├── Image.java │ │ ├── ImageControlledFragmentAssembler.java │ │ ├── ImageFragmentAssembler.java │ │ ├── LogBuffers.java │ │ ├── LogBuffersFactory.java │ │ ├── MappedLogBuffersFactory.java │ │ ├── Publication.java │ │ ├── PublicationErrorFrameHandler.java │ │ ├── ReservedValueSupplier.java │ │ ├── RethrowingErrorHandler.java │ │ ├── Subscription.java │ │ ├── UnavailableCounterHandler.java │ │ ├── UnavailableImageHandler.java │ │ ├── command/ │ │ │ ├── ClientTimeoutFlyweight.java │ │ │ ├── ControlProtocolEvents.java │ │ │ ├── CorrelatedMessageFlyweight.java │ │ │ ├── CounterMessageFlyweight.java │ │ │ ├── CounterUpdateFlyweight.java │ │ │ ├── DestinationByIdMessageFlyweight.java │ │ │ ├── DestinationMessageFlyweight.java │ │ │ ├── ErrorResponseFlyweight.java │ │ │ ├── GetNextAvailableSessionIdMessageFlyweight.java │ │ │ ├── ImageBuffersReadyFlyweight.java │ │ │ ├── ImageMessageFlyweight.java │ │ │ ├── NextAvailableSessionIdFlyweight.java │ │ │ ├── OperationSucceededFlyweight.java │ │ │ ├── PublicationBuffersReadyFlyweight.java │ │ │ ├── PublicationErrorFrameFlyweight.java │ │ │ ├── PublicationMessageFlyweight.java │ │ │ ├── RejectImageFlyweight.java │ │ │ ├── RemoveCounterFlyweight.java │ │ │ ├── RemoveMessageFlyweight.java │ │ │ ├── RemovePublicationFlyweight.java │ │ │ ├── RemoveSubscriptionFlyweight.java │ │ │ ├── StaticCounterFlyweight.java │ │ │ ├── StaticCounterMessageFlyweight.java │ │ │ ├── SubscriptionMessageFlyweight.java │ │ │ ├── SubscriptionReadyFlyweight.java │ │ │ ├── TerminateDriverFlyweight.java │ │ │ └── package-info.java │ │ ├── exceptions/ │ │ │ ├── AeronEvent.java │ │ │ ├── AeronException.java │ │ │ ├── ChannelEndpointException.java │ │ │ ├── ClientTimeoutException.java │ │ │ ├── ConcurrentConcludeException.java │ │ │ ├── ConductorServiceTimeoutException.java │ │ │ ├── ConfigurationException.java │ │ │ ├── ControlProtocolException.java │ │ │ ├── DriverTimeoutException.java │ │ │ ├── RegistrationException.java │ │ │ ├── StorageSpaceException.java │ │ │ ├── TimeoutException.java │ │ │ └── package-info.java │ │ ├── logbuffer/ │ │ │ ├── BlockHandler.java │ │ │ ├── BufferClaim.java │ │ │ ├── ControlledFragmentHandler.java │ │ │ ├── FragmentHandler.java │ │ │ ├── FrameDescriptor.java │ │ │ ├── Header.java │ │ │ ├── HeaderWriter.java │ │ │ ├── LogBufferDescriptor.java │ │ │ ├── LogBufferUnblocker.java │ │ │ ├── RawBlockHandler.java │ │ │ ├── TermBlockScanner.java │ │ │ ├── TermGapFiller.java │ │ │ ├── TermGapScanner.java │ │ │ ├── TermReader.java │ │ │ ├── TermRebuilder.java │ │ │ ├── TermScanner.java │ │ │ ├── TermUnblocker.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── protocol/ │ │ │ ├── DataHeaderFlyweight.java │ │ │ ├── ErrorFlyweight.java │ │ │ ├── HeaderFlyweight.java │ │ │ ├── NakFlyweight.java │ │ │ ├── ResolutionEntryFlyweight.java │ │ │ ├── ResponseSetupFlyweight.java │ │ │ ├── RttMeasurementFlyweight.java │ │ │ ├── SetupFlyweight.java │ │ │ ├── StatusMessageFlyweight.java │ │ │ └── package-info.java │ │ ├── security/ │ │ │ ├── AuthenticationException.java │ │ │ ├── Authenticator.java │ │ │ ├── AuthenticatorSupplier.java │ │ │ ├── AuthorisationService.java │ │ │ ├── AuthorisationServiceSupplier.java │ │ │ ├── CredentialsSupplier.java │ │ │ ├── DefaultAuthenticatorSupplier.java │ │ │ ├── NullCredentialsSupplier.java │ │ │ ├── SessionProxy.java │ │ │ ├── SimpleAuthenticator.java │ │ │ ├── SimpleAuthorisationService.java │ │ │ └── package-info.java │ │ └── status/ │ │ ├── ChannelEndpointStatus.java │ │ ├── HeartbeatTimestamp.java │ │ ├── LocalSocketAddressStatus.java │ │ ├── PublicationErrorFrame.java │ │ ├── ReadableCounter.java │ │ └── package-info.java │ └── test/ │ ├── c/ │ │ ├── CMakeLists.txt │ │ ├── aeron_alloc_test.cpp │ │ ├── aeron_client_conductor_test.cpp │ │ ├── aeron_client_test_utils.h │ │ ├── aeron_controlled_fragment_assembler_test.cpp │ │ ├── aeron_controlled_image_fragment_assembler_test.cpp │ │ ├── aeron_exclusive_publication_test.cpp │ │ ├── aeron_fragment_assembler_test.cpp │ │ ├── aeron_image_fragment_assembler_test.cpp │ │ ├── aeron_image_test.cpp │ │ ├── aeron_publication_test.cpp │ │ ├── aeron_subscription_test.cpp │ │ ├── aeron_uri_test.cpp │ │ ├── aeron_version_test.cpp │ │ ├── collections/ │ │ │ ├── aeron_array_to_ptr_hash_map_test.cpp │ │ │ ├── aeron_bit_set_test.cpp │ │ │ ├── aeron_int64_counter_map_test.cpp │ │ │ ├── aeron_int64_to_ptr_hash_map_test.cpp │ │ │ ├── aeron_int64_to_tagged_ptr_hash_map_test.cpp │ │ │ ├── aeron_linked_queue_test.cpp │ │ │ └── aeron_str_to_ptr_hash_map_test.cpp │ │ ├── concurrent/ │ │ │ ├── aeron_atomic_test.cpp │ │ │ ├── aeron_blocking_linked_queue_test.cpp │ │ │ ├── aeron_broadcast_receiver_test.cpp │ │ │ ├── aeron_broadcast_transmitter_test.cpp │ │ │ ├── aeron_counters_test.cpp │ │ │ ├── aeron_distinct_error_log_test.cpp │ │ │ ├── aeron_executor_test.cpp │ │ │ ├── aeron_mpsc_concurrent_array_queue_test.cpp │ │ │ ├── aeron_mpsc_rb_test.cpp │ │ │ ├── aeron_spsc_concurrent_array_queue_test.cpp │ │ │ ├── aeron_spsc_rb_test.cpp │ │ │ └── aeron_thread_test.cpp │ │ └── util/ │ │ ├── aeron_bitutil_test.cpp │ │ ├── aeron_deque_test.cpp │ │ ├── aeron_error_test.cpp │ │ ├── aeron_fileutil_test.cpp │ │ ├── aeron_httputil_test.cpp │ │ ├── aeron_math_test.cpp │ │ ├── aeron_netutil_test.cpp │ │ ├── aeron_strutil_test.cpp │ │ └── aeron_symbol_table_test.cpp │ ├── cpp_wrapper/ │ │ ├── CMakeLists.txt │ │ ├── ChannelUriStringBuilderTest.cpp │ │ ├── ControlledFragmentAssemblerTest.cpp │ │ ├── ControlledFragmentAssemblerTestFixture.h │ │ ├── CountersTest.cpp │ │ ├── EmbeddedMediaDriver.h │ │ ├── ExceptionsTest.cpp │ │ ├── FragmentAssemblerTest.cpp │ │ ├── FragmentAssemblerTestFixture.h │ │ ├── ImageControlledFragmentAssemblerTest.cpp │ │ ├── ImageControlledFragmentAssemblerTestFixture.h │ │ ├── ImageFragmentAssemblerTest.cpp │ │ ├── ImageFragmentAssemblerTestFixture.h │ │ ├── ImageTest.cpp │ │ ├── LivenessTimeoutTest.cpp │ │ ├── LocalAddressesTest.cpp │ │ ├── MultiDestinationByIdTest.cpp │ │ ├── MultiDestinationTest.cpp │ │ ├── PubSubTest.cpp │ │ ├── PublicationRevokeTest.cpp │ │ ├── RejectImageTest.cpp │ │ ├── ResponseChannelsTest.cpp │ │ ├── SystemTest.cpp │ │ ├── TestUtil.h │ │ └── WrapperSystemTest.cpp │ └── java/ │ └── io/ │ └── aeron/ │ ├── AeronContextTest.java │ ├── AeronCountersTest.java │ ├── BufferBuilderTest.java │ ├── ChannelUriStringBuilderTest.java │ ├── ChannelUriTest.java │ ├── ClientConductorTest.java │ ├── CommonContextTest.java │ ├── DriverProxyTest.java │ ├── FlyweightTest.java │ ├── FragmentAssemblerTest.java │ ├── ImageTest.java │ ├── LogBuffersTest.java │ ├── PublicationTest.java │ ├── SubscriptionTest.java │ ├── TimestampUtilTest.java │ ├── VerifyBuildTimePropertiesTest.java │ ├── command/ │ │ ├── CounterMessageFlyweightTest.java │ │ └── TerminateDriverFlyweightTest.java │ ├── exceptions/ │ │ └── StorageSpaceExceptionTest.java │ ├── logbuffer/ │ │ ├── HeaderTest.java │ │ ├── HeaderWriterTest.java │ │ ├── LogBufferDescriptorTest.java │ │ ├── LogBufferUnblockerTest.java │ │ ├── TermBlockScannerTest.java │ │ ├── TermGapFillerTest.java │ │ ├── TermGapScannerTest.java │ │ ├── TermReaderTest.java │ │ ├── TermRebuilderTest.java │ │ ├── TermScannerTest.java │ │ └── TermUnblockerTest.java │ ├── protocol/ │ │ ├── ErrorFlyweightTest.java │ │ └── HeaderFlyweightTest.java │ └── security/ │ └── AuthorisationServiceTest.java ├── aeron-cluster/ │ ├── README.md │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── aeron/ │ │ │ └── cluster/ │ │ │ ├── AllowBackupAndStandbyAuthorisationService.java │ │ │ ├── AppVersionValidator.java │ │ │ ├── ClusterBackup.java │ │ │ ├── ClusterBackupAgent.java │ │ │ ├── ClusterBackupEventsListener.java │ │ │ ├── ClusterBackupMediaDriver.java │ │ │ ├── ClusterClientSession.java │ │ │ ├── ClusterControl.java │ │ │ ├── ClusterControlAdapter.java │ │ │ ├── ClusterMember.java │ │ │ ├── ClusterMembership.java │ │ │ ├── ClusterSession.java │ │ │ ├── ClusterSessionProxy.java │ │ │ ├── ClusterTermination.java │ │ │ ├── ClusterTool.java │ │ │ ├── ClusterToolCommand.java │ │ │ ├── ClusterToolOperator.java │ │ │ ├── ClusteredArchive.java │ │ │ ├── ClusteredMediaDriver.java │ │ │ ├── ConsensusAdapter.java │ │ │ ├── ConsensusControlState.java │ │ │ ├── ConsensusModule.java │ │ │ ├── ConsensusModuleAdapter.java │ │ │ ├── ConsensusModuleAgent.java │ │ │ ├── ConsensusModuleControl.java │ │ │ ├── ConsensusModuleExtension.java │ │ │ ├── ConsensusModuleSnapshotAdapter.java │ │ │ ├── ConsensusModuleSnapshotListener.java │ │ │ ├── ConsensusModuleSnapshotPrinter.java │ │ │ ├── ConsensusModuleSnapshotTaker.java │ │ │ ├── ConsensusModuleStateExport.java │ │ │ ├── ConsensusPublisher.java │ │ │ ├── EgressPublisher.java │ │ │ ├── Election.java │ │ │ ├── ElectionState.java │ │ │ ├── IngressAdapter.java │ │ │ ├── LogAdapter.java │ │ │ ├── LogPublisher.java │ │ │ ├── LogReplay.java │ │ │ ├── LogSourceValidator.java │ │ │ ├── MillisecondClusterClock.java │ │ │ ├── MultipleRecordingReplication.java │ │ │ ├── NanosecondClusterClock.java │ │ │ ├── NodeControl.java │ │ │ ├── NodeStateFile.java │ │ │ ├── PendingServiceMessageTracker.java │ │ │ ├── PriorityHeapTimerService.java │ │ │ ├── PriorityHeapTimerServiceSupplier.java │ │ │ ├── PublicationGroup.java │ │ │ ├── RecordingExtent.java │ │ │ ├── RecordingLog.java │ │ │ ├── RecordingReplication.java │ │ │ ├── ServiceAck.java │ │ │ ├── ServiceProxy.java │ │ │ ├── SessionManager.java │ │ │ ├── SnapshotReplication.java │ │ │ ├── StandbySnapshotEntry.java │ │ │ ├── StandbySnapshotReplicator.java │ │ │ ├── TimerService.java │ │ │ ├── TimerServiceSupplier.java │ │ │ ├── ToggleApplication.java │ │ │ ├── WheelTimerService.java │ │ │ ├── WheelTimerServiceSupplier.java │ │ │ ├── client/ │ │ │ │ ├── AeronCluster.java │ │ │ │ ├── ClusterEvent.java │ │ │ │ ├── ClusterException.java │ │ │ │ ├── ControlledEgressAdapter.java │ │ │ │ ├── ControlledEgressListener.java │ │ │ │ ├── ControlledEgressListenerExtension.java │ │ │ │ ├── EgressAdapter.java │ │ │ │ ├── EgressListener.java │ │ │ │ ├── EgressListenerExtension.java │ │ │ │ ├── EgressPoller.java │ │ │ │ ├── IngressSessionDecorator.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── service/ │ │ │ ├── ActiveLogEvent.java │ │ │ ├── BoundedLogAdapter.java │ │ │ ├── ClientSession.java │ │ │ ├── Cluster.java │ │ │ ├── ClusterClock.java │ │ │ ├── ClusterCounters.java │ │ │ ├── ClusterMarkFile.java │ │ │ ├── ClusterNodeControlProperties.java │ │ │ ├── ClusterTerminationException.java │ │ │ ├── ClusteredService.java │ │ │ ├── ClusteredServiceAgent.java │ │ │ ├── ClusteredServiceContainer.java │ │ │ ├── ConsensusModuleProxy.java │ │ │ ├── ContainerClientSession.java │ │ │ ├── RecoveryState.java │ │ │ ├── ServiceAdapter.java │ │ │ ├── ServiceSnapshotLoader.java │ │ │ ├── ServiceSnapshotTaker.java │ │ │ ├── SnapshotDurationTracker.java │ │ │ ├── SnapshotTaker.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── cluster/ │ │ ├── aeron-cluster-codecs.xml │ │ ├── aeron-cluster-mark-codecs.xml │ │ ├── aeron-cluster-node-state-codecs.xml │ │ └── fpl/ │ │ └── sbe.xsd │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── aeron/ │ │ └── cluster/ │ │ ├── AuthenticationTest.java │ │ ├── ClusterBackupAgentTest.java │ │ ├── ClusterBackupContextTest.java │ │ ├── ClusterMemberTest.java │ │ ├── ClusterNodeRestartTest.java │ │ ├── ClusterNodeTest.java │ │ ├── ClusterTestConstants.java │ │ ├── ClusterTimerTest.java │ │ ├── ClusterWithNoServicesTest.java │ │ ├── ConsensusModuleAgentTest.java │ │ ├── ConsensusModuleConfigurationTest.java │ │ ├── ConsensusModuleContextCloseTests.java │ │ ├── ConsensusModuleContextTest.java │ │ ├── ConsensusModuleSnapshotTakerTest.java │ │ ├── ElectionTest.java │ │ ├── IngressAdapterTest.java │ │ ├── LogSourceValidatorTest.java │ │ ├── NameResolutionClusterNodeTest.java │ │ ├── NodeStateFileTest.java │ │ ├── PendingServiceMessageTrackerTest.java │ │ ├── PriorityHeapTimerServiceClusterTimeTest.java │ │ ├── PriorityHeapTimerServiceTest.java │ │ ├── PublicationGroupTest.java │ │ ├── RecordingLogTest.java │ │ ├── RecordingReplicationTest.java │ │ ├── SessionEventCodecCompatibilityTest.java │ │ ├── SessionManagerTest.java │ │ ├── SnapshotReplicationTest.java │ │ ├── StandbySnapshotReplicatorTest.java │ │ ├── WheelTimerServiceClusterTimeTest.java │ │ ├── client/ │ │ │ ├── AeronClusterAsyncConnectTest.java │ │ │ ├── AeronClusterContextTest.java │ │ │ ├── AeronClusterTest.java │ │ │ ├── EgressAdapterTest.java │ │ │ └── EgressPollerTest.java │ │ └── service/ │ │ ├── ClusterMarkFileTest.java │ │ ├── ClusteredServiceAgentTest.java │ │ ├── ClusteredServiceContainerContextTest.java │ │ └── ServiceSnapshotTakerTest.java │ └── resources/ │ └── aeron-cluster-mark-codecs-v0.xml ├── aeron-config.cmake.in ├── aeron-driver/ │ ├── README.md │ └── src/ │ ├── main/ │ │ ├── c/ │ │ │ ├── CMakeLists.txt │ │ │ ├── README.md │ │ │ ├── aeron_congestion_control.c │ │ │ ├── aeron_congestion_control.h │ │ │ ├── aeron_csv_table_name_resolver.c │ │ │ ├── aeron_csv_table_name_resolver.h │ │ │ ├── aeron_data_packet_dispatcher.c │ │ │ ├── aeron_data_packet_dispatcher.h │ │ │ ├── aeron_driver.c │ │ │ ├── aeron_driver.h │ │ │ ├── aeron_driver_common.h │ │ │ ├── aeron_driver_conductor.c │ │ │ ├── aeron_driver_conductor.h │ │ │ ├── aeron_driver_conductor_proxy.c │ │ │ ├── aeron_driver_conductor_proxy.h │ │ │ ├── aeron_driver_context.c │ │ │ ├── aeron_driver_context.h │ │ │ ├── aeron_driver_name_resolver.c │ │ │ ├── aeron_driver_name_resolver.h │ │ │ ├── aeron_driver_receiver.c │ │ │ ├── aeron_driver_receiver.h │ │ │ ├── aeron_driver_receiver_proxy.c │ │ │ ├── aeron_driver_receiver_proxy.h │ │ │ ├── aeron_driver_sender.c │ │ │ ├── aeron_driver_sender.h │ │ │ ├── aeron_driver_sender_proxy.c │ │ │ ├── aeron_driver_sender_proxy.h │ │ │ ├── aeron_driver_version.c │ │ │ ├── aeron_driver_version.h │ │ │ ├── aeron_duty_cycle_tracker.h │ │ │ ├── aeron_flow_control.c │ │ │ ├── aeron_flow_control.h │ │ │ ├── aeron_ipc_publication.c │ │ │ ├── aeron_ipc_publication.h │ │ │ ├── aeron_loss_detector.c │ │ │ ├── aeron_loss_detector.h │ │ │ ├── aeron_min_flow_control.c │ │ │ ├── aeron_name_resolver.c │ │ │ ├── aeron_name_resolver.h │ │ │ ├── aeron_name_resolver_cache.c │ │ │ ├── aeron_name_resolver_cache.h │ │ │ ├── aeron_network_publication.c │ │ │ ├── aeron_network_publication.h │ │ │ ├── aeron_port_manager.c │ │ │ ├── aeron_port_manager.h │ │ │ ├── aeron_position.c │ │ │ ├── aeron_position.h │ │ │ ├── aeron_publication_image.c │ │ │ ├── aeron_publication_image.h │ │ │ ├── aeron_retransmit_handler.c │ │ │ ├── aeron_retransmit_handler.h │ │ │ ├── aeron_system_counters.c │ │ │ ├── aeron_system_counters.h │ │ │ ├── aeron_termination_validator.c │ │ │ ├── aeron_termination_validator.h │ │ │ ├── aeronmd.c │ │ │ ├── aeronmd.h │ │ │ ├── agent/ │ │ │ │ ├── aeron_driver_agent.c │ │ │ │ └── aeron_driver_agent.h │ │ │ ├── concurrent/ │ │ │ │ ├── aeron_logbuffer_unblocker.c │ │ │ │ └── aeron_logbuffer_unblocker.h │ │ │ ├── media/ │ │ │ │ ├── aeron_receive_channel_endpoint.c │ │ │ │ ├── aeron_receive_channel_endpoint.h │ │ │ │ ├── aeron_receive_destination.c │ │ │ │ ├── aeron_receive_destination.h │ │ │ │ ├── aeron_send_channel_endpoint.c │ │ │ │ ├── aeron_send_channel_endpoint.h │ │ │ │ ├── aeron_timestamps.c │ │ │ │ ├── aeron_timestamps.h │ │ │ │ ├── aeron_udp_channel.c │ │ │ │ ├── aeron_udp_channel.h │ │ │ │ ├── aeron_udp_channel_transport.c │ │ │ │ ├── aeron_udp_channel_transport.h │ │ │ │ ├── aeron_udp_channel_transport_bindings.c │ │ │ │ ├── aeron_udp_channel_transport_bindings.h │ │ │ │ ├── aeron_udp_channel_transport_fixed_loss.c │ │ │ │ ├── aeron_udp_channel_transport_fixed_loss.h │ │ │ │ ├── aeron_udp_channel_transport_loss.c │ │ │ │ ├── aeron_udp_channel_transport_loss.h │ │ │ │ ├── aeron_udp_channel_transport_multi_gap_loss.c │ │ │ │ ├── aeron_udp_channel_transport_multi_gap_loss.h │ │ │ │ ├── aeron_udp_destination_tracker.c │ │ │ │ ├── aeron_udp_destination_tracker.h │ │ │ │ ├── aeron_udp_transport_poller.c │ │ │ │ └── aeron_udp_transport_poller.h │ │ │ └── uri/ │ │ │ ├── aeron_driver_uri.c │ │ │ └── aeron_driver_uri.h │ │ ├── java/ │ │ │ └── io/ │ │ │ └── aeron/ │ │ │ └── driver/ │ │ │ ├── AbstractMinMulticastFlowControl.java │ │ │ ├── AeronClient.java │ │ │ ├── ClientCommandAdapter.java │ │ │ ├── ClientProxy.java │ │ │ ├── CommandProxy.java │ │ │ ├── Configuration.java │ │ │ ├── CongestionControl.java │ │ │ ├── CongestionControlSupplier.java │ │ │ ├── CounterLink.java │ │ │ ├── DataPacketDispatcher.java │ │ │ ├── DefaultAllowTerminationValidator.java │ │ │ ├── DefaultCongestionControlSupplier.java │ │ │ ├── DefaultDenyTerminationValidator.java │ │ │ ├── DefaultMulticastFlowControlSupplier.java │ │ │ ├── DefaultNameResolver.java │ │ │ ├── DefaultReceiveChannelEndpointSupplier.java │ │ │ ├── DefaultSendChannelEndpointSupplier.java │ │ │ ├── DefaultUnicastFlowControlSupplier.java │ │ │ ├── DriverConductor.java │ │ │ ├── DriverConductorProxy.java │ │ │ ├── DriverManagedResource.java │ │ │ ├── DriverNameResolver.java │ │ │ ├── DriverNameResolverCache.java │ │ │ ├── DutyCycleTracker.java │ │ │ ├── FeedbackDelayGenerator.java │ │ │ ├── FlowControl.java │ │ │ ├── FlowControlSupplier.java │ │ │ ├── IpcPublication.java │ │ │ ├── IpcSubscriptionLink.java │ │ │ ├── LossDetector.java │ │ │ ├── LossHandler.java │ │ │ ├── MaxMulticastFlowControl.java │ │ │ ├── MaxMulticastFlowControlSupplier.java │ │ │ ├── MediaDriver.java │ │ │ ├── MinMulticastFlowControl.java │ │ │ ├── MinMulticastFlowControlSupplier.java │ │ │ ├── NameResolver.java │ │ │ ├── NamedCompositeAgent.java │ │ │ ├── NetworkPublication.java │ │ │ ├── NetworkPublicationThreadLocals.java │ │ │ ├── NetworkSubscriptionLink.java │ │ │ ├── OptimalMulticastDelayGenerator.java │ │ │ ├── PendingSetupMessageFromSource.java │ │ │ ├── PreferredMulticastFlowControl.java │ │ │ ├── PreferredMulticastFlowControlSupplier.java │ │ │ ├── PublicationImage.java │ │ │ ├── PublicationLink.java │ │ │ ├── PublicationParams.java │ │ │ ├── ReceiveChannelEndpointSupplier.java │ │ │ ├── Receiver.java │ │ │ ├── ReceiverLivenessTracker.java │ │ │ ├── ReceiverProxy.java │ │ │ ├── RetransmitHandler.java │ │ │ ├── RetransmitSender.java │ │ │ ├── SendChannelEndpointSupplier.java │ │ │ ├── Sender.java │ │ │ ├── SenderProxy.java │ │ │ ├── SessionKey.java │ │ │ ├── SpySubscriptionLink.java │ │ │ ├── StaticDelayGenerator.java │ │ │ ├── StaticWindowCongestionControl.java │ │ │ ├── Subscribable.java │ │ │ ├── SubscriberPosition.java │ │ │ ├── SubscriptionLink.java │ │ │ ├── SubscriptionParams.java │ │ │ ├── TaggedMulticastFlowControl.java │ │ │ ├── TaggedMulticastFlowControlSupplier.java │ │ │ ├── TerminationValidator.java │ │ │ ├── ThreadingMode.java │ │ │ ├── TimeTrackingNameResolver.java │ │ │ ├── UnicastFlowControl.java │ │ │ ├── UntetheredSubscription.java │ │ │ ├── buffer/ │ │ │ │ ├── FileStoreLogFactory.java │ │ │ │ ├── LogFactory.java │ │ │ │ ├── MappedRawLog.java │ │ │ │ ├── RawLog.java │ │ │ │ └── package-info.java │ │ │ ├── exceptions/ │ │ │ │ ├── ActiveDriverException.java │ │ │ │ ├── InvalidChannelException.java │ │ │ │ ├── UnknownSubscriptionException.java │ │ │ │ └── package-info.java │ │ │ ├── ext/ │ │ │ │ ├── CubicCongestionControl.java │ │ │ │ ├── CubicCongestionControlConfiguration.java │ │ │ │ ├── CubicCongestionControlSupplier.java │ │ │ │ ├── DebugChannelEndpointConfiguration.java │ │ │ │ ├── DebugReceiveChannelEndpoint.java │ │ │ │ ├── DebugReceiveChannelEndpointSupplier.java │ │ │ │ ├── DebugSendChannelEndpoint.java │ │ │ │ ├── DebugSendChannelEndpointSupplier.java │ │ │ │ ├── FixedLossGenerator.java │ │ │ │ ├── LossGenerator.java │ │ │ │ ├── MultiGapLossGenerator.java │ │ │ │ ├── RandomLossGenerator.java │ │ │ │ └── package-info.java │ │ │ ├── media/ │ │ │ │ ├── ControlMode.java │ │ │ │ ├── ControlTransportPoller.java │ │ │ │ ├── DataTransportPoller.java │ │ │ │ ├── ImageConnection.java │ │ │ │ ├── InterfaceSearchAddress.java │ │ │ │ ├── MultiRcvDestination.java │ │ │ │ ├── NamedInterface.java │ │ │ │ ├── NetworkInterfaceShim.java │ │ │ │ ├── NetworkUtil.java │ │ │ │ ├── PortManager.java │ │ │ │ ├── ReceiveChannelEndpoint.java │ │ │ │ ├── ReceiveChannelEndpointThreadLocals.java │ │ │ │ ├── ReceiveDestinationTransport.java │ │ │ │ ├── ResolvedInterface.java │ │ │ │ ├── SendChannelEndpoint.java │ │ │ │ ├── SocketAddressParser.java │ │ │ │ ├── UdpChannel.java │ │ │ │ ├── UdpChannelTransport.java │ │ │ │ ├── UdpNameResolutionTransport.java │ │ │ │ ├── UdpTransportPoller.java │ │ │ │ ├── UnresolvedInterface.java │ │ │ │ ├── WildcardPortManager.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── reports/ │ │ │ │ ├── LossReport.java │ │ │ │ ├── LossReportReader.java │ │ │ │ ├── LossReportUtil.java │ │ │ │ └── package-info.java │ │ │ └── status/ │ │ │ ├── ClientHeartbeatTimestamp.java │ │ │ ├── DutyCycleStallTracker.java │ │ │ ├── FlowControlReceivers.java │ │ │ ├── MdcDestinations.java │ │ │ ├── PerImageIndicator.java │ │ │ ├── PublisherLimit.java │ │ │ ├── PublisherPos.java │ │ │ ├── ReceiveChannelStatus.java │ │ │ ├── ReceiveLocalSocketAddress.java │ │ │ ├── ReceiverHwm.java │ │ │ ├── ReceiverNaksSent.java │ │ │ ├── ReceiverPos.java │ │ │ ├── SendChannelStatus.java │ │ │ ├── SendLocalSocketAddress.java │ │ │ ├── SenderBpe.java │ │ │ ├── SenderLimit.java │ │ │ ├── SenderNaksReceived.java │ │ │ ├── SenderPos.java │ │ │ ├── StatusUtil.java │ │ │ ├── StreamCounter.java │ │ │ ├── SubscriberPos.java │ │ │ ├── SystemCounterDescriptor.java │ │ │ ├── SystemCounters.java │ │ │ └── package-info.java │ │ └── resources/ │ │ ├── aeron-ipc.properties │ │ ├── aeron-throughput.properties │ │ ├── debug-loss-10.properties │ │ ├── high-stream-count.properties │ │ └── low-latency.properties │ └── test/ │ ├── c/ │ │ ├── CMakeLists.txt │ │ ├── EmbeddedMediaDriver.h │ │ ├── aeron_c_cnc_test.cpp │ │ ├── aeron_c_local_addresses_test.cpp │ │ ├── aeron_c_multi_destination_test.cpp │ │ ├── aeron_c_system_test.cpp │ │ ├── aeron_c_terminate_test.cpp │ │ ├── aeron_congestion_control_test.cpp │ │ ├── aeron_counters_manager_test.cpp │ │ ├── aeron_data_packet_dispatcher_test.cpp │ │ ├── aeron_driver_conductor_clock_test.cpp │ │ ├── aeron_driver_conductor_config_test.cpp │ │ ├── aeron_driver_conductor_counter_test.cpp │ │ ├── aeron_driver_conductor_ipc_test.cpp │ │ ├── aeron_driver_conductor_network_test.cpp │ │ ├── aeron_driver_conductor_pub_sub_test.cpp │ │ ├── aeron_driver_conductor_spy_test.cpp │ │ ├── aeron_driver_conductor_subscribable_test.cpp │ │ ├── aeron_driver_conductor_test.h │ │ ├── aeron_driver_configuration_test.cpp │ │ ├── aeron_driver_context_config_test.cpp │ │ ├── aeron_driver_uri_test.cpp │ │ ├── aeron_errors_test.cpp │ │ ├── aeron_flow_control_test.cpp │ │ ├── aeron_ipc_publication_test.cpp │ │ ├── aeron_logbuffer_unblocker_test.cpp │ │ ├── aeron_loss_detector_test.cpp │ │ ├── aeron_loss_reporter_test.cpp │ │ ├── aeron_name_resolver_cache_test.cpp │ │ ├── aeron_name_resolver_test.cpp │ │ ├── aeron_network_publication_test.cpp │ │ ├── aeron_parse_util_test.cpp │ │ ├── aeron_port_manager_test.cpp │ │ ├── aeron_position_test.cpp │ │ ├── aeron_properties_test.cpp │ │ ├── aeron_publication_image_test.cpp │ │ ├── aeron_receiver_test.h │ │ ├── aeron_retransmit_handler_test.cpp │ │ ├── aeron_term_gap_filler_test.cpp │ │ ├── aeron_term_scanner_test.cpp │ │ ├── aeron_test_base.h │ │ ├── aeron_test_udp_bindings.h │ │ ├── aeron_timestamps_test.cpp │ │ ├── aeron_udp_channel_test.cpp │ │ ├── aeronmd_signal_test.cpp │ │ ├── agent/ │ │ │ └── aeron_driver_agent_test.cpp │ │ └── media/ │ │ ├── aeron_udp_channel_transport_loss_test.cpp │ │ └── aeron_udp_channel_transport_multi_gap_loss_test.cpp │ └── java/ │ └── io/ │ └── aeron/ │ └── driver/ │ ├── ClientCommandAdapterTest.java │ ├── ConfigurationTest.java │ ├── DataPacketDispatcherTest.java │ ├── DefaultMulticastFlowControlSupplierTest.java │ ├── DefaultNameResolverTest.java │ ├── DriverConductorTest.java │ ├── DriverNameResolverCacheTest.java │ ├── FlowControlTest.java │ ├── IpcPublicationTest.java │ ├── LossDetectorTest.java │ ├── MediaDriverContextTest.java │ ├── MediaDriverTest.java │ ├── MinMulticastFlowControlTest.java │ ├── NetworkPublicationTest.java │ ├── OptimalMulticastDelayGeneratorTest.java │ ├── PublicationImageTest.java │ ├── PublicationParamsTest.java │ ├── ReceiverLivenessTrackerTest.java │ ├── ReceiverTest.java │ ├── RetransmitHandlerTest.java │ ├── SelectorAndTransportTest.java │ ├── SenderTest.java │ ├── StaticWindowCongestionControlTest.java │ ├── TaggedMulticastFlowControlTest.java │ ├── TerminateDriverTest.java │ ├── TimeTrackingNameResolverTest.java │ ├── UdpChannelTest.java │ ├── UntetheredSubscriptionTest.java │ ├── buffer/ │ │ ├── FileStoreLogFactoryTest.java │ │ └── TestLogFactory.java │ ├── ext/ │ │ ├── CubicCongestionControlTest.java │ │ ├── FixedLossGeneratorTest.java │ │ └── MultiGapLossGeneratorTest.java │ ├── media/ │ │ ├── NamedInterfaceTest.java │ │ ├── NetworkUtilTest.java │ │ ├── SocketAddressParserTest.java │ │ ├── UnresolvedInterfaceTest.java │ │ └── WildcardPortManagerTest.java │ ├── reports/ │ │ ├── LossReportReaderTest.java │ │ └── LossReportTest.java │ └── status/ │ └── DutyCycleStallTrackerTest.java ├── aeron-samples/ │ ├── README.md │ ├── scripts/ │ │ ├── aeron-stat │ │ ├── aeron-stat.cmd │ │ ├── archive/ │ │ │ ├── README.md │ │ │ ├── archiving-media-driver │ │ │ ├── archiving-media-driver.cmd │ │ │ ├── embedded-recording-throughput │ │ │ ├── embedded-recording-throughput.cmd │ │ │ ├── embedded-replay-throughput │ │ │ ├── embedded-replay-throughput.cmd │ │ │ ├── high-throughput-archive.properties │ │ │ ├── lightweight-archive.properties │ │ │ ├── logging-archiving-media-driver │ │ │ ├── logging-archiving-media-driver.cmd │ │ │ ├── recorded-basic-publisher │ │ │ ├── recorded-basic-publisher.cmd │ │ │ ├── recording-replicator │ │ │ ├── recording-replicator.cmd │ │ │ ├── replay-merge-subscriber │ │ │ ├── replay-merge-subscriber.cmd │ │ │ ├── replayed-basic-subscriber │ │ │ ├── replayed-basic-subscriber.cmd │ │ │ ├── segment-inspector │ │ │ ├── segment-inspector.cmd │ │ │ └── standard-archive.properties │ │ ├── backlog-stat │ │ ├── backlog-stat.cmd │ │ ├── basic-publisher │ │ ├── basic-publisher.cmd │ │ ├── basic-subscriber │ │ ├── basic-subscriber.cmd │ │ ├── cluster/ │ │ │ ├── agent-ns │ │ │ ├── basic-auction-client │ │ │ ├── basic-auction-client-ns │ │ │ ├── basic-auction-cluster │ │ │ ├── basic-auction-cluster-ns │ │ │ ├── remove-namespaces │ │ │ ├── script-common │ │ │ └── setup-namespaces │ │ ├── dynamic-logging │ │ ├── dynamic-logging.cmd │ │ ├── embedded-claim-ipc-throughput │ │ ├── embedded-claim-ipc-throughput.cmd │ │ ├── embedded-dual-exclusive-throughput │ │ ├── embedded-dual-exclusive-throughput.cmd │ │ ├── embedded-exclusive-claim-ipc-throughput │ │ ├── embedded-exclusive-claim-ipc-throughput.cmd │ │ ├── embedded-exclusive-ipc-throughput │ │ ├── embedded-exclusive-ipc-throughput.cmd │ │ ├── embedded-exclusive-spied-throughput │ │ ├── embedded-exclusive-spied-throughput.cmd │ │ ├── embedded-exclusive-throughput │ │ ├── embedded-exclusive-throughput.cmd │ │ ├── embedded-exclusive-vectored-ipc-throughput │ │ ├── embedded-exclusive-vectored-ipc-throughput.cmd │ │ ├── embedded-ipc-throughput │ │ ├── embedded-ipc-throughput.cmd │ │ ├── embedded-ping-pong │ │ ├── embedded-ping-pong.cmd │ │ ├── embedded-throughput │ │ ├── embedded-throughput.cmd │ │ ├── error-stat │ │ ├── error-stat.cmd │ │ ├── file-receiver │ │ ├── file-receiver.cmd │ │ ├── file-sender │ │ ├── file-sender.cmd │ │ ├── ipc-c-media-driver │ │ ├── java-common │ │ ├── java-common.cmd │ │ ├── linux-qdisc-basic │ │ ├── log-inspector │ │ ├── log-inspector.cmd │ │ ├── logging-c-media-driver │ │ ├── logging-media-driver │ │ ├── logging-media-driver.cmd │ │ ├── loss-rate-c-media-driver │ │ ├── loss-stat │ │ ├── loss-stat.cmd │ │ ├── low-latency-c-media-driver │ │ ├── low-latency-c-media-driver.cmd │ │ ├── low-latency-media-driver │ │ ├── low-latency-media-driver.cmd │ │ ├── media-driver │ │ ├── media-driver.cmd │ │ ├── ping │ │ ├── ping.cmd │ │ ├── pong │ │ ├── pong.cmd │ │ ├── rate-subscriber │ │ ├── rate-subscriber.cmd │ │ ├── raw/ │ │ │ ├── hack-select-receive-send-udp-pong │ │ │ ├── hack-select-receive-send-udp-pong.cmd │ │ │ ├── receive-send-udp-pong │ │ │ ├── receive-send-udp-pong.cmd │ │ │ ├── send-hack-select-receive-udp-ping │ │ │ ├── send-hack-select-receive-udp-ping.cmd │ │ │ ├── send-receive-udp-ping │ │ │ └── send-receive-udp-ping.cmd │ │ ├── run-java │ │ ├── run-java-logging │ │ ├── run-java-logging.cmd │ │ ├── run-java.cmd │ │ ├── show_thread_affinity.sh │ │ ├── stream-stat │ │ ├── stream-stat.cmd │ │ ├── streaming-publisher │ │ ├── streaming-publisher.cmd │ │ └── throughput-c-media-driver │ └── src/ │ ├── docs/ │ │ └── asciidoc/ │ │ └── Cluster-Tutorial.asciidoc │ ├── main/ │ │ ├── c/ │ │ │ ├── CMakeLists.txt │ │ │ ├── aeron_stat.c │ │ │ ├── basic_mds_subscriber.c │ │ │ ├── basic_publisher.c │ │ │ ├── basic_subscriber.c │ │ │ ├── cping.c │ │ │ ├── cpong.c │ │ │ ├── driver_tool.c │ │ │ ├── error_stat.c │ │ │ ├── loss_stat.c │ │ │ ├── rate_subscriber.c │ │ │ ├── raw/ │ │ │ │ └── ping_pong_raw.c │ │ │ ├── response/ │ │ │ │ ├── response_client.c │ │ │ │ └── response_server.c │ │ │ ├── sample_util.c │ │ │ ├── sample_util.h │ │ │ ├── samples_configuration.h │ │ │ ├── streaming_exclusive_publisher.c │ │ │ └── streaming_publisher.c │ │ ├── cpp/ │ │ │ ├── BasicPublisher.cpp │ │ │ ├── BasicSubscriber.cpp │ │ │ ├── CMakeLists.txt │ │ │ ├── Configuration.h │ │ │ ├── ExclusivePingPong.cpp │ │ │ ├── ExclusiveThroughput.cpp │ │ │ ├── LossStat.cpp │ │ │ ├── Ping.cpp │ │ │ ├── PingPong.cpp │ │ │ ├── Pong.cpp │ │ │ ├── RateReporter.h │ │ │ ├── RateSubscriber.cpp │ │ │ ├── StreamingPublisher.cpp │ │ │ └── Throughput.cpp │ │ └── java/ │ │ └── io/ │ │ └── aeron/ │ │ ├── cluster/ │ │ │ └── ConsensusModuleSnapshotPendingServiceMessagesPatch.java │ │ ├── response/ │ │ │ ├── ResponseClient.java │ │ │ └── ResponseServer.java │ │ └── samples/ │ │ ├── AeronStat.java │ │ ├── BacklogStat.java │ │ ├── BasicPublisher.java │ │ ├── BasicSubscriber.java │ │ ├── CncFileReader.java │ │ ├── DriverTool.java │ │ ├── EmbeddedBufferClaimIpcThroughput.java │ │ ├── EmbeddedDualExclusiveThroughput.java │ │ ├── EmbeddedExclusiveBufferClaimIpcThroughput.java │ │ ├── EmbeddedExclusiveIpcThroughput.java │ │ ├── EmbeddedExclusiveSpiedThroughput.java │ │ ├── EmbeddedExclusiveThroughput.java │ │ ├── EmbeddedExclusiveVectoredIpcThroughput.java │ │ ├── EmbeddedIpcThroughput.java │ │ ├── EmbeddedPingPong.java │ │ ├── EmbeddedThroughput.java │ │ ├── ErrorStat.java │ │ ├── FileReceiver.java │ │ ├── FileSender.java │ │ ├── ImageRateReporter.java │ │ ├── ImageRateSubscriber.java │ │ ├── LogInspector.java │ │ ├── LossStat.java │ │ ├── LowLatencyMediaDriver.java │ │ ├── MultiplePublishersWithFragmentation.java │ │ ├── MultipleSubscribersWithFragmentAssembly.java │ │ ├── Ping.java │ │ ├── Pong.java │ │ ├── RateReporter.java │ │ ├── RateSubscriber.java │ │ ├── SampleConfiguration.java │ │ ├── SamplesUtil.java │ │ ├── SetControllableIdleStrategy.java │ │ ├── SimplePublisher.java │ │ ├── SimpleSubscriber.java │ │ ├── StreamStat.java │ │ ├── StreamingPublisher.java │ │ ├── archive/ │ │ │ ├── ArchiveCreator.java │ │ │ ├── EmbeddedRecordingThroughput.java │ │ │ ├── EmbeddedReplayThroughput.java │ │ │ ├── IndexedReplicatedRecording.java │ │ │ ├── RecordedBasicPublisher.java │ │ │ ├── RecordingDescriptor.java │ │ │ ├── RecordingDescriptorCollector.java │ │ │ ├── RecordingReplicator.java │ │ │ ├── RecordingSignalCapture.java │ │ │ ├── ReplayMergeSubscriber.java │ │ │ ├── ReplayedBasicSubscriber.java │ │ │ ├── SampleAuthenticator.java │ │ │ ├── SampleAuthenticatorSupplier.java │ │ │ ├── SampleAuthorisationService.java │ │ │ ├── Samples.java │ │ │ ├── SegmentInspector.java │ │ │ └── package-info.java │ │ ├── cluster/ │ │ │ ├── ClusterConfig.java │ │ │ ├── EchoService.java │ │ │ ├── EchoServiceNode.java │ │ │ ├── package-info.java │ │ │ └── tutorial/ │ │ │ ├── BasicAuctionClusterClient.java │ │ │ ├── BasicAuctionClusteredService.java │ │ │ ├── BasicAuctionClusteredServiceNode.java │ │ │ ├── SingleNodeCluster.java │ │ │ └── package-info.java │ │ ├── echo/ │ │ │ ├── CreateEchoPair.java │ │ │ ├── EchoPair.java │ │ │ ├── Provisioning.java │ │ │ ├── ProvisioningClientMain.java │ │ │ ├── ProvisioningMessage.java │ │ │ ├── ProvisioningServerMain.java │ │ │ ├── RemoveAllEchoPairs.java │ │ │ └── api/ │ │ │ ├── EchoMonitorMBean.java │ │ │ ├── ProvisioningConstants.java │ │ │ └── ProvisioningMBean.java │ │ ├── package-info.java │ │ ├── raw/ │ │ │ ├── BurstSendReceiveUdpPing.java │ │ │ ├── Common.java │ │ │ ├── ReceiveSendUdpPong.java │ │ │ ├── ReceiveWriteUdpPong.java │ │ │ ├── SelectReceiveSendUdpPong.java │ │ │ ├── SendReceiveUdpPing.java │ │ │ ├── SendSelectReceiveUdpPing.java │ │ │ ├── WriteReceiveUdpPing.java │ │ │ └── package-info.java │ │ ├── security/ │ │ │ ├── SimpleAuthenticator.java │ │ │ └── SimpleAuthorisationService.java │ │ └── stress/ │ │ ├── CRC64.java │ │ ├── SimpleReservedValueSupplier.java │ │ ├── StressMdcClient.java │ │ ├── StressMdcServer.java │ │ ├── StressUnicastClient.java │ │ ├── StressUnicastServer.java │ │ └── StressUtil.java │ └── test/ │ └── java/ │ └── io/ │ └── aeron/ │ ├── cluster/ │ │ └── ConsensusModuleSnapshotPendingServiceMessagesPatchTest.java │ └── samples/ │ ├── LogInspectorAsciiFormatBytesTest.java │ ├── StreamStatTest.java │ ├── archive/ │ │ ├── RecordingDescriptorCollectorTest.java │ │ └── RecordingReplicatorTest.java │ └── security/ │ ├── SimpleAuthenticatorTest.java │ └── SimpleAuthorisationServiceTest.java ├── aeron-system-tests/ │ ├── CMakeLists.txt │ ├── README.md │ ├── scripts/ │ │ └── provisioning/ │ │ ├── README.md │ │ └── fabfile.py │ └── src/ │ └── test/ │ └── java/ │ └── io/ │ └── aeron/ │ ├── AsyncResourceTest.java │ ├── BufferClaimMessageTest.java │ ├── BusySocketTest.java │ ├── ChannelEndpointStatusTest.java │ ├── ChannelInterfaceTest.java │ ├── ChannelValidationTest.java │ ├── ClientContextTest.java │ ├── ClientErrorHandlerTest.java │ ├── ConcurrentPublicationTermRotationRaceTest.java │ ├── ControlledAssemblyTest.java │ ├── ControlledMessageTest.java │ ├── CounterReferencesTest.java │ ├── CounterTest.java │ ├── DataLossAndRecoverySystemTest.java │ ├── ErrorHandlerTest.java │ ├── ExclusivePublicationTest.java │ ├── FlowControlTests.java │ ├── FragmentedMessageTest.java │ ├── GapFillLossTest.java │ ├── ImageAvailabilityTest.java │ ├── ImageRangeTest.java │ ├── LifecycleTest.java │ ├── MaxFlowControlStrategySystemTest.java │ ├── MaxPositionPublicationTest.java │ ├── MdsAndMdcInteractionTest.java │ ├── MdsEosPositionTest.java │ ├── MemoryOrderingTest.java │ ├── MinFlowControlSystemTest.java │ ├── MinPositionSubscriptionTest.java │ ├── MultiDestinationCastTest.java │ ├── MultiDestinationSubscriptionTest.java │ ├── MultiDriverTest.java │ ├── MultiGapLossAndRecoverySystemTest.java │ ├── MultiSubscriberTest.java │ ├── MultipathTest.java │ ├── MultipleMulticastsSubscriptionsTest.java │ ├── NameReResolutionTest.java │ ├── PathologicallySlowConsumerTest.java │ ├── PongTest.java │ ├── PrintEnvInfoTest.java │ ├── PubAndSubTest.java │ ├── PublicationRevokeTest.java │ ├── PublicationUnblockTest.java │ ├── PublishFromArbitraryPositionTest.java │ ├── ReentrantClientTest.java │ ├── RegistrationAndOwnerTest.java │ ├── RejectImageTest.java │ ├── RemoteEchoTest.java │ ├── ResolvedEndpointSystemTest.java │ ├── ResponseChannelsTest.java │ ├── SessionSpecificPublicationTest.java │ ├── SessionSpecificSubscriptionTest.java │ ├── SpecifiedPositionPublicationTest.java │ ├── SpySimulatedConnectionTest.java │ ├── SpySubscriptionTest.java │ ├── StopStartSecondSubscriberTest.java │ ├── StreamSessionLimitsTest.java │ ├── SubscriberEndOfStreamTest.java │ ├── SubscriptionReconnectTest.java │ ├── SystemTests.java │ ├── TaggedFlowControlSystemTest.java │ ├── TermBufferLengthTest.java │ ├── TimestampingSystemTest.java │ ├── TwoBufferOfferMessageTest.java │ ├── UntetheredSubscriptionTest.java │ ├── UriValidationTest.java │ ├── WildcardPortManagerSystemTest.java │ ├── archive/ │ │ ├── ArchiveAbandonedClientTest.java │ │ ├── ArchiveAuthenticationTest.java │ │ ├── ArchiveDeleteAndRestartTest.java │ │ ├── ArchiveListRecordingsTest.java │ │ ├── ArchiveReplayTest.java │ │ ├── ArchiveResponseClientFailuresTest.java │ │ ├── ArchiveResponseClientTest.java │ │ ├── ArchiveSystemTest.java │ │ ├── ArchiveSystemTests.java │ │ ├── ArchiveTruncateRecordingTest.java │ │ ├── BasicArchiveTest.java │ │ ├── CatalogWithJumboRecordingsAndGapsTest.java │ │ ├── DualReplayMergeTest.java │ │ ├── ExtendRecordingTest.java │ │ ├── ManageRecordingHistoryTest.java │ │ ├── MigrateSegmentsTest.java │ │ ├── ReplayMergeTest.java │ │ ├── ReplicateRecordingTest.java │ │ ├── TestRecordingSignalConsumer.java │ │ └── ValidationTests.java │ ├── cluster/ │ │ ├── AppointedLeaderTest.java │ │ ├── ClusterBackupTest.java │ │ ├── ClusterInstrumentor.java │ │ ├── ClusterNetworkPartitionTest.java │ │ ├── ClusterNetworkTopologyTest.java │ │ ├── ClusterSessionReliabilityTest.java │ │ ├── ClusterTest.java │ │ ├── ClusterToolTest.java │ │ ├── ClusterUncommittedStateTest.java │ │ ├── FailedFirstElectionClusterTest.java │ │ ├── InitiateShutdownThenImmediatelyCloseLeaderTest.java │ │ ├── MethodCallBlocker.java │ │ ├── MultiClusteredServicesTest.java │ │ ├── MultiModuleSharedDriverTest.java │ │ ├── MultiNodeTest.java │ │ ├── OffsetMillisecondClusterClock.java │ │ ├── OffsetMillisecondClusterClockTest.java │ │ ├── RacingCatchupClusterTest.java │ │ ├── RecoverAfterFailedCatchupClusterTest.java │ │ ├── ServiceIpcIngressMessageTest.java │ │ ├── SingleNodeTest.java │ │ ├── StalledLeaderLogReplicationClusterTest.java │ │ ├── StartFromTruncatedRecordingLogTest.java │ │ └── TestClusterTest.java │ ├── driver/ │ │ ├── BytesSentAndReceivedTest.java │ │ ├── DriverNameResolverTest.java │ │ ├── DriverShouldStartIfAeronDirectoryExistsTest.java │ │ ├── DriverSpaceTest.java │ │ ├── DutyCycleLabelFormatTest.java │ │ ├── ExperimentalDriverFeaturesTest.java │ │ ├── FilePageSizeTest.java │ │ ├── Issue1719Test.java │ │ ├── NextCorrelationIdTest.java │ │ ├── NextSessionIdTest.java │ │ ├── ResolveEphemeralSubscriptionPortTest.java │ │ ├── SocketLifecycleTest.java │ │ └── SystemCountersTest.java │ ├── security/ │ │ ├── SimpleAuthenticatorTest.java │ │ └── SimpleAuthorisationServiceTest.java │ └── test/ │ └── driver/ │ └── TestMediaDriverTest.java ├── aeron-test-support/ │ ├── README.md │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── io/ │ │ └── aeron/ │ │ └── test/ │ │ ├── AdjustableClock.java │ │ ├── BindingsTest.java │ │ ├── CapturingPrintStream.java │ │ ├── CountersAnswer.java │ │ ├── CountingFragmentHandler.java │ │ ├── DataCollector.java │ │ ├── DisableJavaUtilLogging.java │ │ ├── EventLogExtension.java │ │ ├── HideStdErrExtension.java │ │ ├── IgnoreStdErr.java │ │ ├── InterruptAfter.java │ │ ├── InterruptingTestCallback.java │ │ ├── IpTables.java │ │ ├── MediaDriverTestUtil.java │ │ ├── NetworkTestingUtil.java │ │ ├── NullOutputStream.java │ │ ├── RandomWatcher.java │ │ ├── SlowTest.java │ │ ├── SystemTestConfig.java │ │ ├── SystemTestWatcher.java │ │ ├── TestContexts.java │ │ ├── TestIdleStrategy.java │ │ ├── Tests.java │ │ ├── ThreadNamingTestCallback.java │ │ ├── TopologyTest.java │ │ ├── archive/ │ │ │ └── RecordingSignalCollector.java │ │ ├── cluster/ │ │ │ ├── ClusterTests.java │ │ │ ├── StubClusteredService.java │ │ │ ├── TestBackupNode.java │ │ │ ├── TestCluster.java │ │ │ ├── TestClusterClock.java │ │ │ └── TestNode.java │ │ ├── driver/ │ │ │ ├── CTestMediaDriver.java │ │ │ ├── DriverOutputConsumer.java │ │ │ ├── JavaTestMediaDriver.java │ │ │ ├── PortLossGenerator.java │ │ │ ├── RedirectingNameResolver.java │ │ │ ├── StreamIdLossGenerator.java │ │ │ └── TestMediaDriver.java │ │ └── launcher/ │ │ ├── FileResolveUtil.java │ │ ├── RemoteLaunchClient.java │ │ └── RemoteLaunchServer.java │ └── test/ │ └── java/ │ └── io/ │ └── aeron/ │ └── test/ │ ├── DataCollectorTest.java │ ├── ThreadNamingCallbackTest.java │ ├── cluster/ │ │ └── TestClusterClockTest.java │ └── launcher/ │ └── RemoteLauncherTest.java ├── build.gradle ├── buildSrc/ │ ├── build.gradle │ ├── settings.gradle │ └── src/ │ └── main/ │ └── java/ │ └── io/ │ └── aeron/ │ └── build/ │ ├── AsciidocUtil.java │ ├── AsciidoctorPreprocessTask.java │ ├── GithubUtil.java │ ├── SonatypeCentralPortalUploadRepositoryTask.java │ └── TutorialPublishTask.java ├── config/ │ ├── checkstyle/ │ │ ├── checkstyle.xml │ │ └── suppressions.xml │ └── ide/ │ ├── clion/ │ │ └── aeron_cpp.xml │ └── idea/ │ └── aeron.xml ├── cppbuild/ │ ├── Doxyfile.in │ ├── cppbuild │ ├── cppbuild.ps1 │ ├── rocky/ │ │ └── Dockerfile │ └── rocky-docker-build ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── run-ci-tests.sh ├── settings.gradle └── version.txt
Showing preview only (1,690K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17712 symbols across 1336 files)
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveComponentLogger.java
class ArchiveComponentLogger (line 38) | @Versioned
method ArchiveComponentLogger (line 53) | public ArchiveComponentLogger()
method typeCode (line 60) | public int typeCode()
method decode (line 68) | public void decode(
method addInstrumentation (line 77) | public AgentBuilder addInstrumentation(final AgentBuilder agentBuilder...
method reset (line 155) | public void reset()
method version (line 163) | public String version()
method getArchiveEventCodes (line 169) | private static EnumSet<ArchiveEventCode> getArchiveEventCodes(final St...
method addArchiveControlSessionAdapterInstrumentation (line 179) | private static AgentBuilder addArchiveControlSessionAdapterInstrumenta...
method addEventInstrumentation (line 193) | private static AgentBuilder addEventInstrumentation(
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveEventCode.java
type ArchiveEventCode (line 29) | public enum ArchiveEventCode implements EventCode
method createLookupArray (line 254) | private static ArchiveEventCode[] createLookupArray(
method ArchiveEventCode (line 281) | ArchiveEventCode(final int id, final int templateId, final DissectFunc...
method get (line 288) | static ArchiveEventCode get(final int id)
method getByTemplateId (line 304) | static ArchiveEventCode getByTemplateId(final int templateId)
method id (line 313) | public int id()
method templateId (line 323) | public int templateId()
method toEventCodeId (line 333) | public int toEventCodeId()
method fromEventCodeId (line 344) | public static ArchiveEventCode fromEventCodeId(final int eventCodeId)
method decode (line 356) | public void decode(final MutableDirectBuffer buffer, final int offset,...
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveEventDissector.java
class ArchiveEventDissector (line 28) | final class ArchiveEventDissector
method ArchiveEventDissector (line 93) | private ArchiveEventDissector()
method dissectControlRequest (line 97) | @SuppressWarnings("MethodLength")
method dissectControlResponse (line 440) | static void dissectControlResponse(final MutableDirectBuffer buffer, f...
method dissectRecordingSignal (line 463) | static void dissectRecordingSignal(final MutableDirectBuffer buffer, f...
method dissectReplicationSessionDone (line 484) | static void dissectReplicationSessionDone(
method dissectReplaySessionStateChange (line 529) | static void dissectReplaySessionStateChange(
method dissectRecordingSessionStateChange (line 557) | static void dissectRecordingSessionStateChange(
method dissectReplicationSessionStateChange (line 580) | static void dissectReplicationSessionStateChange(
method dissectControlSessionStateChange (line 609) | static void dissectControlSessionStateChange(
method dissectReplaySessionError (line 628) | static void dissectReplaySessionError(
method dissectCatalogResize (line 646) | static void dissectCatalogResize(
method appendConnect (line 660) | private static void appendConnect(final StringBuilder builder)
method appendAuthConnect (line 670) | private static void appendAuthConnect(final StringBuilder builder)
method appendCloseSession (line 682) | private static void appendCloseSession(final StringBuilder builder)
method appendStartRecording (line 687) | private static void appendStartRecording(final StringBuilder builder)
method appendStartRecording2 (line 698) | private static void appendStartRecording2(final StringBuilder builder)
method appendStopRecording (line 710) | private static void appendStopRecording(final StringBuilder builder)
method appendReplay (line 720) | private static void appendReplay(final StringBuilder builder)
method appendStopReplay (line 733) | private static void appendStopReplay(final StringBuilder builder)
method appendListRecordings (line 740) | private static void appendListRecordings(final StringBuilder builder)
method appendListRecording (line 748) | private static void appendListRecording(final StringBuilder builder)
method appendListRecordingsForUri (line 755) | private static void appendListRecordingsForUri(final StringBuilder bui...
method appendExtendRecording (line 767) | private static void appendExtendRecording(final StringBuilder builder)
method appendExtendRecording2 (line 779) | private static void appendExtendRecording2(final StringBuilder builder)
method appendRecordingPosition (line 792) | private static void appendRecordingPosition(final StringBuilder builder)
method appendMaxRecordedPosition (line 799) | private static void appendMaxRecordedPosition(final StringBuilder buil...
method appendTruncateRecording (line 806) | private static void appendTruncateRecording(final StringBuilder builder)
method appendStopRecordingSubscription (line 814) | private static void appendStopRecordingSubscription(final StringBuilde...
method appendStopRecordingByIdentity (line 821) | private static void appendStopRecordingByIdentity(final StringBuilder ...
method appendStopPosition (line 828) | private static void appendStopPosition(final StringBuilder builder)
method appendFindLastMatchingRecord (line 835) | private static void appendFindLastMatchingRecord(final StringBuilder b...
method appendListRecordingSubscriptions (line 847) | private static void appendListRecordingSubscriptions(final StringBuild...
method appendStartBoundedReplay (line 860) | private static void appendStartBoundedReplay(final StringBuilder builder)
method appendStopAllReplays (line 874) | private static void appendStopAllReplays(final StringBuilder builder)
method appendReplicate (line 881) | private static void appendReplicate(final StringBuilder builder)
method appendReplicate2 (line 896) | private static void appendReplicate2(final StringBuilder builder)
method appendStopReplication (line 917) | private static void appendStopReplication(final StringBuilder builder)
method appendStartPosition (line 924) | private static void appendStartPosition(final StringBuilder builder)
method appendDetachSegments (line 931) | private static void appendDetachSegments(final StringBuilder builder)
method appendDeleteDetachedSegments (line 938) | private static void appendDeleteDetachedSegments(final StringBuilder b...
method appendPurgeSegments (line 945) | private static void appendPurgeSegments(final StringBuilder builder)
method appendAttachSegments (line 953) | private static void appendAttachSegments(final StringBuilder builder)
method appendMigrateSegments (line 960) | private static void appendMigrateSegments(final StringBuilder builder)
method appendKeepAlive (line 968) | private static void appendKeepAlive(final StringBuilder builder)
method appendTaggedReplicate (line 974) | private static void appendTaggedReplicate(final StringBuilder builder)
method appendPurgeRecording (line 991) | private static void appendPurgeRecording(final StringBuilder builder)
method appendReplayToken (line 998) | private static void appendReplayToken(final StringBuilder builder)
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveEventEncoder.java
class ArchiveEventEncoder (line 26) | final class ArchiveEventEncoder
method ArchiveEventEncoder (line 28) | private ArchiveEventEncoder()
method encodeReplaySessionStateChange (line 32) | static <E extends Enum<E>> int encodeReplaySessionStateChange(
method replaySessionStateChangeLength (line 61) | static <E extends Enum<E>> int replaySessionStateChangeLength(final E ...
method encodeRecordingSessionStateChange (line 66) | static <E extends Enum<E>> int encodeRecordingSessionStateChange(
method recordingSessionStateChangeLength (line 92) | static <E extends Enum<E>> int recordingSessionStateChangeLength(final...
method encodeReplicationSessionStateChange (line 97) | static <E extends Enum<E>> int encodeReplicationSessionStateChange(
method replicationSessionStateChangeLength (line 129) | static <E extends Enum<E>> int replicationSessionStateChangeLength(fin...
method encodeControlSessionStateChange (line 134) | static <E extends Enum<E>> int encodeControlSessionStateChange(
method sessionStateChangeLength (line 157) | static <E extends Enum<E>> int sessionStateChangeLength(final E from, ...
method encodeReplaySessionError (line 162) | static void encodeReplaySessionError(
method encodeCatalogResize (line 182) | static void encodeCatalogResize(
method replicationSessionDoneLength (line 198) | static int replicationSessionDoneLength()
method encodeReplicationSessionDone (line 203) | static void encodeReplicationSessionDone(
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveEventLogger.java
class ArchiveEventLogger (line 39) | public final class ArchiveEventLogger
method ArchiveEventLogger (line 60) | ArchiveEventLogger(final ManyToOneRingBuffer eventRingBuffer)
method logControlRequest (line 72) | public void logControlRequest(final DirectBuffer buffer, final int off...
method logControlResponse (line 91) | public void logControlResponse(final DirectBuffer buffer, final int of...
method logRecordingSignal (line 103) | public void logRecordingSignal(final DirectBuffer buffer, final int of...
method logReplaySessionStateChange (line 120) | public <E extends Enum<E>> void logReplaySessionStateChange(
method logRecordingSessionStateChange (line 168) | public <E extends Enum<E>> void logRecordingSessionStateChange(
method logReplicationSessionStateChange (line 216) | public <E extends Enum<E>> void logReplicationSessionStateChange(
method logControlSessionStateChange (line 264) | public <E extends Enum<E>> void logControlSessionStateChange(
method logReplicationSessionDone (line 313) | public void logReplicationSessionDone(
method logReplaySessionError (line 367) | public void logReplaySessionError(final long sessionId, final long rec...
method logCatalogResize (line 401) | public void logCatalogResize(final long oldCatalogLength, final long n...
method log (line 436) | private void log(final ArchiveEventCode eventCode, final DirectBuffer ...
FILE: aeron-agent/src/main/java/io/aeron/agent/ArchiveInterceptor.java
class ArchiveInterceptor (line 25) | class ArchiveInterceptor
class ReplaySessionStateChange (line 27) | static class ReplaySessionStateChange
method logStateChange (line 29) | @Advice.OnMethodEnter
class RecordingSessionStateChange (line 43) | static class RecordingSessionStateChange
method logStateChange (line 45) | @Advice.OnMethodEnter
class ReplicationSessionStateChange (line 57) | static class ReplicationSessionStateChange
method logStateChange (line 59) | @Advice.OnMethodEnter
class ReplicationSessionDone (line 74) | static class ReplicationSessionDone
method logReplicationSessionDone (line 76) | @Advice.OnMethodEnter
class ControlSessionStateChange (line 105) | static class ControlSessionStateChange
method logStateChange (line 107) | @Advice.OnMethodEnter
class ReplaySession (line 115) | static class ReplaySession
method onPendingError (line 117) | @Advice.OnMethodEnter
class Catalog (line 124) | static class Catalog
method catalogResized (line 126) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/ChannelEndpointInterceptor.java
class ChannelEndpointInterceptor (line 31) | class ChannelEndpointInterceptor
class SenderProxy (line 33) | static class SenderProxy
class RegisterSendChannelEndpoint (line 35) | static class RegisterSendChannelEndpoint
method registerSendChannelEndpoint (line 37) | @Advice.OnMethodEnter
class CloseSendChannelEndpoint (line 44) | static class CloseSendChannelEndpoint
method closeSendChannelEndpoint (line 46) | @Advice.OnMethodEnter
class ReceiverProxy (line 54) | static class ReceiverProxy
class RegisterReceiveChannelEndpoint (line 56) | static class RegisterReceiveChannelEndpoint
method registerReceiveChannelEndpoint (line 58) | @Advice.OnMethodEnter
class CloseReceiveChannelEndpoint (line 65) | static class CloseReceiveChannelEndpoint
method closeReceiveChannelEndpoint (line 67) | @Advice.OnMethodEnter
class UdpChannelTransport (line 75) | static class UdpChannelTransport
class SendHook (line 77) | static class SendHook
method sendHook (line 79) | @Advice.OnMethodEnter
class ReceiveHook (line 86) | static class ReceiveHook
method receiveHook (line 88) | @Advice.OnMethodEnter
class ResendHook (line 95) | static class ResendHook
method resendHook (line 97) | @Advice.OnMethodEnter
class ReceiveChannelEndpointInterceptor (line 114) | static class ReceiveChannelEndpointInterceptor
class NakSent (line 116) | static class NakSent
method sendNakMessage (line 118) | @Advice.OnMethodEnter
class SendChannelEndpointInterceptor (line 154) | static class SendChannelEndpointInterceptor
class NakReceived (line 156) | static class NakReceived
method onNakMessage (line 158) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/CleanupInterceptor.java
class CleanupInterceptor (line 26) | class CleanupInterceptor
class CleanupImage (line 28) | static class CleanupImage
method cleanupImage (line 30) | @Advice.OnMethodEnter
class CleanupPublication (line 37) | static class CleanupPublication
method cleanupPublication (line 39) | @Advice.OnMethodEnter
class CleanupIpcPublication (line 46) | static class CleanupIpcPublication
method cleanupIpcPublication (line 48) | @Advice.OnMethodEnter
class CleanupSubscriptionLink (line 55) | static class CleanupSubscriptionLink
method cleanupSubscriptionLink (line 57) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterComponentLogger.java
class ClusterComponentLogger (line 38) | @Versioned
method ClusterComponentLogger (line 54) | public ClusterComponentLogger()
method typeCode (line 61) | public int typeCode()
method decode (line 69) | public void decode(
method addInstrumentation (line 78) | public AgentBuilder addInstrumentation(final AgentBuilder agentBuilder...
method reset (line 121) | public void reset()
method version (line 129) | public String version()
method getClusterEventCodes (line 135) | private static EnumSet<ClusterEventCode> getClusterEventCodes(final St...
method addClusterConsensusModuleAgentInstrumentation (line 145) | @SuppressWarnings("MethodLength")
method addEventInstrumentation (line 285) | private static AgentBuilder addEventInstrumentation(
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterEventCode.java
type ClusterEventCode (line 28) | public enum ClusterEventCode implements EventCode
method ClusterEventCode (line 183) | ClusterEventCode(final int id, final DissectFunction<ClusterEventCode>...
method get (line 189) | static ClusterEventCode get(final int id)
method id (line 208) | public int id()
method toEventCodeId (line 218) | public int toEventCodeId()
method fromEventCodeId (line 229) | public static ClusterEventCode fromEventCodeId(final int eventCodeId)
method decode (line 241) | public void decode(final MutableDirectBuffer buffer, final int offset,...
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterEventDissector.java
class ClusterEventDissector (line 28) | final class ClusterEventDissector
method ClusterEventDissector (line 32) | private ClusterEventDissector()
method dissectNewLeadershipTerm (line 36) | static void dissectNewLeadershipTerm(
method appendSemanticVersion (line 104) | private static void appendSemanticVersion(final int version, final Str...
method dissectStateChange (line 113) | static void dissectStateChange(
method dissectNoOp (line 135) | static void dissectNoOp(
method dissectElectionStateChange (line 143) | static void dissectElectionStateChange(
method dissectCanvassPosition (line 183) | static void dissectCanvassPosition(
method dissectRequestVote (line 213) | static void dissectRequestVote(
method dissectVote (line 243) | static void dissectVote(
method dissectCatchupPosition (line 275) | static void dissectCatchupPosition(
method dissectStopCatchup (line 303) | static void dissectStopCatchup(
method dissectTruncateLogEntry (line 323) | static void dissectTruncateLogEntry(
method dissectReplayNewLeadershipTerm (line 372) | static void dissectReplayNewLeadershipTerm(
method dissectAppendPosition (line 417) | static void dissectAppendPosition(
method dissectCommitPosition (line 444) | static void dissectCommitPosition(
method dissectAppendSessionClose (line 467) | static void dissectAppendSessionClose(
method dissectAppendSessionOpen (line 496) | static void dissectAppendSessionOpen(
method dissectTerminationPosition (line 526) | static void dissectTerminationPosition(
method dissectTerminationAck (line 547) | static void dissectTerminationAck(
method dissectServiceAck (line 572) | static void dissectServiceAck(
method dissectReplicationEnded (line 604) | static void dissectReplicationEnded(
method dissectStandbySnapshotNotification (line 638) | static void dissectStandbySnapshotNotification(
method dissectNewElection (line 676) | static void dissectNewElection(
method dissectClusterSessionStateChange (line 703) | static void dissectClusterSessionStateChange(
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterEventEncoder.java
class ClusterEventEncoder (line 37) | public final class ClusterEventEncoder
method ClusterEventEncoder (line 41) | private ClusterEventEncoder()
method encodeOnNewLeadershipTerm (line 45) | static int encodeOnNewLeadershipTerm(
method newLeaderShipTermLength (line 116) | static int newLeaderShipTermLength()
method encodeStateChange (line 121) | static <E extends Enum<E>> int encodeStateChange(
method stateChangeLength (line 144) | static <E extends Enum<E>> int stateChangeLength(final E from, final E...
method clusterSessionStateChangeLength (line 149) | static <A extends Enum<A>, S extends Enum<S>> int clusterSessionStateC...
method encodeElectionStateChange (line 156) | static <E extends Enum<E>> int encodeElectionStateChange(
method electionStateChangeLength (line 207) | static <E extends Enum<E>> int electionStateChangeLength(final E from,...
method encodeOnCanvassPosition (line 213) | static int encodeOnCanvassPosition(
method canvassPositionLength (line 248) | static int canvassPositionLength()
method encodeOnRequestVote (line 253) | static int encodeOnRequestVote(
method encodeOnVote (line 288) | static int encodeOnVote(
method encodeOnCatchupPosition (line 327) | static int encodeOnCatchupPosition(
method catchupPositionLength (line 360) | static int catchupPositionLength(final String endpoint)
method encodeOnStopCatchup (line 365) | static int encodeOnStopCatchup(
method encodeTruncateLogEntry (line 390) | static <E extends Enum<E>> int encodeTruncateLogEntry(
method encodeOnReplayNewLeadershipTermEvent (line 440) | static int encodeOnReplayNewLeadershipTermEvent(
method replayNewLeadershipTermEventLength (line 486) | static int replayNewLeadershipTermEventLength(final TimeUnit timeUnit)
method encodeOnAppendPosition (line 491) | static int encodeOnAppendPosition(
method encodeOnCommitPosition (line 524) | static int encodeOnCommitPosition(
method appendSessionCloseLength (line 553) | static int appendSessionCloseLength(final CloseReason closeReason, fin...
method appendSessionOpenLength (line 559) | static int appendSessionOpenLength(final TimeUnit timeUnit)
method encodeAppendSessionClose (line 564) | static int encodeAppendSessionClose(
method encodeAppendSessionOpen (line 599) | static int encodeAppendSessionOpen(
method terminationPositionLength (line 635) | static int terminationPositionLength()
method encodeTerminationPosition (line 640) | static int encodeTerminationPosition(
method terminationAckLength (line 665) | static int terminationAckLength()
method encodeTerminationAck (line 670) | static int encodeTerminationAck(
method serviceAckLength (line 699) | static int serviceAckLength(final TimeUnit timeUnit)
method encodeServiceAck (line 704) | static int encodeServiceAck(
method replicationEndedLength (line 744) | static int replicationEndedLength(final String purpose, final String c...
method encodeReplicationEnded (line 750) | static int encodeReplicationEnded(
method standbySnapshotNotificationLength (line 789) | static int standbySnapshotNotificationLength(final TimeUnit timeUnit, ...
method encodeStandbySnapshotNotification (line 795) | static int encodeStandbySnapshotNotification(
method newElectionLength (line 842) | static int newElectionLength(final String reason)
method encodeNewElection (line 847) | static int encodeNewElection(
method encodeClusterSessionStateChange (line 879) | static <A extends Enum<A>, S extends Enum<S>> void encodeClusterSessio...
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterEventLogger.java
class ClusterEventLogger (line 79) | public final class ClusterEventLogger
method ClusterEventLogger (line 88) | ClusterEventLogger(final ManyToOneRingBuffer eventRingBuffer)
method logOnNewLeadershipTerm (line 112) | public void logOnNewLeadershipTerm(
method logStateChange (line 177) | public <E extends Enum<E>> void logStateChange(
method logElectionStateChange (line 223) | public <E extends Enum<E>> void logElectionStateChange(
method logOnCanvassPosition (line 280) | public void logOnCanvassPosition(
method logOnRequestVote (line 327) | public void logOnRequestVote(
method logOnVote (line 375) | public void logOnVote(
method logOnCatchupPosition (line 423) | public void logOnCatchupPosition(
method logOnStopCatchup (line 465) | public void logOnStopCatchup(
method logOnTruncateLogEntry (line 508) | public <E extends Enum<E>> void logOnTruncateLogEntry(
method logOnReplayNewLeadershipTermEvent (line 565) | public void logOnReplayNewLeadershipTermEvent(
method logOnAppendPosition (line 615) | public void logOnAppendPosition(
method logOnCommitPosition (line 657) | public void logOnCommitPosition(
method logAppendSessionClose (line 699) | public void logAppendSessionClose(
method logAppendSessionOpen (line 746) | public void logAppendSessionOpen(
method logTerminationPosition (line 790) | public void logTerminationPosition(
method logTerminationAck (line 829) | public void logTerminationAck(
method logServiceAck (line 873) | public void logServiceAck(
method logReplicationEnded (line 923) | public void logReplicationEnded(
method logStandbySnapshotNotification (line 975) | public void logStandbySnapshotNotification(
method logNewElection (line 1027) | public void logNewElection(
method logClusterSessionStateChange (line 1074) | public <A extends Enum<A>, S extends Enum<S>> void logClusterSessionSt...
FILE: aeron-agent/src/main/java/io/aeron/agent/ClusterInterceptor.java
class ClusterInterceptor (line 27) | class ClusterInterceptor
class ElectionStateChange (line 29) | static class ElectionStateChange
method logStateChange (line 31) | @Advice.OnMethodEnter
class NewLeadershipTerm (line 60) | static class NewLeadershipTerm
method logOnNewLeadershipTerm (line 62) | @Advice.OnMethodEnter
class ConsensusModuleStateChange (line 99) | static class ConsensusModuleStateChange
method logStateChange (line 101) | @Advice.OnMethodEnter
class ConsensusModuleRoleChange (line 109) | static class ConsensusModuleRoleChange
method logRoleChange (line 111) | @Advice.OnMethodEnter
class CanvassPosition (line 118) | static class CanvassPosition
method logOnCanvassPosition (line 120) | @Advice.OnMethodEnter
class RequestVote (line 134) | static class RequestVote
method logOnRequestVote (line 136) | @Advice.OnMethodEnter
class Vote (line 150) | static class Vote
method logOnVote (line 152) | @Advice.OnMethodEnter
class CatchupPosition (line 167) | static class CatchupPosition
method logOnCatchupPosition (line 169) | @Advice.OnMethodEnter
class StopCatchup (line 181) | static class StopCatchup
method logOnStopCatchup (line 183) | @Advice.OnMethodEnter
class TruncateLogEntry (line 190) | static class TruncateLogEntry
method onTruncateLogEntry (line 192) | @Advice.OnMethodEnter
class ReplayNewLeadershipTerm (line 219) | static class ReplayNewLeadershipTerm
method logOnReplayNewLeadershipTermEvent (line 221) | @Advice.OnMethodEnter
class AppendPosition (line 244) | static class AppendPosition
method logOnAppendPosition (line 246) | @Advice.OnMethodEnter
class CommitPosition (line 263) | static class CommitPosition
method logOnCommitPosition (line 265) | @Advice.OnMethodEnter
class AppendSessionClose (line 276) | static class AppendSessionClose
method logAppendSessionClose (line 278) | @Advice.OnMethodEnter
class AppendSessionOpen (line 291) | static class AppendSessionOpen
method logAppendSessionOpen (line 293) | @Advice.OnMethodEnter
class ClusterBackupStateChange (line 306) | static class ClusterBackupStateChange
method logStateChange (line 308) | @Advice.OnMethodEnter
class TerminationPosition (line 315) | static class TerminationPosition
method logOnTerminationPosition (line 317) | @Advice.OnMethodEnter
class TerminationAck (line 324) | static class TerminationAck
method logOnTerminationAck (line 326) | @Advice.OnMethodEnter
class ServiceAck (line 334) | static class ServiceAck
method logOnServiceAck (line 336) | @Advice.OnMethodEnter
class ReplicationEnded (line 350) | static class ReplicationEnded
method logReplicationEnded (line 352) | @Advice.OnMethodEnter
class StandbySnapshotNotification (line 366) | static class StandbySnapshotNotification
method logStandbySnapshotNotification (line 368) | @Advice.OnMethodEnter
class NewElection (line 393) | static class NewElection
method logNewElection (line 395) | @Advice.OnMethodEnter
class ClusterSession (line 407) | static class ClusterSession
method logStateChange (line 409) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/CmdInterceptor.java
class CmdInterceptor (line 27) | class CmdInterceptor
method logCmd (line 57) | @SuppressWarnings("methodlength")
FILE: aeron-agent/src/main/java/io/aeron/agent/CollectingEventLogReaderAgent.java
class CollectingEventLogReaderAgent (line 48) | public final class CollectingEventLogReaderAgent implements Agent, Colle...
type State (line 57) | @SuppressWarnings("JavadocVariable")
method CollectingEventLogReaderAgent (line 72) | CollectingEventLogReaderAgent(final String fileName, final List<Compon...
method onStart (line 83) | public void onStart()
method roleName (line 103) | public String roleName()
method doWork (line 111) | public int doWork()
method onMessage (line 119) | private void onMessage(final int msgTypeId, final MutableDirectBuffer ...
method setCollecting (line 141) | public void setCollecting(final boolean isCollecting)
method startCollecting (line 149) | public void startCollecting(final String name)
method isCollecting (line 162) | public boolean isCollecting()
method reset (line 170) | public void reset()
method writeToFile (line 182) | public void writeToFile(final String filename)
method resetWritePosition (line 190) | private void resetWritePosition()
method writeLogStartMessage (line 195) | private void writeLogStartMessage(final String name)
method doOutputToFile (line 208) | private void doOutputToFile(final String filename)
FILE: aeron-agent/src/main/java/io/aeron/agent/CollectingEventLogReaderAgentMBean.java
type CollectingEventLogReaderAgentMBean (line 22) | public interface CollectingEventLogReaderAgentMBean
method setCollecting (line 29) | void setCollecting(boolean isCollecting);
method isCollecting (line 36) | boolean isCollecting();
method reset (line 42) | void reset();
method startCollecting (line 49) | void startCollecting(String name);
method writeToFile (line 56) | void writeToFile(String filename);
FILE: aeron-agent/src/main/java/io/aeron/agent/CommonEventDissector.java
class CommonEventDissector (line 34) | public final class CommonEventDissector
method CommonEventDissector (line 38) | private CommonEventDissector()
method dissectLogStartMessage (line 50) | public static void dissectLogStartMessage(
method dissectLogHeader (line 68) | public static int dissectLogHeader(
method dissectSocketAddress (line 107) | public static int dissectSocketAddress(
method dissectInetAddress (line 129) | public static int dissectInetAddress(
FILE: aeron-agent/src/main/java/io/aeron/agent/CommonEventEncoder.java
class CommonEventEncoder (line 36) | public final class CommonEventEncoder
method CommonEventEncoder (line 53) | private CommonEventEncoder()
method encodeLogHeader (line 66) | public static int encodeLogHeader(
method internalEncodeLogHeader (line 72) | static int internalEncodeLogHeader(
method encodeSocketAddress (line 113) | public static int encodeSocketAddress(
method encodeInetAddress (line 145) | public static int encodeInetAddress(
method encodeTrailingString (line 182) | public static int encodeTrailingString(
method encode (line 210) | public static int encode(
method encodeStateChange (line 233) | public static <E extends Enum<E>> int encodeStateChange(
method encodeTrailingStateChange (line 265) | public static <E extends Enum<E>> int encodeTrailingStateChange(
method captureLength (line 295) | public static int captureLength(final int length)
method encodedLength (line 306) | public static int encodedLength(final int captureLength)
method socketAddressLength (line 317) | public static int socketAddressLength(final InetSocketAddress address)
method inetAddressLength (line 328) | public static int inetAddressLength(final InetAddress address)
method trailingStringLength (line 340) | public static int trailingStringLength(final String value, final int m...
method stateTransitionStringLength (line 353) | public static <E extends Enum<E>> int stateTransitionStringLength(fina...
method enumName (line 365) | public static <E extends Enum<E>> String enumName(final E value)
FILE: aeron-agent/src/main/java/io/aeron/agent/ComponentLogger.java
type ComponentLogger (line 26) | public interface ComponentLogger
method typeCode (line 33) | int typeCode();
method decode (line 43) | void decode(MutableDirectBuffer buffer, int offset, int eventCodeId, S...
method addInstrumentation (line 55) | AgentBuilder addInstrumentation(AgentBuilder agentBuilder, Map<String,...
method reset (line 60) | void reset();
method version (line 68) | String version();
FILE: aeron-agent/src/main/java/io/aeron/agent/ConfigOption.java
class ConfigOption (line 28) | final class ConfigOption
method fromSystemProperties (line 97) | static Map<String, String> fromSystemProperties()
method buildAgentArgs (line 108) | static String buildAgentArgs(final Map<String, String> configOptions)
method parseAgentArgs (line 132) | static Map<String, String> parseAgentArgs(final String agentArgs)
FILE: aeron-agent/src/main/java/io/aeron/agent/ControlInterceptor.java
class ControlInterceptor (line 23) | class ControlInterceptor
class ControlRequest (line 25) | static class ControlRequest
method onFragment (line 27) | @Advice.OnMethodEnter
class ControlResponse (line 37) | static class ControlResponse
method logSendResponse (line 39) | @Advice.OnMethodEnter
class RecordingSignal (line 46) | static class RecordingSignal
method logSendSignal (line 48) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/DissectFunction.java
type DissectFunction (line 25) | @FunctionalInterface
method dissect (line 36) | void dissect(T event, MutableDirectBuffer buffer, int offset, StringBu...
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverComponentLogger.java
class DriverComponentLogger (line 37) | @Versioned
method DriverComponentLogger (line 54) | public DriverComponentLogger()
method typeCode (line 61) | public int typeCode()
method decode (line 69) | public void decode(
method addInstrumentation (line 78) | public AgentBuilder addInstrumentation(final AgentBuilder agentBuilder...
method reset (line 111) | public void reset()
method version (line 119) | public String version()
method getDriverEventCodes (line 125) | private static EnumSet<DriverEventCode> getDriverEventCodes(final Stri...
method addDriverConductorInstrumentation (line 135) | private static AgentBuilder addDriverConductorInstrumentation(final Ag...
method addDriverCommandInstrumentation (line 171) | private static AgentBuilder addDriverCommandInstrumentation(final Agen...
method addDriverSenderProxyInstrumentation (line 189) | private static AgentBuilder addDriverSenderProxyInstrumentation(final ...
method addDriverReceiverProxyInstrumentation (line 209) | private static AgentBuilder addDriverReceiverProxyInstrumentation(fina...
method addDriverUdpChannelTransportInstrumentation (line 229) | private static AgentBuilder addDriverUdpChannelTransportInstrumentatio...
method addChannelEndpointInstrumentation (line 256) | private AgentBuilder addChannelEndpointInstrumentation(final AgentBuil...
method addDriverNameResolutionInstrumentation (line 278) | private static AgentBuilder addDriverNameResolutionInstrumentation(fin...
method addDriverFlowControlInstrumentation (line 319) | private static AgentBuilder addDriverFlowControlInstrumentation(final ...
method addPublicationRevokeInstrumentation (line 339) | private static AgentBuilder addPublicationRevokeInstrumentation(final ...
method addEventInstrumentation (line 366) | private static AgentBuilder addEventInstrumentation(
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverEventCode.java
type DriverEventCode (line 27) | public enum DriverEventCode implements EventCode
method DriverEventCode (line 268) | DriverEventCode(final int id, final DissectFunction<DriverEventCode> d...
method id (line 277) | public int id()
method get (line 282) | static DriverEventCode get(final int id)
method get (line 299) | static DriverEventCode get(final String name)
method decode (line 318) | public void decode(final MutableDirectBuffer buffer, final int offset,...
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverEventDissector.java
class DriverEventDissector (line 33) | final class DriverEventDissector
method DriverEventDissector (line 66) | private DriverEventDissector()
method dissectFrame (line 70) | static void dissectFrame(
method dissectCommand (line 134) | @SuppressWarnings("MethodLength")
method dissectString (line 252) | static void dissectString(
method dissectRemovePublicationCleanup (line 259) | static void dissectRemovePublicationCleanup(
method dissectRemoveSubscriptionCleanup (line 275) | static void dissectRemoveSubscriptionCleanup(
method dissectRemoveImageCleanup (line 291) | static void dissectRemoveImageCleanup(
method dissectUntetheredSubscriptionStateChange (line 310) | static void dissectUntetheredSubscriptionStateChange(
method dissectAddress (line 330) | static void dissectAddress(
method dissectFlowControlReceiver (line 340) | static void dissectFlowControlReceiver(
method dissectResolve (line 362) | static void dissectResolve(
method dissectLookup (line 390) | static void dissectLookup(
method dissectHostName (line 418) | static void dissectHostName(
method dissectNak (line 431) | static void dissectNak(
method dissectResend (line 456) | static void dissectResend(final MutableDirectBuffer buffer, final int ...
method dissectPublicationRevoke (line 474) | static void dissectPublicationRevoke(
method dissectPublicationImageRevoke (line 491) | static void dissectPublicationImageRevoke(
method frameType (line 508) | static int frameType(final MutableDirectBuffer buffer, final int termO...
method dissectDataFrame (line 513) | private static void dissectDataFrame(final StringBuilder builder)
method dissectStatusFrame (line 535) | private static void dissectStatusFrame(final StringBuilder builder)
method dissectNakFrame (line 557) | private static void dissectNakFrame(final StringBuilder builder)
method dissectErrorFrame (line 577) | private static void dissectErrorFrame(final StringBuilder builder)
method dissectSetupFrame (line 600) | private static void dissectSetupFrame(final StringBuilder builder)
method dissectRttFrame (line 626) | private static void dissectRttFrame(final StringBuilder builder)
method dissectResFrame (line 646) | private static void dissectResFrame(
method dissectRspSetupFrame (line 678) | private static void dissectRspSetupFrame(final StringBuilder builder)
method dissectResEntry (line 694) | private static void dissectResEntry(final StringBuilder builder)
method dissectPublication (line 717) | private static void dissectPublication(final StringBuilder builder)
method dissectSubscription (line 728) | private static void dissectSubscription(final StringBuilder builder)
method dissectPublicationReady (line 740) | private static void dissectPublicationReady(final StringBuilder builder)
method dissectImageReady (line 754) | private static void dissectImageReady(final StringBuilder builder)
method dissectCorrelationEvent (line 769) | private static void dissectCorrelationEvent(final StringBuilder builder)
method dissectImage (line 776) | private static void dissectImage(final StringBuilder builder)
method dissectRemoveCounterEvent (line 788) | private static void dissectRemoveCounterEvent(final StringBuilder buil...
method dissectRemovePublicationEvent (line 796) | private static void dissectRemovePublicationEvent(final StringBuilder ...
method dissectRemoveSubscriptionEvent (line 809) | private static void dissectRemoveSubscriptionEvent(final StringBuilder...
method dissectDestination (line 817) | private static void dissectDestination(final StringBuilder builder)
method dissectError (line 828) | private static void dissectError(final StringBuilder builder)
method dissectCounter (line 838) | private static void dissectCounter(final StringBuilder builder)
method dissectCounterUpdate (line 850) | private static void dissectCounterUpdate(final StringBuilder builder)
method dissectOperationSuccess (line 857) | private static void dissectOperationSuccess(final StringBuilder builder)
method dissectSubscriptionReady (line 862) | private static void dissectSubscriptionReady(final StringBuilder builder)
method dissectClientTimeout (line 869) | private static void dissectClientTimeout(final StringBuilder builder)
method dissectTerminateDriver (line 874) | private static void dissectTerminateDriver(final StringBuilder builder)
method dissectDestinationById (line 881) | private static void dissectDestinationById(final StringBuilder builder)
method dissectRejectImage (line 888) | private static void dissectRejectImage(final StringBuilder builder)
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverEventEncoder.java
class DriverEventEncoder (line 33) | final class DriverEventEncoder
method DriverEventEncoder (line 35) | private DriverEventEncoder()
method encode (line 39) | static void encode(
method encode (line 57) | static void encode(
method encode (line 75) | static void encode(
method encode (line 93) | public static void encode(
method encode (line 104) | static void encode(
method encodePublicationRemoval (line 115) | static void encodePublicationRemoval(
method encodeSubscriptionRemoval (line 135) | static void encodeSubscriptionRemoval(
method encodeImageRemoval (line 156) | static void encodeImageRemoval(
method untetheredSubscriptionStateChangeLength (line 181) | static <E extends Enum<E>> int untetheredSubscriptionStateChangeLength...
method encodeUntetheredSubscriptionStateChange (line 186) | static <E extends Enum<E>> void encodeUntetheredSubscriptionStateChange(
method encodeFlowControlReceiver (line 211) | static void encodeFlowControlReceiver(
method encodeResolve (line 240) | static void encodeResolve(
method encodeLookup (line 268) | static void encodeLookup(
method encodeHostName (line 297) | static void encodeHostName(
method encodeNakMessage (line 314) | static void encodeNakMessage(
method encodeResend (line 345) | static void encodeResend(
method encodePublicationRevoke (line 374) | static void encodePublicationRevoke(
method encodePublicationImageRevoke (line 397) | static void encodePublicationImageRevoke(
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverEventLogger.java
class DriverEventLogger (line 39) | public final class DriverEventLogger
method DriverEventLogger (line 58) | DriverEventLogger(final ManyToOneRingBuffer ringBuffer)
method log (line 71) | public void log(final DriverEventCode code, final DirectBuffer buffer,...
method logFrameIn (line 102) | public void logFrameIn(
method logFrameOut (line 130) | public void logFrameOut(final ByteBuffer buffer, final InetSocketAddre...
method logPublicationRemoval (line 165) | public void logPublicationRemoval(final String channel, final int sess...
method logSubscriptionRemoval (line 194) | public void logSubscriptionRemoval(final String channel, final int str...
method logImageRemoval (line 224) | public void logImageRemoval(final String channel, final int sessionId,...
method logString (line 252) | public void logString(final DriverEventCode code, final String value)
method logUntetheredSubscriptionStateChange (line 283) | public <E extends Enum<E>> void logUntetheredSubscriptionStateChange(
method logAddress (line 320) | public void logAddress(final DriverEventCode code, final InetSocketAdd...
method logResolve (line 350) | public void logResolve(
method logLookup (line 397) | public void logLookup(
method logHostName (line 440) | public void logHostName(final long durationNs, final String hostName)
method logFlowControlReceiver (line 477) | public void logFlowControlReceiver(
method logNakMessage (line 525) | public void logNakMessage(
method logResend (line 575) | public void logResend(
method logPublicationRevoke (line 620) | public void logPublicationRevoke(
method logPublicationImageRevoke (line 661) | public void logPublicationImageRevoke(
method toEventCodeId (line 694) | static int toEventCodeId(final DriverEventCode code)
FILE: aeron-agent/src/main/java/io/aeron/agent/DriverInterceptor.java
class DriverInterceptor (line 26) | class DriverInterceptor
class UntetheredSubscriptionStateChange (line 28) | static class UntetheredSubscriptionStateChange
method logStateChange (line 30) | @Advice.OnMethodEnter
class NameResolution (line 38) | static class NameResolution
class NeighborAdded (line 40) | static class NeighborAdded
method neighborAdded (line 42) | @Advice.OnMethodEnter
class NeighborRemoved (line 49) | static class NeighborRemoved
method neighborRemoved (line 51) | @Advice.OnMethodEnter
class Resolve (line 58) | static class Resolve
method logResolve (line 60) | @Advice.OnMethodEnter
class Lookup (line 72) | static class Lookup
method logLookup (line 74) | @Advice.OnMethodEnter
class HostName (line 86) | static class HostName
method logHostName (line 88) | @Advice.OnMethodEnter
class FlowControl (line 98) | static class FlowControl
class ReceiverAdded (line 100) | static class ReceiverAdded
method receiverAdded (line 102) | @Advice.OnMethodEnter
class ReceiverRemoved (line 115) | static class ReceiverRemoved
method receiverRemoved (line 117) | @Advice.OnMethodEnter
class Revoke (line 131) | static class Revoke
class PublicationRevoke (line 133) | static class PublicationRevoke
method logRevoke (line 135) | @Advice.OnMethodEnter
class PublicationImageRevoke (line 146) | static class PublicationImageRevoke
method logRevoke (line 148) | @Advice.OnMethodEnter
FILE: aeron-agent/src/main/java/io/aeron/agent/DynamicLoggingAgent.java
class DynamicLoggingAgent (line 33) | public final class DynamicLoggingAgent
method DynamicLoggingAgent (line 35) | private DynamicLoggingAgent()
method main (line 44) | public static void main(final String[] args)
method printHelp (line 93) | private static void printHelp()
method attachAgent (line 103) | private static void attachAgent(
method getCause (line 117) | private static Throwable getCause(final Throwable t)
FILE: aeron-agent/src/main/java/io/aeron/agent/EventCode.java
type EventCode (line 21) | public interface EventCode
method id (line 28) | int id();
FILE: aeron-agent/src/main/java/io/aeron/agent/EventCodeType.java
type EventCodeType (line 21) | public enum EventCodeType
method EventCodeType (line 55) | EventCodeType(final int typeCode)
method getTypeCode (line 65) | public int getTypeCode()
FILE: aeron-agent/src/main/java/io/aeron/agent/EventConfiguration.java
class EventConfiguration (line 37) | public final class EventConfiguration
method EventConfiguration (line 70) | private EventConfiguration()
method parseEventCodes (line 85) | public static <E extends Enum<E>> EnumSet<E> parseEventCodes(
FILE: aeron-agent/src/main/java/io/aeron/agent/EventLogAgent.java
class EventLogAgent (line 47) | public final class EventLogAgent
method EventLogAgent (line 66) | private EventLogAgent()
method premain (line 76) | public static void premain(final String agentArgs, final Instrumentati...
method agentmain (line 87) | public static void agentmain(final String agentArgs, final Instrumenta...
method removeTransformer (line 104) | @Deprecated
method stopLogging (line 113) | public static synchronized void stopLogging()
method startLogging (line 134) | private static synchronized void startLogging(
method newReaderAgent (line 185) | private static Agent newReaderAgent(final Map<String, String> configOp...
class AgentBuilderListener (line 217) | final class AgentBuilderListener implements AgentBuilder.Listener
method onDiscovery (line 219) | public void onDiscovery(
method onTransformation (line 227) | public void onTransformation(
method onIgnored (line 236) | public void onIgnored(
method onError (line 244) | public void onError(
method onComplete (line 255) | public void onComplete(
FILE: aeron-agent/src/main/java/io/aeron/agent/EventLogReaderAgent.java
class EventLogReaderAgent (line 56) | public final class EventLogReaderAgent implements Agent
method EventLogReaderAgent (line 73) | EventLogReaderAgent(final String filename, final List<ComponentLogger>...
method EventLogReaderAgent (line 78) | EventLogReaderAgent(
method onStart (line 117) | public void onStart()
method onClose (line 163) | public void onClose()
method roleName (line 171) | public String roleName()
method doWork (line 179) | public int doWork()
method onMessage (line 190) | private void onMessage(final int msgTypeId, final MutableDirectBuffer ...
method decodeLogEvent (line 209) | static void decodeLogEvent(
method appendEvent (line 230) | private static void appendEvent(final StringBuilder builder, final Byt...
method write (line 249) | private static void write(final ByteBuffer buffer, final FileChannel f...
FILE: aeron-agent/src/main/java/io/aeron/agent/LogUtil.java
class LogUtil (line 23) | final class LogUtil
method appendTimestamp (line 34) | static void appendTimestamp(final StringBuilder builder, final long ti...
FILE: aeron-agent/src/test/java/io/aeron/agent/AgentTests.java
class AgentTests (line 46) | @ExtendWith(InterruptingTestCallback.class)
method startLogging (line 49) | static void startLogging(final Map<String, String> configOptions)
method stopLogging (line 54) | static void stopLogging()
method verifyLogHeader (line 59) | static void verifyLogHeader(
method afterEach (line 75) | @AfterEach
method agentmainShouldUseSystemPropertiesWhenAgentsArgsIsEmpty (line 85) | @ParameterizedTest
method shouldFailToStartLoggingIfAgentAlreadyRunning (line 126) | @Test
method shouldStartLoggingAfterItWasStopped (line 145) | @Test
method shouldInitializeLoggingAgentWithAFileName (line 165) | @Test
method shouldStartAndStopLoggingAgent (line 179) | @Test
class TestLoggingAgent (line 196) | private static class TestLoggingAgent implements Agent
method TestLoggingAgent (line 202) | TestLoggingAgent()
method doWork (line 207) | public int doWork()
method roleName (line 212) | public String roleName()
method onStart (line 217) | public void onStart()
method onClose (line 222) | public void onClose()
class TestLoggingAgentWithFileName (line 228) | private static class TestLoggingAgentWithFileName implements Agent
method TestLoggingAgentWithFileName (line 232) | TestLoggingAgentWithFileName(final String logFileName)
method doWork (line 237) | public int doWork()
method roleName (line 242) | public String roleName()
FILE: aeron-agent/src/test/java/io/aeron/agent/ArchiveEventCodeTest.java
class ArchiveEventCodeTest (line 25) | class ArchiveEventCodeTest
method getCodeById (line 27) | @ParameterizedTest
method getShouldThrowIllegalArgumentExceptionIfIdIsUnknown (line 34) | @ParameterizedTest
method getCodeByTemplateId (line 41) | @ParameterizedTest
method toEventCodeIdComputesEventId (line 56) | @ParameterizedTest
method fromEventCodeIdLooksUpEventCode (line 63) | @ParameterizedTest
method fromEventCodeIdThrowsIllegalArgumentExceptionIfCodeIsInvalid (line 70) | @ParameterizedTest
FILE: aeron-agent/src/test/java/io/aeron/agent/ArchiveEventDissectorTest.java
class ArchiveEventDissectorTest (line 33) | class ArchiveEventDissectorTest
method controlResponse (line 39) | @Test
method recordingSignal (line 64) | @Test
method controlRequestConnect (line 89) | @Test
method controlRequestCloseSession (line 110) | @Test
method controlRequestStartRecording (line 124) | @Test
method controlRequestStartRecording2 (line 147) | @Test
method controlRequestStopRecording (line 172) | @Test
method controlRequestReplay (line 193) | @Test
method controlRequestStopReplay (line 220) | @Test
method controlRequestListRecordings (line 239) | @Test
method controlRequestListRecordingsForUri (line 260) | @Test
method controlRequestListRecording (line 285) | @Test
method controlRequestExtendRecording (line 304) | @Test
method controlRequestExtendRecording2 (line 329) | @Test
method controlRequestRecordingPosition (line 356) | @Test
method controlRequestTruncateRecording (line 375) | @Test
method controlRequestStopRecordingSubscription (line 396) | @Test
method controlRequestStopRecordingByIdentity (line 415) | @Test
method controlRequestStopPosition (line 434) | @Test
method controlRequestFindLastMatchingRecording (line 453) | @Test
method controlRequestListRecordingSubscriptions (line 478) | @Test
method controlRequestStartBoundedReplay (line 505) | @Test
method controlRequestStopAllReplays (line 534) | @Test
method controlRequestReplicate (line 553) | @Test
method controlRequestReplicate2 (line 580) | @Test
method controlRequestStopReplication (line 615) | @Test
method controlRequestStartPosition (line 634) | @Test
method controlRequestDetachSegments (line 653) | @Test
method controlRequestDeleteDetachedSegments (line 672) | @Test
method controlRequestPurgeSegments (line 691) | @Test
method controlRequestAttachSegments (line 712) | @Test
method controlRequestMigrateSegments (line 731) | @Test
method controlRequestAuthConnect (line 752) | @Test
method controlRequestKeepAlive (line 775) | @Test
method controlRequestTaggedReplicate (line 792) | @Test
method controlRequestUnknownCommand (line 823) | @Test
method replaySessionStateChange (line 835) | @Test
method recordingSessionStateChange (line 859) | @Test
method replicationSessionStateChange (line 879) | @Test
method controlSessionStateChange (line 903) | @Test
method replaySessionError (line 919) | @Test
method catalogResize (line 934) | @Test
method controlRequestPurgeRecording (line 948) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/ArchiveEventEncoderTest.java
class ArchiveEventEncoderTest (line 35) | class ArchiveEventEncoderTest
type State (line 37) | enum State
method testEncodeControlSessionStateChange (line 44) | @Test
method testSessionStateChangeLength (line 67) | @Test
method testEncodeReplaySessionError (line 80) | @Test
method testEncodeCatalogResize (line 100) | @Test
method testEncodeReplaySessionStateChange (line 118) | @Test
method testEncodeRecordingSessionStateChange (line 144) | @Test
method testEncodeReplicationSessionStateChange (line 168) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/ArchiveEventLoggerTest.java
class ArchiveEventLoggerTest (line 69) | class ArchiveEventLoggerTest
method after (line 76) | @AfterEach
method logControlRequest (line 83) | @ParameterizedTest
method logControlRequestNoOp (line 114) | @ParameterizedTest
method logControlResponse (line 129) | @Test
method logRecordingSignal (line 148) | @Test
method controlRequestEvents (line 167) | @ParameterizedTest
method nonControlRequestEvents (line 186) | @ParameterizedTest
method logControlSessionStateChange (line 198) | @Test
method logReplaySessionError (line 221) | @Test
method logCatalogResize (line 241) | @Test
method logReplicationSessionDone (line 259) | @Test
method logReplicationSessionStateChange (line 311) | @Test
method logMaxRecordedPosition (line 354) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/ArchiveLoggingAgentTest.java
class ArchiveLoggingAgentTest (line 51) | @ExtendWith(InterruptingTestCallback.class)
method after (line 58) | @AfterEach
method logAll (line 69) | @Test
method logControlSessionAdapterOnFragment (line 78) | @Test
method logControlResponseProxySendResponseHook (line 86) | @Test
method testArchiveLogging (line 93) | @SuppressWarnings("try")
method before (line 153) | private void before(final String enabledEvents, final EnumSet<ArchiveE...
class StubEventLogReaderAgent (line 170) | static final class StubEventLogReaderAgent implements Agent, MessageHa...
method roleName (line 172) | public String roleName()
method doWork (line 177) | public int doWork()
method onMessage (line 182) | public void onMessage(final int msgTypeId, final MutableDirectBuffer...
FILE: aeron-agent/src/test/java/io/aeron/agent/ClusterEventCodeTest.java
class ClusterEventCodeTest (line 25) | class ClusterEventCodeTest
method getCodeById (line 27) | @ParameterizedTest
method getCodeByIdShouldThrowIllegalArgumentExceptionForUnknownId (line 34) | @ParameterizedTest
method toEventCodeIdComputesEventId (line 41) | @ParameterizedTest
method fromEventCodeIdLooksUpEventCode (line 48) | @ParameterizedTest
method fromEventCodeIdShouldThrowIllegalArgumentExceptionForUnknownCodeId (line 55) | @ParameterizedTest
FILE: aeron-agent/src/test/java/io/aeron/agent/ClusterEventDissectorTest.java
class ClusterEventDissectorTest (line 33) | class ClusterEventDissectorTest
method dissectNewLeadershipTerm (line 38) | @Test
method dissectStateChange (line 67) | @ParameterizedTest
method dissectElectionStateChange (line 84) | @Test
method dissectTruncateLogEntry (line 117) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/ClusterEventEncoderTest.java
class ClusterEventEncoderTest (line 49) | class ClusterEventEncoderTest
method testEncodeStateChange (line 53) | @Test
method testEncodeNewLeadershipTerm (line 80) | @Test
method testNewLeaderShipTermLength (line 165) | @Test
method testStateChangeLength (line 171) | @Test
method testElectionStateChangeLength (line 184) | @Test
method testEncodeElectionStateChange (line 197) | @Test
method testEncodeTruncateLogEntry (line 259) | @ParameterizedTest
method logEntryStates (line 322) | private static List<TimeUnit> logEntryStates()
FILE: aeron-agent/src/test/java/io/aeron/agent/ClusterEventLoggerTest.java
class ClusterEventLoggerTest (line 89) | class ClusterEventLoggerTest
method logOnNewLeadershipTerm (line 96) | @Test
method logStateChange (line 180) | @Test
method logElectionStateChange (line 209) | @Test
method logCatchupPosition (line 275) | @Test
method logCatchupPositionLongCatchupEndpoint (line 313) | @Test
method logStopCatchup (line 342) | @Test
method logTruncateLogEntry (line 370) | @Test
method logReplayNewLeadershipTerm (line 432) | @Test
method logOnAppendPosition (line 487) | @Test
method logOnCommitPosition (line 525) | @Test
method logAppendSessionClose (line 558) | @Test
method logAppendSessionOpen (line 602) | @Test
method logOnRequestVote (line 646) | @Test
method logOnVote (line 681) | @ParameterizedTest
method logOnCanvassPosition (line 731) | @Test
method logTerminationPosition (line 767) | @Test
method logTerminationAck (line 800) | @Test
method logServiceAck (line 834) | @Test
method logReplicationEnded (line 875) | @Test
method logStandbySnapshotNotification (line 921) | @Test
method logNewElection (line 980) | @Test
method logClusterSessionStateChange (line 1019) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/ClusterLoggingAgentTest.java
class ClusterLoggingAgentTest (line 68) | @ExtendWith(InterruptingTestCallback.class)
method after (line 77) | @AfterEach
method logAll (line 89) | @Test
method logRoleChange (line 105) | @Test
method logStateChange (line 112) | @Test
method logElectionStateChange (line 119) | @Test
method testClusterEventsLogging (line 126) | private void testClusterEventsLogging(
method before (line 194) | private void before(final String enabledEvents, final EnumSet<ClusterE...
class StubEventLogReaderAgent (line 211) | static final class StubEventLogReaderAgent implements Agent, MessageHa...
method roleName (line 213) | public String roleName()
method doWork (line 218) | public int doWork()
method onMessage (line 223) | public void onMessage(final int msgTypeId, final MutableDirectBuffer...
FILE: aeron-agent/src/test/java/io/aeron/agent/CommonEventDissectorTest.java
class CommonEventDissectorTest (line 32) | class CommonEventDissectorTest
method dissectLogStartMessage (line 37) | @Test
method dissectLogHeader (line 52) | @Test
method dissectSocketAddressIpv4 (line 64) | @Test
method dissectSocketAddressIpv6 (line 78) | @Test
method dissectSocketAddressInvalidLength (line 93) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/CommonEventEncoderTest.java
class CommonEventEncoderTest (line 38) | class CommonEventEncoderTest
method encodeLogHeader (line 42) | @Test
method encodeLogHeaderThrowsIllegalArgumentExceptionIfCaptureLengthIsNegative (line 55) | @Test
method encodeLogHeaderThrowsIllegalArgumentExceptionIfCaptureLengthIsGreaterThanMaxCaptureSize (line 62) | @Test
method encodeLogHeaderThrowsIllegalArgumentExceptionIfCaptureLengthIsGreaterThanLength (line 69) | @Test
method encodeLogHeaderThrowsIllegalArgumentExceptionIfLengthIsNegative (line 76) | @Test
method encodeSocketAddress (line 83) | @Test
method encodeTrailingStringAsAsciiWhenPayloadIsSmallerThanMaxMessageSizeWithoutHeader (line 99) | @Test
method encodeTrailingStringAsAsciiWhenPayloadExceedsMaxMessageSizeWithoutHeader (line 111) | @Test
method encodeBufferSmallerThanMaxCaptureSize (line 127) | @Test
method encodeBufferBuggerThanMaxCaptureSize (line 148) | @Test
method testCaptureLength (line 169) | @ParameterizedTest
method testEncodedLength (line 176) | @ParameterizedTest
method testStateTransitionStringLength (line 183) | @Test
method stateNameReturnsNameOfTheEnumConstant (line 192) | @Test
method stateNameReturnsNullIfNull (line 199) | @Test
method captureLengthArgs (line 205) | private static List<Arguments> captureLengthArgs()
method encodedLengthArgs (line 214) | private static List<Arguments> encodedLengthArgs()
FILE: aeron-agent/src/test/java/io/aeron/agent/ConfigOptionTest.java
class ConfigOptionTest (line 30) | class ConfigOptionTest
method shouldReadSystemProperties (line 32) | @Test
method shouldReturnAllSystemProperties (line 62) | @Test
method shouldThrowNullPointerExceptionIfConfigOptionsMapIsNull (line 70) | @Test
method shouldReturnNullIfConfigOptionsMapIsEmpty (line 76) | @Test
method shouldCombineConfigOptionsIntoAnAgentArgsString (line 82) | @Test
method shouldThrowExceptionIfNullOrEmptyAgentArgs (line 103) | @ParameterizedTest
method shouldParseAgentArgsAsAConfigOptionsMap (line 112) | @Test
method shouldParseAgentArgsThatEndWithExtraSeparators (line 134) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/DriverEventCodeTest.java
class DriverEventCodeTest (line 23) | class DriverEventCodeTest
method getCodeById (line 25) | @ParameterizedTest
FILE: aeron-agent/src/test/java/io/aeron/agent/DriverEventDissectorTest.java
class DriverEventDissectorTest (line 45) | class DriverEventDissectorTest
method dissectRemovePublicationCleanup (line 50) | @Test
method dissectRemoveSubscriptionCleanup (line 66) | @Test
method dissectRemoveImageCleanup (line 82) | @Test
method dissectFrameTypePad (line 99) | @Test
method dissectFrameTypeData (line 123) | @Test
method dissectFrameTypeStatusMessage (line 147) | @Test
method dissectFrameTypeNak (line 173) | @Test
method dissectFrameTypeSetup (line 198) | @Test
method dissectFrameTypeRtt (line 226) | @Test
method dissectFrameTypeError (line 251) | @Test
method dissectFrameTypeUnknown (line 277) | @Test
method dissectString (line 294) | @Test
method dissectCommandPublication (line 306) | @ParameterizedTest
method dissectCommandSubscription (line 325) | @ParameterizedTest
method dissectCommandRemoveCounterEvent (line 346) | @ParameterizedTest
method dissectCommandRemovePublicationEvent (line 364) | @ParameterizedTest
method dissectOldShortCommandRemovePublicationEvent (line 384) | @ParameterizedTest
method dissectCommandRemoveSubscriptionEvent (line 405) | @ParameterizedTest
method dissectCommandPublicationReady (line 423) | @ParameterizedTest
method dissectCommandImageReady (line 447) | @ParameterizedTest
method dissectCommandOperationSuccess (line 470) | @ParameterizedTest
method dissectCommandCorrelationEvent (line 486) | @ParameterizedTest
method dissectCommandImage (line 503) | @ParameterizedTest
method dissectCommandDestination (line 522) | @ParameterizedTest
method dissectCommandError (line 545) | @ParameterizedTest
method dissectCommandCounter (line 564) | @ParameterizedTest
method dissectCommandSubscriptionReady (line 585) | @ParameterizedTest
method dissectCommandCounterUpdate (line 602) | @ParameterizedTest
method dissectCommandClientTimeout (line 619) | @ParameterizedTest
method dissectCommandTerminateDriver (line 635) | @ParameterizedTest
method dissectCommandUnknown (line 652) | @Test
method dissectUntetheredSubscriptionStateChange (line 664) | @Test
method dissectAddress (line 681) | @Test
method dissectIpv6Address (line 695) | @Test
method dissectFlowControlReceiver (line 709) | @Test
method dissectResolve (line 727) | @Test
method dissectResolveNullAddress (line 750) | @Test
method dissectResolveWithReallyLongNames (line 773) | @Test
method dissectLookup (line 804) | @Test
method dissectHostName (line 829) | @Test
method dissectPublicationRevoke (line 846) | @Test
method dissectPublicationImageRevoke (line 866) | @Test
method newBuffer (line 887) | private DirectBuffer newBuffer(final byte[] bytes)
FILE: aeron-agent/src/test/java/io/aeron/agent/DriverEventEncoderTest.java
class DriverEventEncoderTest (line 33) | class DriverEventEncoderTest
method encodePublicationRemovalShouldWriteChannelLast (line 37) | @Test
method encodePublicationRemovalShouldTruncateChannelIfItExceedsMaxMessageLength (line 56) | @Test
method encodeSubscriptionRemovalShouldWriteChannelLast (line 77) | @Test
method encodeSubscriptionRemovalShouldTruncateChannelIfItExceedsMaxMessageLength (line 97) | @Test
method encodeImageRemovalShouldWriteChannelLast (line 120) | @Test
method encodeImageRemovalShouldTruncateChannelIfItExceedsMaxMessageLength (line 142) | @Test
method untetheredSubscriptionStateChangeLengthComputesLengthBasedOnProvidedState (line 167) | @Test
method encodeUntetheredSubscriptionStateChangeShouldEncodeStateChangeLast (line 177) | @Test
method encodeFlowControlReceiverShouldWriteChannelLast (line 202) | @Test
method encodeFlowControlReceiverShouldTruncateChannelChannelIfTooLong (line 229) | @Test
method encodePublicationRevokeShouldWriteChannelLast (line 258) | @Test
method encodePublicationImageRevokeShouldWriteChannelLast (line 280) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/DriverEventLoggerTest.java
class DriverEventLoggerTest (line 52) | class DriverEventLoggerTest
method after (line 59) | @AfterEach
method toEventCodeIdComputesEventId (line 66) | @ParameterizedTest
method logIsNoOpIfEventIsNotEnabled (line 73) | @Test
method log (line 83) | @Test
method logFrameIn (line 103) | @Test
method logFrameOut (line 128) | @Test
method logString (line 157) | @Test
method logPublicationRemoval (line 173) | @Test
method logSubscriptionRemoval (line 195) | @Test
method logImageRemoval (line 217) | @Test
method logUntetheredSubscriptionStateChange (line 241) | @Test
method logAddress (line 268) | @Test
method logResolve (line 284) | @ParameterizedTest
method logLookup (line 328) | @ParameterizedTest
method logHost (line 366) | @Test
method logNakMessage (line 391) | @ParameterizedTest
method logResend (line 423) | @Test
FILE: aeron-agent/src/test/java/io/aeron/agent/DriverLoggingAgentTest.java
class DriverLoggingAgentTest (line 86) | @ExtendWith(InterruptingTestCallback.class)
method after (line 98) | @AfterEach
method logAllNetworkChannel (line 104) | @Test
method logAllExclusivePublicationNetworkChannel (line 132) | @Test
method logAllIpcChannel (line 162) | @Test
method logAllExclusivePublicationIpcChannel (line 181) | @Test
method logIndividualEvents (line 201) | @ParameterizedTest
method logIndividualExclusivePublicationEvents (line 220) | @ParameterizedTest
method testLogMediaDriverEvents (line 231) | private void testLogMediaDriverEvents(
method testLogExclusivePublicationMediaDriverEvents (line 274) | private void testLogExclusivePublicationMediaDriverEvents(
method before (line 333) | private void before(final String enabledEvents, final EnumSet<DriverEv...
class StubEventLogReaderAgent (line 344) | static final class StubEventLogReaderAgent implements Agent, MessageHa...
method roleName (line 346) | public String roleName()
method doWork (line 351) | public int doWork()
method onMessage (line 356) | public void onMessage(final int msgTypeId, final MutableDirectBuffer...
FILE: aeron-agent/src/test/java/io/aeron/agent/EventConfigurationTest.java
class EventConfigurationTest (line 34) | public class EventConfigurationTest
method nullValueMeansNoEventsEnabled (line 36) | @Test
method parseEventCodesShouldIgnoreInvalidEventCodes (line 45) | @Test
method asyncTaskExecutorThreadsReturnsOneByDefault (line 64) | @Test
method asyncTaskExecutorThreadsReturnsZeroIfNegative (line 77) | @ParameterizedTest
method asyncTaskExecutorThreadsReturnsOneIfInvalid (line 92) | @Test
type TestEvent (line 106) | enum TestEvent
FILE: aeron-agent/src/test/java/io/aeron/agent/EventLogReaderAgentTest.java
class EventLogReaderAgentTest (line 44) | class EventLogReaderAgentTest
method shouldListEnabledLoggersOnStartPrintStream (line 46) | @Test
method shouldListEnabledLoggersOnStartFile (line 53) | @Test
method shouldListSingleEnabledLoggerOnStart (line 76) | @Test
method testOnStart (line 102) | private static void testOnStart(final String fileName, final PrintStre...
method throwsNullPointerExceptionIfNanoClockIsNull (line 133) | @Test
method throwsNullPointerExceptionIfEpochClockIsNull (line 144) | @Test
method throwsNullPointerExceptionIfFileIsNullAndPrintStreamIsNull (line 155) | @Test
method typeCode (line 168) | public int typeCode()
method decode (line 173) | public void decode(
method addInstrumentation (line 179) | public AgentBuilder addInstrumentation(final AgentBuilder agentBuilder...
method reset (line 184) | public void reset()
FILE: aeron-agent/src/test/java/io/aeron/agent/LogUtilTest.java
class LogUtilTest (line 23) | class LogUtilTest
method shouldAppendTimestamp (line 27) | @ParameterizedTest
FILE: aeron-annotations/src/main/java/io/aeron/config/Config.java
type Type (line 31) | enum Type
type IsTimeValue (line 162) | enum IsTimeValue
FILE: aeron-annotations/src/main/java/io/aeron/config/ConfigInfo.java
class ConfigInfo (line 24) | public class ConfigInfo implements Serializable
method ConfigInfo (line 126) | public ConfigInfo(final String id)
FILE: aeron-annotations/src/main/java/io/aeron/config/ConfigProcessor.java
class ConfigProcessor (line 33) | @SupportedAnnotationTypes("io.aeron.config.Config")
method ConfigProcessor (line 45) | public ConfigProcessor()
method getEnabledPropertyName (line 49) | @Override
method getPrintNotesPropertyName (line 55) | @Override
method getFailOnErrorPropertyName (line 61) | @Override
method doProcess (line 70) | @Override
method processElement (line 147) | private ConfigInfo processElement(final Map<String, ConfigInfo> config...
method handleTimeValue (line 239) | private static void handleTimeValue(final Config config, final ConfigI...
method handleDefaultTypeOverride (line 268) | private void handleDefaultTypeOverride(
method handleCExpectations (line 311) | private void handleCExpectations(final VariableElement element, final ...
method processExecutableElement (line 352) | private ConfigInfo processExecutableElement(
method processTypeElement (line 383) | private void processTypeElement(final TypeElement element)
method getConfigType (line 396) | private Config.Type getConfigType(final VariableElement element, final...
method getConfigId (line 417) | private String getConfigId(final ExecutableElement element, final Stri...
method getConfigId (line 452) | private String getConfigId(final VariableElement element, final String...
method applyTypeDefaults (line 475) | private void applyTypeDefaults(final String id, final ConfigInfo confi...
method deriveCExpectations (line 482) | private void deriveCExpectations(final String id, final ConfigInfo con...
method sanityCheck (line 540) | private void sanityCheck(final String id, final ConfigInfo configInfo)
method insane (line 560) | private void insane(final String id, final String errMsg)
FILE: aeron-annotations/src/main/java/io/aeron/config/DefaultType.java
type DefaultType (line 25) | public enum DefaultType
method fromCanonicalName (line 68) | public static DefaultType fromCanonicalName(final String canonicalName)
method isUndefined (line 79) | public static boolean isUndefined(final DefaultType defaultType)
method DefaultType (line 88) | DefaultType(final String canonicalName, final String simpleName, final...
method isNumeric (line 100) | public boolean isNumeric()
method getSimpleName (line 110) | public String getSimpleName()
FILE: aeron-annotations/src/main/java/io/aeron/config/ExpectedCConfig.java
class ExpectedCConfig (line 23) | public class ExpectedCConfig implements Serializable
method ExpectedCConfig (line 59) | public ExpectedCConfig()
FILE: aeron-annotations/src/main/java/io/aeron/config/ExpectedConfig.java
class ExpectedConfig (line 23) | public class ExpectedConfig implements Serializable
method ExpectedConfig (line 32) | ExpectedConfig()
FILE: aeron-annotations/src/main/java/io/aeron/config/docgen/ConfigDocGenerator.java
class ConfigDocGenerator (line 30) | final class ConfigDocGenerator implements AutoCloseable
method generate (line 32) | static void generate(final List<ConfigInfo> configInfoCollection, fina...
method ConfigDocGenerator (line 42) | private ConfigDocGenerator(final String outputFile) throws Exception
method close (line 47) | @Override
method generateDoc (line 60) | private void generateDoc(final List<ConfigInfo> configInfoCollection) ...
method sort (line 116) | private List<ConfigInfo> sort(final List<ConfigInfo> config)
method writeHeader (line 124) | private void writeHeader(final String t) throws IOException
method writeCode (line 132) | private void writeCode(final String a, final String b) throws IOException
method write (line 137) | private void write(final String a, final String b) throws IOException
method writeLine (line 143) | private void writeLine() throws IOException
method writeRow (line 148) | private void writeRow(final String a, final String b) throws IOException
method toHeaderString (line 153) | private String toHeaderString(final String t)
method getDefaultString (line 177) | private String getDefaultString(
FILE: aeron-annotations/src/main/java/io/aeron/config/docgen/GenerateConfigDocTask.java
class GenerateConfigDocTask (line 23) | public final class GenerateConfigDocTask
method GenerateConfigDocTask (line 25) | private GenerateConfigDocTask()
method main (line 36) | public static void main(final String[] args) throws Exception
FILE: aeron-annotations/src/main/java/io/aeron/config/validation/Entry.java
class Entry (line 21) | class Entry
method Entry (line 27) | Entry(final ConfigInfo configInfo)
method printOn (line 34) | void printOn(final PrintStream out)
method printFailuresOn (line 48) | void printFailuresOn(final PrintStream out)
FILE: aeron-annotations/src/main/java/io/aeron/config/validation/ValidateConfigExpectationsTask.java
class ValidateConfigExpectationsTask (line 23) | public final class ValidateConfigExpectationsTask
method ValidateConfigExpectationsTask (line 25) | private ValidateConfigExpectationsTask()
method main (line 36) | public static void main(final String[] args) throws Exception
FILE: aeron-annotations/src/main/java/io/aeron/config/validation/Validation.java
class Validation (line 21) | class Validation
method isValid (line 31) | boolean isValid()
method close (line 36) | void close()
method valid (line 44) | void valid(final String message)
method invalid (line 50) | void invalid(final String message)
method out (line 56) | PrintStream out()
method printOn (line 67) | void printOn(final PrintStream out)
FILE: aeron-annotations/src/main/java/io/aeron/config/validation/ValidationReport.java
class ValidationReport (line 26) | final class ValidationReport
method ValidationReport (line 30) | ValidationReport()
method addEntry (line 35) | void addEntry(
method validate (line 58) | private void validate(
method printOn (line 78) | void printOn(final PrintStream out)
method printFailuresOn (line 83) | void printFailuresOn(final PrintStream out)
FILE: aeron-annotations/src/main/java/io/aeron/config/validation/Validator.java
class Validator (line 28) | final class Validator
method validate (line 30) | static ValidationReport validate(
method Validator (line 40) | private Validator(final String sourceDir)
method validate (line 46) | private Validator validate(final Collection<ConfigInfo> configInfoColl...
method validateCExpectations (line 57) | private void validateCExpectations(final ConfigInfo configInfo)
method validateCEnvVar (line 62) | private void validateCEnvVar(final Validation validation, final Expect...
method validateCDefault (line 84) | private void validateCDefault(final Validation validation, final Expec...
method validateCDefaultString (line 136) | private void validateCDefaultString(
method validateCDefaultBoolean (line 159) | private void validateCDefaultBoolean(
method validateCDefaultNumeric (line 179) | private void validateCDefaultNumeric(
FILE: aeron-annotations/src/main/java/io/aeron/counter/CounterInfo.java
class CounterInfo (line 23) | public class CounterInfo implements Serializable
method CounterInfo (line 55) | public CounterInfo()
method CounterInfo (line 65) | public CounterInfo(final String name)
FILE: aeron-annotations/src/main/java/io/aeron/counter/CounterProcessor.java
class CounterProcessor (line 37) | @SupportedAnnotationTypes("io.aeron.counter.AeronCounter")
method CounterProcessor (line 46) | public CounterProcessor()
method getEnabledPropertyName (line 50) | protected String getEnabledPropertyName()
method getPrintNotesPropertyName (line 55) | protected String getPrintNotesPropertyName()
method getFailOnErrorPropertyName (line 60) | protected String getFailOnErrorPropertyName()
method doProcess (line 68) | public void doProcess(final Set<? extends TypeElement> annotations, fi...
method processElement (line 109) | private void processElement(final Map<String, CounterInfo> counterInfo...
FILE: aeron-annotations/src/main/java/io/aeron/counter/validation/ValidateCounterExpectationsTask.java
class ValidateCounterExpectationsTask (line 23) | public final class ValidateCounterExpectationsTask
method ValidateCounterExpectationsTask (line 25) | private ValidateCounterExpectationsTask()
method main (line 36) | public static void main(final String[] args) throws Exception
FILE: aeron-annotations/src/main/java/io/aeron/counter/validation/Validation.java
class Validation (line 21) | class Validation
method Validation (line 32) | Validation(final String name)
method isValid (line 37) | boolean isValid()
method close (line 42) | void close()
method valid (line 50) | void valid(final String message)
method invalid (line 56) | void invalid(final String message)
method out (line 62) | PrintStream out()
method printOn (line 73) | void printOn(final PrintStream out)
FILE: aeron-annotations/src/main/java/io/aeron/counter/validation/ValidationReport.java
class ValidationReport (line 25) | final class ValidationReport
method ValidationReport (line 29) | ValidationReport()
method addValidation (line 34) | void addValidation(
method addValidation (line 43) | void addValidation(
method validate (line 60) | private void validate(
method printOn (line 80) | void printOn(final PrintStream out)
method printFailuresOn (line 85) | void printFailuresOn(final PrintStream out)
FILE: aeron-annotations/src/main/java/io/aeron/counter/validation/Validator.java
class Validator (line 27) | final class Validator
method validate (line 29) | static ValidationReport validate(
method Validator (line 39) | private Validator(final String sourceDir)
method validate (line 45) | private Validator validate(final Collection<CounterInfo> counterInfoCo...
method identifyExtraCCounters (line 54) | private void identifyExtraCCounters(final Collection<CounterInfo> coun...
method validateCExpectations (line 86) | private void validateCExpectations(final CounterInfo counterInfo)
method validate (line 94) | private void validate(final Validation validation, final CounterInfo c...
FILE: aeron-annotations/src/main/java/io/aeron/utility/ElementIO.java
class ElementIO (line 30) | public final class ElementIO
method ElementIO (line 32) | private ElementIO()
method read (line 44) | @SuppressWarnings("unchecked")
method write (line 60) | public static void write(final FileObject resourceFile, final Collecti...
FILE: aeron-annotations/src/main/java/io/aeron/utility/Processor.java
class Processor (line 29) | public abstract class Processor extends AbstractProcessor
method Processor (line 40) | public Processor()
method getSupportedSourceVersion (line 47) | public SourceVersion getSupportedSourceVersion()
method init (line 55) | public synchronized void init(final ProcessingEnvironment processingEnv)
method getEnabledPropertyName (line 71) | protected abstract String getEnabledPropertyName();
method getPrintNotesPropertyName (line 78) | protected abstract String getPrintNotesPropertyName();
method getFailOnErrorPropertyName (line 85) | protected abstract String getFailOnErrorPropertyName();
method doProcess (line 93) | protected abstract void doProcess(Set<? extends TypeElement> annotatio...
method process (line 98) | public boolean process(final Set<? extends TypeElement> annotations, f...
method getDocComment (line 114) | protected String getDocComment(final Element element)
method error (line 131) | protected void error(final String errMsg)
method error (line 142) | protected void error(final String errMsg, final Element element)
method note (line 152) | protected void note(final String msg)
method note (line 163) | protected void note(final String msg, final Element element)
method printMessage (line 171) | private void printMessage(final Diagnostic.Kind kind, final String msg...
FILE: aeron-annotations/src/main/java/io/aeron/validation/Grep.java
class Grep (line 28) | public final class Grep
method execute (line 37) | public static Grep execute(final String pattern, final String sourceDir)
method Grep (line 72) | private Grep(final String commandString, final Exception e)
method Grep (line 80) | private Grep(final String commandString, final int exitCode, final Lis...
method success (line 93) | public boolean success()
method success (line 105) | public boolean success(final boolean expectOneLine)
method getCommandString (line 125) | public String getCommandString()
method getFilenameAndLine (line 135) | public String getFilenameAndLine()
method getFilenameAndLine (line 146) | public String getFilenameAndLine(final int lineNumber)
method getOutput (line 157) | public String getOutput()
method getOutput (line 168) | public String getOutput(final int lineNumber)
method forEach (line 178) | public void forEach(final BiConsumer<String, String> action)
FILE: aeron-annotations/src/main/java/io/aeron/version/Version.java
type Version (line 21) | public interface Version
method majorVersion (line 28) | int majorVersion();
method minorVersion (line 35) | int minorVersion();
method patchVersion (line 42) | int patchVersion();
method gitSha (line 49) | String gitSha();
FILE: aeron-annotations/src/main/java/io/aeron/version/VersionProcessor.java
class VersionProcessor (line 36) | @SupportedAnnotationTypes("io.aeron.version.Versioned")
method VersionProcessor (line 71) | public VersionProcessor()
method getSupportedSourceVersion (line 78) | public SourceVersion getSupportedSourceVersion()
method process (line 86) | public boolean process(final Set<? extends TypeElement> annotations, f...
class VersionInformation (line 130) | private static class VersionInformation
method VersionInformation (line 137) | VersionInformation(final String versionString)
FILE: aeron-archive/src/main/c/client/aeron_archive.h
type aeron_archive_t (line 45) | typedef struct aeron_archive_stct aeron_archive_t;
type aeron_archive_context_t (line 46) | typedef struct aeron_archive_context_stct aeron_archive_context_t;
type aeron_archive_async_connect_t (line 47) | typedef struct aeron_archive_async_connect_stct aeron_archive_async_conn...
type aeron_archive_encoded_credentials_t (line 49) | typedef struct aeron_archive_encoded_credentials_stct
type aeron_archive_encoded_credentials_t (line 61) | typedef aeron_archive_encoded_credentials_t *(*aeron_archive_credentials...
type aeron_archive_encoded_credentials_t (line 69) | typedef aeron_archive_encoded_credentials_t *(*aeron_archive_credentials...
type aeron_archive_replay_params_t (line 90) | typedef struct aeron_archive_replay_params_stct
type aeron_archive_replication_params_t (line 137) | typedef struct aeron_archive_replication_params_stct
type aeron_archive_recording_descriptor_t (line 205) | typedef struct aeron_archive_recording_descriptor_stct
type aeron_archive_recording_subscription_descriptor_t (line 276) | typedef struct aeron_archive_recording_subscription_descriptor_stct
type aeron_archive_client_recording_signal_t (line 305) | typedef enum aeron_archive_client_recording_signal_en
type aeron_archive_recording_signal_t (line 322) | typedef struct aeron_archive_recording_signal_stct
type aeron_archive_source_location_t (line 348) | typedef enum aeron_archive_source_location_en
type aeron_archive_replay_merge_t (line 1252) | typedef struct aeron_archive_replay_merge_stct aeron_archive_replay_merg...
FILE: aeron-archive/src/main/c/client/aeron_archive_async_connect.c
type aeron_archive_async_connect_state_t (line 31) | typedef enum aeron_archive_async_connect_state_en
type aeron_archive_async_connect_stct (line 46) | struct aeron_archive_async_connect_stct
function aeron_archive_async_connect_step (line 71) | uint8_t aeron_archive_async_connect_step(aeron_archive_async_connect_t *...
function aeron_archive_async_connect (line 76) | int aeron_archive_async_connect(aeron_archive_async_connect_t **async, a...
function aeron_archive_async_connect_poll (line 161) | int aeron_archive_async_connect_poll(aeron_archive_t **aeron_archive, ae...
function aeron_archive_check_and_setup_response_channel (line 433) | int aeron_archive_check_and_setup_response_channel(aeron_archive_context...
function aeron_archive_async_connect_transition_to_done (line 469) | int aeron_archive_async_connect_transition_to_done(aeron_archive_t **aer...
function aeron_archive_async_connect_delete (line 531) | int aeron_archive_async_connect_delete(aeron_archive_async_connect_t *as...
FILE: aeron-archive/src/main/c/client/aeron_archive_client.c
function aeron_archive_handle_control_response_with_error_handler (line 45) | static void aeron_archive_handle_control_response_with_error_handler(
function aeron_archive_dispatch_recording_signal (line 52) | static void aeron_archive_dispatch_recording_signal(aeron_archive_t *aer...
function aeron_archive_poll_next_response (line 67) | static int aeron_archive_poll_next_response(
function aeron_archive_poll_for_response_allowing_error (line 125) | static int aeron_archive_poll_for_response_allowing_error(
function aeron_archive_connect (line 242) | int aeron_archive_connect(aeron_archive_t **aeron_archive_p, aeron_archi...
function aeron_archive_create (line 287) | int aeron_archive_create(
function aeron_archive_close (line 325) | int aeron_archive_close(aeron_archive_t *aeron_archive)
function aeron_archive_idle (line 366) | void aeron_archive_idle(aeron_archive_t *aeron_archive)
function aeron_archive_control_response_poller_t (line 371) | aeron_archive_control_response_poller_t *aeron_archive_control_response_...
function aeron_archive_proxy_t (line 376) | aeron_archive_proxy_t *aeron_archive_proxy(aeron_archive_t *aeron_archive)
function aeron_archive_control_session_id (line 381) | int64_t aeron_archive_control_session_id(aeron_archive_t *aeron_archive)
function aeron_archive_next_correlation_id (line 386) | int64_t aeron_archive_next_correlation_id(aeron_archive_t *aeron_archive)
function aeron_archive_poll_for_recording_signals (line 391) | int aeron_archive_poll_for_recording_signals(int32_t *count_p, aeron_arc...
function aeron_archive_poll_for_error_response (line 444) | int aeron_archive_poll_for_error_response(aeron_archive_t *aeron_archive...
function aeron_archive_check_for_error_response (line 493) | int aeron_archive_check_for_error_response(aeron_archive_t *aeron_archive)
function aeron_archive_add_recorded_publication (line 560) | int aeron_archive_add_recorded_publication(
function aeron_archive_add_recorded_exclusive_publication (line 641) | int aeron_archive_add_recorded_exclusive_publication(
function aeron_archive_start_recording (line 716) | int aeron_archive_start_recording(
function aeron_archive_get_recording_position (line 754) | int aeron_archive_get_recording_position(
function aeron_archive_get_start_position (line 786) | int aeron_archive_get_start_position(
function aeron_archive_get_stop_position (line 818) | int aeron_archive_get_stop_position(
function aeron_archive_get_max_recorded_position (line 850) | int aeron_archive_get_max_recorded_position(
function aeron_archive_stop_recording_subscription (line 882) | int aeron_archive_stop_recording_subscription(
function aeron_archive_try_stop_recording_subscription (line 913) | int aeron_archive_try_stop_recording_subscription(
function aeron_archive_stop_recording_channel_and_stream (line 946) | int aeron_archive_stop_recording_channel_and_stream(
function aeron_archive_try_stop_recording_channel_and_stream (line 979) | int aeron_archive_try_stop_recording_channel_and_stream(
function aeron_archive_try_stop_recording_by_identity (line 1014) | int aeron_archive_try_stop_recording_by_identity(
function aeron_archive_stop_recording_publication_constants (line 1052) | int aeron_archive_stop_recording_publication_constants(
function aeron_archive_stop_recording_publication (line 1083) | int aeron_archive_stop_recording_publication(
function aeron_archive_stop_recording_exclusive_publication (line 1094) | int aeron_archive_stop_recording_exclusive_publication(
function aeron_archive_find_last_matching_recording (line 1105) | int aeron_archive_find_last_matching_recording(
function aeron_archive_list_recording (line 1143) | int aeron_archive_list_recording(
function aeron_archive_list_recordings (line 1184) | int aeron_archive_list_recordings(
function aeron_archive_list_recordings_for_uri (line 1227) | int aeron_archive_list_recordings_for_uri(
function aeron_archive_start_replay_locked (line 1275) | static int aeron_archive_start_replay_locked(
function aeron_archive_start_replay (line 1342) | int aeron_archive_start_replay(
function aeron_archive_replay_locked (line 1361) | static int aeron_archive_replay_locked(
function aeron_archive_replay (line 1490) | int aeron_archive_replay(
function aeron_archive_truncate_recording (line 1508) | int aeron_archive_truncate_recording(
function aeron_archive_stop_replay (line 1542) | int aeron_archive_stop_replay(
function aeron_archive_stop_all_replays (line 1573) | int aeron_archive_stop_all_replays(
function aeron_archive_list_recording_subscriptions (line 1604) | int aeron_archive_list_recording_subscriptions(
function aeron_archive_purge_recording (line 1653) | int aeron_archive_purge_recording(
function aeron_archive_extend_recording (line 1685) | int aeron_archive_extend_recording(
function aeron_archive_replicate (line 1725) | int aeron_archive_replicate(
function aeron_archive_stop_replication (line 1763) | int aeron_archive_stop_replication(
function aeron_archive_try_stop_replication (line 1794) | int aeron_archive_try_stop_replication(
function aeron_archive_detach_segments (line 1827) | int aeron_archive_detach_segments(
function aeron_archive_delete_detached_segments (line 1860) | int aeron_archive_delete_detached_segments(
function aeron_archive_purge_segments (line 1892) | int aeron_archive_purge_segments(
function aeron_archive_attach_segments (line 1926) | int aeron_archive_attach_segments(
function aeron_archive_migrate_segments (line 1958) | int aeron_archive_migrate_segments(
function aeron_archive_update_channel (line 1992) | int aeron_archive_update_channel(aeron_archive_t *aeron_archive, int64_t...
function aeron_archive_segment_file_base_position (line 2022) | int64_t aeron_archive_segment_file_base_position(
function aeron_archive_context_t (line 2035) | aeron_archive_context_t *aeron_archive_get_archive_context(aeron_archive...
function aeron_archive_context_t (line 2040) | aeron_archive_context_t *aeron_archive_get_and_own_archive_context(aeron...
function aeron_archive_get_archive_id (line 2047) | int64_t aeron_archive_get_archive_id(aeron_archive_t *aeron_archive)
function aeron_subscription_t (line 2052) | aeron_subscription_t *aeron_archive_get_control_response_subscription(ae...
function aeron_subscription_t (line 2057) | aeron_subscription_t *aeron_archive_get_and_own_control_response_subscri...
function aeron_archive_poll_for_response (line 2066) | int aeron_archive_poll_for_response(
function aeron_archive_poll_for_descriptors (line 2131) | int aeron_archive_poll_for_descriptors(
function aeron_archive_poll_for_subscription_descriptors (line 2202) | int aeron_archive_poll_for_subscription_descriptors(
function aeron_archive_replay_via_response_channel (line 2274) | int aeron_archive_replay_via_response_channel(
function aeron_archive_start_replay_via_response_channel (line 2352) | int aeron_archive_start_replay_via_response_channel(
function aeron_archive_initiate_replay_via_response_channel (line 2385) | int aeron_archive_initiate_replay_via_response_channel(
function aeron_archive_channel_with_session_id (line 2570) | int aeron_archive_channel_with_session_id(char *out, size_t out_len, con...
FILE: aeron-archive/src/main/c/client/aeron_archive_client.h
type aeron_archive_stct (line 26) | struct aeron_archive_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_client_version.c
function aeron_archive_client_version_major (line 29) | int aeron_archive_client_version_major(void)
function aeron_archive_client_version_minor (line 34) | int aeron_archive_client_version_minor(void)
function aeron_archive_client_version_patch (line 39) | int aeron_archive_client_version_patch(void)
FILE: aeron-archive/src/main/c/client/aeron_archive_configuration.c
function aeron_archive_semantic_version (line 20) | int32_t aeron_archive_semantic_version(void)
function aeron_archive_protocol_version_with_archive_id (line 25) | int32_t aeron_archive_protocol_version_with_archive_id(void)
FILE: aeron-archive/src/main/c/client/aeron_archive_context.c
function aeron_archive_context_init (line 33) | int aeron_archive_context_init(aeron_archive_context_t **ctx)
function aeron_archive_context_close (line 200) | int aeron_archive_context_close(aeron_archive_context_t *ctx)
function aeron_archive_context_duplicate (line 229) | int aeron_archive_context_duplicate(aeron_archive_context_t **dest_p, ae...
function aeron_archive_apply_default_parameters (line 269) | static int aeron_archive_apply_default_parameters(aeron_archive_context_...
function aeron_archive_context_conclude (line 312) | int aeron_archive_context_conclude(aeron_archive_context_t *ctx)
function aeron_archive_context_idle (line 454) | void aeron_archive_context_idle(aeron_archive_context_t *ctx)
function aeron_archive_context_invoke_aeron_client (line 459) | void aeron_archive_context_invoke_aeron_client(aeron_archive_context_t *...
function aeron_archive_context_invoke_error_handler (line 472) | void aeron_archive_context_invoke_error_handler(
function aeron_archive_context_set_aeron (line 495) | int aeron_archive_context_set_aeron(aeron_archive_context_t *ctx, aeron_...
function aeron_t (line 502) | aeron_t *aeron_archive_context_get_aeron(aeron_archive_context_t *ctx)
function aeron_archive_context_set_owns_aeron_client (line 507) | int aeron_archive_context_set_owns_aeron_client(aeron_archive_context_t ...
function aeron_archive_context_get_owns_aeron_client (line 514) | bool aeron_archive_context_get_owns_aeron_client(aeron_archive_context_t...
function aeron_archive_context_set_aeron_directory_name (line 519) | int aeron_archive_context_set_aeron_directory_name(aeron_archive_context...
function aeron_archive_context_set_channel (line 531) | static int aeron_archive_context_set_channel(char **target_channel, size...
function aeron_archive_context_set_control_request_channel (line 570) | int aeron_archive_context_set_control_request_channel(
function aeron_archive_context_set_control_request_stream_id (line 583) | int aeron_archive_context_set_control_request_stream_id(aeron_archive_co...
function aeron_archive_context_get_control_request_stream_id (line 590) | int32_t aeron_archive_context_get_control_request_stream_id(aeron_archiv...
function aeron_archive_context_set_control_response_channel (line 595) | int aeron_archive_context_set_control_response_channel(
function aeron_archive_context_set_control_response_stream_id (line 608) | int aeron_archive_context_set_control_response_stream_id(aeron_archive_c...
function aeron_archive_context_get_control_response_stream_id (line 615) | int32_t aeron_archive_context_get_control_response_stream_id(aeron_archi...
function aeron_archive_context_set_control_term_buffer_length (line 620) | int aeron_archive_context_set_control_term_buffer_length(aeron_archive_c...
function aeron_archive_context_get_control_term_buffer_length (line 627) | size_t aeron_archive_context_get_control_term_buffer_length(aeron_archiv...
function aeron_archive_context_set_control_term_buffer_sparse (line 632) | int aeron_archive_context_set_control_term_buffer_sparse(aeron_archive_c...
function aeron_archive_context_get_control_term_buffer_sparse (line 639) | bool aeron_archive_context_get_control_term_buffer_sparse(aeron_archive_...
function aeron_archive_context_set_control_mtu_length (line 644) | int aeron_archive_context_set_control_mtu_length(aeron_archive_context_t...
function aeron_archive_context_get_control_mtu_length (line 651) | size_t aeron_archive_context_get_control_mtu_length(aeron_archive_contex...
function aeron_archive_context_set_client_name (line 656) | int aeron_archive_context_set_client_name(aeron_archive_context_t *conte...
function aeron_archive_context_set_recording_events_channel (line 675) | int aeron_archive_context_set_recording_events_channel(
function aeron_archive_context_set_recording_events_stream_id (line 688) | int aeron_archive_context_set_recording_events_stream_id(aeron_archive_c...
function aeron_archive_context_get_recording_events_stream_id (line 695) | int32_t aeron_archive_context_get_recording_events_stream_id(aeron_archi...
function aeron_archive_context_set_message_timeout_ns (line 700) | int aeron_archive_context_set_message_timeout_ns(aeron_archive_context_t...
function aeron_archive_context_get_message_timeout_ns (line 707) | uint64_t aeron_archive_context_get_message_timeout_ns(aeron_archive_cont...
function aeron_archive_context_set_message_retry_attempts (line 712) | int aeron_archive_context_set_message_retry_attempts(aeron_archive_conte...
function aeron_archive_context_get_message_retry_attempts (line 718) | uint32_t aeron_archive_context_get_message_retry_attempts(aeron_archive_...
function aeron_archive_context_set_idle_strategy (line 723) | int aeron_archive_context_set_idle_strategy(
function aeron_archive_context_set_credentials_supplier (line 734) | int aeron_archive_context_set_credentials_supplier(
function aeron_archive_context_set_recording_signal_consumer (line 749) | int aeron_archive_context_set_recording_signal_consumer(
function aeron_archive_context_set_error_handler (line 760) | int aeron_archive_context_set_error_handler(
function aeron_archive_context_set_delegating_invoker (line 771) | int aeron_archive_context_set_delegating_invoker(
FILE: aeron-archive/src/main/c/client/aeron_archive_context.h
type aeron_archive_context_stct (line 43) | struct aeron_archive_context_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_control_response_poller.c
function aeron_archive_control_response_poller_create (line 39) | int aeron_archive_control_response_poller_create(
function aeron_archive_control_response_poller_close (line 85) | int aeron_archive_control_response_poller_close(aeron_archive_control_re...
function aeron_archive_control_response_poller_poll (line 103) | int aeron_archive_control_response_poller_poll(aeron_archive_control_res...
function aeron_archive_control_response_poller_reset (line 131) | void aeron_archive_control_response_poller_reset(aeron_archive_control_r...
function aeron_controlled_fragment_handler_action_t (line 161) | aeron_controlled_fragment_handler_action_t aeron_archive_control_respons...
FILE: aeron-archive/src/main/c/client/aeron_archive_control_response_poller.h
type aeron_archive_control_response_poller_t (line 26) | typedef struct aeron_archive_control_response_poller_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_credentials_supplier.c
function aeron_archive_encoded_credentials_t (line 20) | aeron_archive_encoded_credentials_t *aeron_archive_credentials_supplier_...
function aeron_archive_encoded_credentials_t (line 29) | aeron_archive_encoded_credentials_t *aeron_archive_credentials_supplier_...
function aeron_archive_credentials_supplier_on_free (line 40) | void aeron_archive_credentials_supplier_on_free(aeron_archive_credential...
FILE: aeron-archive/src/main/c/client/aeron_archive_credentials_supplier.h
type aeron_archive_credentials_supplier_t (line 24) | typedef struct aeron_archive_credentials_supplier_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_proxy.c
function aeron_archive_proxy_create (line 70) | int aeron_archive_proxy_create(
function aeron_archive_proxy_init (line 91) | int aeron_archive_proxy_init(
function aeron_archive_proxy_set_control_session_id (line 119) | int aeron_archive_proxy_set_control_session_id(
function aeron_archive_proxy_close (line 128) | int aeron_archive_proxy_close(aeron_archive_proxy_t *archive_proxy)
function aeron_archive_proxy_delete (line 136) | int aeron_archive_proxy_delete(aeron_archive_proxy_t *archive_proxy)
function aeron_archive_proxy_try_connect (line 145) | bool aeron_archive_proxy_try_connect(
function aeron_archive_proxy_archive_id (line 182) | bool aeron_archive_proxy_archive_id(
function aeron_archive_proxy_challenge_response (line 203) | bool aeron_archive_proxy_challenge_response(
function aeron_archive_proxy_close_session (line 229) | bool aeron_archive_proxy_close_session(aeron_archive_proxy_t *archive_pr...
function aeron_archive_proxy_start_recording (line 247) | bool aeron_archive_proxy_start_recording(
function aeron_archive_proxy_get_recording_position (line 283) | bool aeron_archive_proxy_get_recording_position(
function aeron_archive_proxy_get_start_position (line 306) | bool aeron_archive_proxy_get_start_position(
function aeron_archive_proxy_get_stop_position (line 329) | bool aeron_archive_proxy_get_stop_position(
function aeron_archive_proxy_get_max_recorded_position (line 352) | bool aeron_archive_proxy_get_max_recorded_position(
function aeron_archive_proxy_stop_recording (line 375) | bool aeron_archive_proxy_stop_recording(
function aeron_archive_proxy_stop_recording_subscription (line 403) | bool aeron_archive_proxy_stop_recording_subscription(
function aeron_archive_proxy_stop_recording_by_identity (line 426) | bool aeron_archive_proxy_stop_recording_by_identity(
function aeron_archive_proxy_find_last_matching_recording (line 449) | bool aeron_archive_proxy_find_last_matching_recording(
function aeron_archive_proxy_list_recording (line 481) | bool aeron_archive_proxy_list_recording(
function aeron_archive_proxy_list_recordings (line 504) | bool aeron_archive_proxy_list_recordings(
function aeron_archive_proxy_list_recordings_for_uri (line 529) | bool aeron_archive_proxy_list_recordings_for_uri(
function aeron_archive_proxy_replay (line 561) | bool aeron_archive_proxy_replay(
function aeron_archive_proxy_truncate_recording (line 627) | bool aeron_archive_proxy_truncate_recording(
function aeron_archive_proxy_stop_replay (line 652) | bool aeron_archive_proxy_stop_replay(
function aeron_archive_proxy_stop_all_replays (line 675) | bool aeron_archive_proxy_stop_all_replays(
function aeron_archive_proxy_list_recording_subscriptions (line 698) | bool aeron_archive_proxy_list_recording_subscriptions(
function aeron_archive_proxy_purge_recording (line 734) | bool aeron_archive_proxy_purge_recording(
function aeron_archive_proxy_extend_recording (line 757) | bool aeron_archive_proxy_extend_recording(
function aeron_archive_proxy_replicate (line 795) | bool aeron_archive_proxy_replicate(
function aeron_archive_proxy_stop_replication (line 850) | bool aeron_archive_proxy_stop_replication(
function aeron_archive_request_replay_token (line 873) | bool aeron_archive_request_replay_token(
function aeron_archive_proxy_detach_segments (line 896) | bool aeron_archive_proxy_detach_segments(
function aeron_archive_proxy_delete_detached_segments (line 921) | bool aeron_archive_proxy_delete_detached_segments(
function aeron_archive_proxy_purge_segments (line 944) | bool aeron_archive_proxy_purge_segments(
function aeron_archive_proxy_attach_segments (line 969) | bool aeron_archive_proxy_attach_segments(
function aeron_archive_proxy_migrate_segments (line 992) | bool aeron_archive_proxy_migrate_segments(
function aeron_archive_proxy_update_channel (line 1017) | bool aeron_archive_proxy_update_channel(
function aeron_archive_proxy_offer_once (line 1044) | int64_t aeron_archive_proxy_offer_once(aeron_archive_proxy_t *archive_pr...
function aeron_archive_proxy_offer (line 1055) | bool aeron_archive_proxy_offer(
FILE: aeron-archive/src/main/c/client/aeron_archive_proxy.h
type aeron_archive_proxy_t (line 26) | typedef struct aeron_archive_proxy_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_descriptor_poller.c
function aeron_archive_recording_descriptor_poller_create (line 37) | int aeron_archive_recording_descriptor_poller_create(
function aeron_archive_recording_descriptor_poller_close (line 75) | int aeron_archive_recording_descriptor_poller_close(aeron_archive_record...
function aeron_archive_recording_descriptor_poller_reset (line 85) | void aeron_archive_recording_descriptor_poller_reset(
function aeron_archive_recording_descriptor_poller_poll (line 100) | int aeron_archive_recording_descriptor_poller_poll(aeron_archive_recordi...
function aeron_controlled_fragment_handler_action_t (line 128) | aeron_controlled_fragment_handler_action_t aeron_archive_recording_descr...
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_descriptor_poller.h
type aeron_archive_recording_descriptor_poller_t (line 26) | typedef struct aeron_archive_recording_descriptor_poller_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_pos.c
type aeron_archive_recording_pos_key_defn (line 24) | struct aeron_archive_recording_pos_key_defn
type aeron_archive_recording_pos_key_defn (line 32) | struct aeron_archive_recording_pos_key_defn
function find_counter_id (line 34) | static int32_t find_counter_id(aeron_counters_reader_t *counters_reader,...
function recording_id_matcher (line 81) | static bool recording_id_matcher(struct aeron_archive_recording_pos_key_...
function aeron_archive_recording_pos_find_counter_id_by_recording_id (line 86) | int32_t aeron_archive_recording_pos_find_counter_id_by_recording_id(aero...
function session_id_matcher (line 91) | static bool session_id_matcher(struct aeron_archive_recording_pos_key_de...
function aeron_archive_recording_pos_find_counter_id_by_session_id (line 96) | int32_t aeron_archive_recording_pos_find_counter_id_by_session_id(aeron_...
function aeron_archive_recording_pos_get_recording_id (line 101) | int64_t aeron_archive_recording_pos_get_recording_id(aeron_counters_read...
function aeron_archive_recording_pos_get_source_identity (line 128) | int aeron_archive_recording_pos_get_source_identity(aeron_counters_reade...
function aeron_archive_recording_pos_is_active (line 160) | int aeron_archive_recording_pos_is_active(bool *is_active, aeron_counter...
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_signal.c
function aeron_archive_recording_signal_dispatch_buffer (line 23) | int aeron_archive_recording_signal_dispatch_buffer(aeron_archive_context...
function aeron_archive_recording_signal_dispatch_signal (line 58) | void aeron_archive_recording_signal_dispatch_signal(aeron_archive_contex...
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_subscription_descriptor_poller.c
function aeron_archive_recording_subscription_descriptor_poller_create (line 37) | int aeron_archive_recording_subscription_descriptor_poller_create(
function aeron_archive_recording_subscription_descriptor_poller_close (line 75) | int aeron_archive_recording_subscription_descriptor_poller_close(aeron_a...
function aeron_archive_recording_subscription_descriptor_poller_reset (line 85) | void aeron_archive_recording_subscription_descriptor_poller_reset(
function aeron_archive_recording_subscription_descriptor_poller_poll (line 100) | int aeron_archive_recording_subscription_descriptor_poller_poll(aeron_ar...
function aeron_controlled_fragment_handler_action_t (line 128) | aeron_controlled_fragment_handler_action_t aeron_archive_recording_subsc...
FILE: aeron-archive/src/main/c/client/aeron_archive_recording_subscription_descriptor_poller.h
type aeron_archive_recording_subscription_descriptor_poller_t (line 26) | typedef struct aeron_archive_recording_subscription_descriptor_poller_stct
FILE: aeron-archive/src/main/c/client/aeron_archive_replay_merge.c
type aeron_archive_replay_merge_state_t (line 34) | typedef enum aeron_archive_replay_merge_state_en
type aeron_archive_replay_merge_stct (line 47) | struct aeron_archive_replay_merge_stct
function aeron_archive_replay_merge_init (line 96) | int aeron_archive_replay_merge_init(
function aeron_archive_replay_merge_close (line 231) | int aeron_archive_replay_merge_close(aeron_archive_replay_merge_t *repla...
function aeron_archive_replay_merge_do_work (line 301) | int aeron_archive_replay_merge_do_work(int *work_count_p, aeron_archive_...
function aeron_archive_replay_merge_poll (line 381) | int aeron_archive_replay_merge_poll(
function aeron_image_t (line 396) | aeron_image_t *aeron_archive_replay_merge_image(aeron_archive_replay_mer...
function aeron_archive_replay_merge_is_merged (line 402) | bool aeron_archive_replay_merge_is_merged(aeron_archive_replay_merge_t *...
function aeron_archive_replay_merge_has_failed (line 407) | bool aeron_archive_replay_merge_has_failed(aeron_archive_replay_merge_t ...
function aeron_archive_replay_merge_is_live_added (line 412) | bool aeron_archive_replay_merge_is_live_added(aeron_archive_replay_merge...
function aeron_archive_replay_merge_resolve_replay_port (line 419) | static int aeron_archive_replay_merge_resolve_replay_port(int *work_coun...
function aeron_archive_replay_merge_get_recording_position (line 480) | static int aeron_archive_replay_merge_get_recording_position(int *work_c...
function aeron_archive_replay_merge_replay (line 522) | static int aeron_archive_replay_merge_replay(int *work_count_p, aeron_ar...
function aeron_archive_replay_merge_catchup (line 587) | static int aeron_archive_replay_merge_catchup(int *work_count_p, aeron_a...
function aeron_archive_replay_merge_attempt_live_join (line 629) | static int aeron_archive_replay_merge_attempt_live_join(int *work_count_...
function aeron_archive_replay_merge_set_state (line 719) | static void aeron_archive_replay_merge_set_state(aeron_archive_replay_me...
function aeron_archive_replay_merge_handle_async_destination (line 724) | static int aeron_archive_replay_merge_handle_async_destination(aeron_arc...
function aeron_archive_replay_merge_call_get_max_recorded_position (line 745) | static bool aeron_archive_replay_merge_call_get_max_recorded_position(ae...
function aeron_archive_replay_merge_poll_for_response (line 774) | static int aeron_archive_replay_merge_poll_for_response(bool *found_resp...
function aeron_archive_replay_merge_should_add_live_destination (line 815) | static bool aeron_archive_replay_merge_should_add_live_destination(aeron...
function aeron_archive_replay_merge_should_stop_and_remove_replay (line 827) | static bool aeron_archive_replay_merge_should_stop_and_remove_replay(aer...
function aeron_archive_replay_merge_stop_replay (line 834) | static void aeron_archive_replay_merge_stop_replay(aeron_archive_replay_...
FILE: aeron-archive/src/main/c/client/aeron_archive_replay_params.c
function aeron_archive_replay_params_init (line 19) | int aeron_archive_replay_params_init(aeron_archive_replay_params_t *params)
function aeron_archive_replay_params_copy (line 31) | int aeron_archive_replay_params_copy(aeron_archive_replay_params_t *dst,...
function aeron_archive_replay_params_is_bounded (line 43) | bool aeron_archive_replay_params_is_bounded(aeron_archive_replay_params_...
FILE: aeron-archive/src/main/c/client/aeron_archive_replication_params.c
function aeron_archive_replication_params_init (line 19) | int aeron_archive_replication_params_init(aeron_archive_replication_para...
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/AeronArchive.h
function namespace (line 28) | namespace aeron { namespace archive { namespace client
function recording_descriptor_consumer_func (line 1360) | static void recording_descriptor_consumer_func(
function recording_subscription_descriptor_consumer_func (line 1387) | static void recording_subscription_descriptor_consumer_func(
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/ArchiveContext.h
function namespace (line 25) | namespace aeron { namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/CredentialsSupplier.h
function namespace (line 22) | namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/RecordingPos.h
function namespace (line 21) | namespace aeron { namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/ReplayMerge.h
function namespace (line 21) | namespace aeron { namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/ReplayParams.h
function namespace (line 21) | namespace aeron { namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/archive/ReplicationParams.h
function namespace (line 21) | namespace aeron { namespace archive { namespace client
FILE: aeron-archive/src/main/cpp_wrapper/client/util/ArchiveExceptions.h
function namespace (line 21) | namespace aeron { namespace util
FILE: aeron-archive/src/main/java/io/aeron/archive/AbstractListRecordingsSession.java
class AbstractListRecordingsSession (line 20) | abstract class AbstractListRecordingsSession implements Session
method AbstractListRecordingsSession (line 33) | AbstractListRecordingsSession(
method abort (line 52) | public void abort(final String reason)
method isDone (line 60) | public boolean isDone()
method sessionId (line 68) | public long sessionId()
method doWork (line 76) | public int doWork()
method close (line 143) | public void close()
method acceptDescriptor (line 148) | abstract boolean acceptDescriptor(UnsafeBuffer descriptorBuffer);
FILE: aeron-archive/src/main/java/io/aeron/archive/Archive.java
class Archive (line 121) | @Versioned
method Archive (line 128) | Archive(final Context ctx)
method main (line 172) | @SuppressWarnings("try")
method context (line 201) | public Context context()
method close (line 209) | public void close()
method invoker (line 221) | public AgentInvoker invoker()
method launch (line 231) | public static Archive launch()
method launch (line 242) | public static Archive launch(final Context ctx)
class Configuration (line 262) | @Config(existsInC = false)
method Configuration (line 265) | private Configuration()
method archiveDirName (line 668) | public static String archiveDirName()
method markFileDir (line 678) | public static String markFileDir()
method fileIoMaxLength (line 688) | public static int fileIoMaxLength()
method segmentFileLength (line 700) | public static int segmentFileLength()
method lowStorageSpaceThreshold (line 710) | public static long lowStorageSpaceThreshold()
method fileSyncLevel (line 726) | public static int fileSyncLevel()
method catalogFileSyncLevel (line 742) | public static int catalogFileSyncLevel()
method threadingMode (line 752) | public static ArchiveThreadingMode threadingMode()
method idleStrategySupplier (line 764) | public static Supplier<IdleStrategy> idleStrategySupplier(final Stat...
method recorderIdleStrategySupplier (line 780) | public static Supplier<IdleStrategy> recorderIdleStrategySupplier(fi...
method replayerIdleStrategySupplier (line 798) | public static Supplier<IdleStrategy> replayerIdleStrategySupplier(fi...
method maxConcurrentRecordings (line 814) | public static int maxConcurrentRecordings()
method maxConcurrentReplays (line 824) | public static int maxConcurrentReplays()
method maxCatalogEntries (line 836) | @Deprecated
method catalogCapacity (line 847) | public static long catalogCapacity()
method connectTimeoutNs (line 858) | public static long connectTimeoutNs()
method replayLingerTimeoutNs (line 870) | public static long replayLingerTimeoutNs()
method conductorCycleThresholdNs (line 880) | public static long conductorCycleThresholdNs()
method recorderCycleThresholdNs (line 890) | public static long recorderCycleThresholdNs()
method replayerCycleThresholdNs (line 900) | public static long replayerCycleThresholdNs()
method deleteArchiveOnStart (line 911) | public static boolean deleteArchiveOnStart()
method replicationChannel (line 921) | public static String replicationChannel()
method errorBufferLength (line 932) | public static int errorBufferLength()
method authenticatorSupplier (line 944) | public static AuthenticatorSupplier authenticatorSupplier()
method authorisationServiceSupplier (line 970) | public static AuthorisationServiceSupplier authorisationServiceSuppl...
method recordChecksum (line 1005) | public static String recordChecksum()
method replayChecksum (line 1017) | public static String replayChecksum()
method controlChannelEnabled (line 1028) | public static boolean controlChannelEnabled()
method archiveId (line 1039) | public static long archiveId()
class Context (line 1056) | public static final class Context implements Cloneable
method Context (line 1158) | public Context()
method clone (line 1167) | public Context clone()
method conclude (line 1182) | @SuppressWarnings("MethodLength")
method isConcluded (line 1666) | public boolean isConcluded()
method deleteArchiveOnStart (line 1677) | public Context deleteArchiveOnStart(final boolean deleteArchiveOnStart)
method deleteArchiveOnStart (line 1688) | @Config(id = "ARCHIVE_DIR_DELETE_ON_START")
method archiveDirectoryName (line 1702) | public Context archiveDirectoryName(final String archiveDirectoryName)
method archiveDirectoryName (line 1713) | @Config(id = "ARCHIVE_DIR")
method archiveDir (line 1724) | public File archiveDir()
method archiveDir (line 1735) | public Context archiveDir(final File archiveDir)
method markFileDir (line 1750) | @Config
method markFileDir (line 1762) | public Context markFileDir(final File markFileDir)
method archiveFileStore (line 1773) | public FileStore archiveFileStore()
method archiveFileStore (line 1784) | public Context archiveFileStore(final FileStore fileStore)
method archiveDirChannel (line 1796) | public FileChannel archiveDirChannel()
method archiveDirChannel (line 1801) | Context archiveDirChannel(final FileChannel archiveDirChannel)
method archiveClientContext (line 1814) | public Context archiveClientContext(final AeronArchive.Context archi...
method archiveClientContext (line 1827) | public AeronArchive.Context archiveClientContext()
method controlChannelEnabled (line 1838) | @Config
method controlChannelEnabled (line 1851) | public Context controlChannelEnabled(final boolean controlChannelEna...
method controlChannel (line 1863) | public String controlChannel()
method controlChannel (line 1875) | public Context controlChannel(final String controlChannel)
method controlStreamId (line 1887) | public int controlStreamId()
method controlStreamId (line 1899) | public Context controlStreamId(final int controlStreamId)
method localControlChannel (line 1911) | public String localControlChannel()
method localControlChannel (line 1923) | public Context localControlChannel(final String controlChannel)
method localControlStreamId (line 1935) | public int localControlStreamId()
method controlTermBufferSparse (line 1947) | public Context controlTermBufferSparse(final boolean controlTermBuff...
method controlTermBufferSparse (line 1959) | public boolean controlTermBufferSparse()
method controlTermBufferLength (line 1971) | public Context controlTermBufferLength(final int controlTermBufferLe...
method controlTermBufferLength (line 1983) | public int controlTermBufferLength()
method controlMtuLength (line 1995) | public Context controlMtuLength(final int controlMtuLength)
method controlMtuLength (line 2007) | public int controlMtuLength()
method localControlStreamId (line 2019) | public Context localControlStreamId(final int controlStreamId)
method recordingEventsChannel (line 2031) | public String recordingEventsChannel()
method recordingEventsChannel (line 2047) | public Context recordingEventsChannel(final String recordingEventsCh...
method recordingEventsStreamId (line 2059) | public int recordingEventsStreamId()
method recordingEventsStreamId (line 2071) | public Context recordingEventsStreamId(final int recordingEventsStre...
method recordingEventsEnabled (line 2083) | @Config
method recordingEventsEnabled (line 2096) | public Context recordingEventsEnabled(final boolean recordingEventsE...
method replicationChannel (line 2108) | @Config
method replicationChannel (line 2121) | public Context replicationChannel(final String replicationChannel)
method connectTimeoutNs (line 2134) | public Context connectTimeoutNs(final long connectTimeoutNs)
method connectTimeoutNs (line 2146) | @Config
method sessionLivenessCheckIntervalNs (line 2160) | public Context sessionLivenessCheckIntervalNs(final long sessionLive...
method sessionLivenessCheckIntervalNs (line 2173) | @Config
method replayLingerTimeoutNs (line 2187) | public Context replayLingerTimeoutNs(final long replayLingerTimeoutNs)
method replayLingerTimeoutNs (line 2200) | @Config
method conductorCycleThresholdNs (line 2215) | public Context conductorCycleThresholdNs(final long thresholdNs)
method conductorCycleThresholdNs (line 2227) | @Config
method recorderCycleThresholdNs (line 2242) | public Context recorderCycleThresholdNs(final long thresholdNs)
method recorderCycleThresholdNs (line 2254) | @Config
method replayerCycleThresholdNs (line 2269) | public Context replayerCycleThresholdNs(final long thresholdNs)
method replayerCycleThresholdNs (line 2281) | @Config
method conductorDutyCycleTracker (line 2293) | public Context conductorDutyCycleTracker(final DutyCycleTracker duty...
method conductorDutyCycleTracker (line 2304) | public DutyCycleTracker conductorDutyCycleTracker()
method recorderDutyCycleTracker (line 2316) | public Context recorderDutyCycleTracker(final DutyCycleTracker dutyC...
method recorderDutyCycleTracker (line 2328) | public DutyCycleTracker recorderDutyCycleTracker()
method replayerDutyCycleTracker (line 2340) | public Context replayerDutyCycleTracker(final DutyCycleTracker dutyC...
method replayerDutyCycleTracker (line 2352) | public DutyCycleTracker replayerDutyCycleTracker()
method recordChecksum (line 2364) | public Context recordChecksum(final Checksum recordChecksum)
method recordChecksum (line 2377) | @Config
method replayChecksum (line 2390) | public Context replayChecksum(final Checksum replayChecksum)
method replayChecksum (line 2403) | @Config
method idleStrategySupplier (line 2416) | public Context idleStrategySupplier(final Supplier<IdleStrategy> idl...
method idleStrategy (line 2428) | @Config(id = "ARCHIVE_IDLE_STRATEGY")
method recorderIdleStrategySupplier (line 2440) | public Context recorderIdleStrategySupplier(final Supplier<IdleStrat...
method recorderIdleStrategy (line 2451) | @Config(id = "ARCHIVE_RECORDER_IDLE_STRATEGY")
method replayerIdleStrategySupplier (line 2463) | public Context replayerIdleStrategySupplier(final Supplier<IdleStrat...
method replayerIdleStrategy (line 2474) | @Config(id = "ARCHIVE_REPLAYER_IDLE_STRATEGY")
method epochClock (line 2486) | public Context epochClock(final EpochClock clock)
method epochClock (line 2497) | public EpochClock epochClock()
method nanoClock (line 2508) | public Context nanoClock(final NanoClock clock)
method nanoClock (line 2519) | public NanoClock nanoClock()
method segmentFileLength (line 2530) | @Config
method segmentFileLength (line 2544) | public Context segmentFileLength(final int segmentFileLength)
method fileSyncLevel (line 2562) | @Config
method fileSyncLevel (line 2581) | public Context fileSyncLevel(final int syncLevel)
method catalogFileSyncLevel (line 2599) | @Config
method catalogFileSyncLevel (line 2618) | public Context catalogFileSyncLevel(final int syncLevel)
method mediaDriverAgentInvoker (line 2629) | public AgentInvoker mediaDriverAgentInvoker()
method mediaDriverAgentInvoker (line 2640) | public Context mediaDriverAgentInvoker(final AgentInvoker mediaDrive...
method errorHandler (line 2651) | public ErrorHandler errorHandler()
method errorHandler (line 2662) | public Context errorHandler(final ErrorHandler errorHandler)
method countedErrorHandler (line 2674) | public Context countedErrorHandler(final CountedErrorHandler counted...
method countedErrorHandler (line 2685) | public CountedErrorHandler countedErrorHandler()
method threadingMode (line 2696) | @Config
method threadingMode (line 2709) | public Context threadingMode(final ArchiveThreadingMode threadingMode)
method threadFactory (line 2721) | public ThreadFactory threadFactory()
method threadFactory (line 2735) | public Context threadFactory(final ThreadFactory threadFactory)
method recorderThreadFactory (line 2746) | public ThreadFactory recorderThreadFactory()
method recorderThreadFactory (line 2758) | public Context recorderThreadFactory(final ThreadFactory threadFactory)
method replayerThreadFactory (line 2769) | public ThreadFactory replayerThreadFactory()
method replayerThreadFactory (line 2781) | public Context replayerThreadFactory(final ThreadFactory threadFactory)
method errorBufferLength (line 2794) | public Context errorBufferLength(final int errorBufferLength)
method errorBufferLength (line 2806) | @Config
method archiveId (line 2819) | public Context archiveId(final long archiveId)
method archiveId (line 2831) | @Config
method errorCounter (line 2842) | public AtomicCounter errorCounter()
method errorCounter (line 2853) | public Context errorCounter(final AtomicCounter errorCounter)
method controlSessionsCounter (line 2864) | public Counter controlSessionsCounter()
method controlSessionsCounter (line 2875) | public Context controlSessionsCounter(final Counter controlSessionsC...
method recordingSessionCounter (line 2886) | public Counter recordingSessionCounter()
method recordingSessionCounter (line 2897) | public Context recordingSessionCounter(final Counter counter)
method replaySessionCounter (line 2908) | public Counter replaySessionCounter()
method replaySessionCounter (line 2919) | public Context replaySessionCounter(final Counter counter)
method totalWriteBytesCounter (line 2930) | public Counter totalWriteBytesCounter()
method totalWriteBytesCounter (line 2941) | public Context totalWriteBytesCounter(final Counter counter)
method totalWriteTimeCounter (line 2952) | public Counter totalWriteTimeCounter()
method totalWriteTimeCounter (line 2963) | public Context totalWriteTimeCounter(final Counter counter)
method maxWriteTimeCounter (line 2974) | public Counter maxWriteTimeCounter()
method maxWriteTimeCounter (line 2985) | public Context maxWriteTimeCounter(final Counter counter)
method totalReadBytesCounter (line 2996) | public Counter totalReadBytesCounter()
method totalReadBytesCounter (line 3007) | public Context totalReadBytesCounter(final Counter counter)
method totalReadTimeCounter (line 3018) | public Counter totalReadTimeCounter()
method totalReadTimeCounter (line 3029) | public Context totalReadTimeCounter(final Counter counter)
method maxReadTimeCounter (line 3040) | public Counter maxReadTimeCounter()
method maxReadTimeCounter (line 3051) | public Context maxReadTimeCounter(final Counter counter)
method maxConcurrentRecordings (line 3063) | @Config
method maxConcurrentRecordings (line 3076) | public Context maxConcurrentRecordings(final int maxConcurrentRecord...
method maxConcurrentReplays (line 3088) | @Config
method maxConcurrentReplays (line 3101) | public Context maxConcurrentReplays(final int maxConcurrentReplays)
method fileIoMaxLength (line 3113) | @Config
method fileIoMaxLength (line 3126) | public Context fileIoMaxLength(final int fileIoMaxLength)
method lowStorageSpaceThreshold (line 3139) | public Context lowStorageSpaceThreshold(final long lowStorageSpaceTh...
method lowStorageSpaceThreshold (line 3151) | @Config
method deleteArchiveDirectory (line 3162) | @Deprecated
method deleteDirectory (line 3171) | public void deleteDirectory()
method aeronDirectoryName (line 3185) | public Context aeronDirectoryName(final String aeronDirectoryName)
method aeronDirectoryName (line 3196) | public String aeronDirectoryName()
method aeron (line 3211) | public Context aeron(final Aeron aeron)
method aeron (line 3225) | public Aeron aeron()
method ownsAeronClient (line 3236) | public Context ownsAeronClient(final boolean ownsAeronClient)
method ownsAeronClient (line 3247) | public boolean ownsAeronClient()
method catalog (line 3258) | Context catalog(final Catalog catalog)
method catalog (line 3269) | Catalog catalog()
method archiveMarkFile (line 3280) | public Context archiveMarkFile(final ArchiveMarkFile archiveMarkFile)
method archiveMarkFile (line 3291) | public ArchiveMarkFile archiveMarkFile()
method maxCatalogEntries (line 3307) | @Deprecated
method maxCatalogEntries (line 3323) | @Deprecated
method catalogCapacity (line 3337) | public Context catalogCapacity(final long catalogCapacity)
method catalogCapacity (line 3349) | @Config
method authenticatorSupplier (line 3360) | @Config
method authenticatorSupplier (line 3372) | public Context authenticatorSupplier(final AuthenticatorSupplier aut...
method authorisationServiceSupplier (line 3383) | @Config
method authorisationServiceSupplier (line 3586) | public Context authorisationServiceSupplier(final AuthorisationServi...
method secureRandomAlgorithm (line 3598) | public String secureRandomAlgorithm()
method secureRandomAlgorithm (line 3614) | public Context secureRandomAlgorithm(final String algorithm)
method secureRandom (line 3627) | public SecureRandom secureRandom()
method abortLatch (line 3647) | CountDownLatch abortLatch()
method concludeRecordChecksum (line 3652) | void concludeRecordChecksum()
method concludeReplayChecksum (line 3664) | void concludeReplayChecksum()
method dataBuffer (line 3676) | Context dataBuffer(final UnsafeBuffer dataBuffer)
method dataBuffer (line 3682) | UnsafeBuffer dataBuffer()
method replayBuffer (line 3692) | Context replayBuffer(final UnsafeBuffer replayBuffer)
method replayBuffer (line 3698) | UnsafeBuffer replayBuffer()
method recordChecksumBuffer (line 3713) | Context recordChecksumBuffer(final UnsafeBuffer recordChecksumBuffer)
method recordChecksumBuffer (line 3719) | UnsafeBuffer recordChecksumBuffer()
method close (line 3744) | public void close()
method closeDutyCycleCounters (line 3777) | private void closeDutyCycleCounters(final DutyCycleTracker dutyCycle...
method concludeArchiveId (line 3787) | private void concludeArchiveId()
method toString (line 3806) | public String toString()
method segmentFileName (line 3890) | static String segmentFileName(final long recordingId, final long segme...
method channelForDirectorySync (line 3904) | static FileChannel channelForDirectorySync(final File directory, final...
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveConductor.java
class ArchiveConductor (line 114) | abstract class ArchiveConductor
method ArchiveConductor (line 170) | ArchiveConductor(final Archive.Context ctx)
method onStart (line 228) | public void onStart()
method onUnavailableImage (line 236) | public void onUnavailableImage(final Image image)
method onUnavailableCounter (line 241) | public void onUnavailableCounter(
method newRecorder (line 251) | abstract Recorder newRecorder();
method newReplayer (line 253) | abstract Replayer newReplayer();
method preSessionsClose (line 258) | protected final void preSessionsClose()
method closeSessionWorkers (line 266) | protected abstract void closeSessionWorkers();
method postSessionsClose (line 271) | protected void postSessionsClose()
method abort (line 302) | protected void abort()
method doWork (line 333) | public int doWork()
method context (line 367) | Archive.Context context()
method controlResponseProxy (line 372) | ControlResponseProxy controlResponseProxy()
method invokeAeronInvoker (line 377) | final int invokeAeronInvoker()
method invokeDriverConductor (line 395) | final int invokeDriverConductor()
method logWarning (line 412) | void logWarning(final String message)
method newControlSession (line 417) | ControlSession newControlSession(
method archiveId (line 496) | void archiveId(final long correlationId, final ControlSession controlS...
method startRecording (line 501) | void startRecording(
method stopRecording (line 555) | void stopRecording(
method stopRecordingSubscription (line 582) | void stopRecordingSubscription(
method stopRecordingSubscription (line 596) | boolean stopRecordingSubscription(final long subscriptionId)
method newListRecordingsSession (line 608) | void newListRecordingsSession(
method newListRecordingsForUriSession (line 629) | void newListRecordingsForUriSession(
method listRecording (line 658) | void listRecording(final long correlationId, final long recordingId, f...
method updateChannel (line 678) | void updateChannel(
method findLastMatchingRecording (line 712) | void findLastMatchingRecording(
method startReplay (line 733) | @SuppressWarnings("MethodLength")
method newReplaySession (line 887) | void newReplaySession(
method startBoundedReplay (line 942) | void startBoundedReplay(
method stopReplay (line 983) | void stopReplay(final long correlationId, final long replaySessionId, ...
method stopAllReplays (line 994) | void stopAllReplays(final long correlationId, final long recordingId, ...
method extendRecording (line 1008) | Object extendRecording(
method getStartPosition (line 1099) | void getStartPosition(final long correlationId, final long recordingId...
method getRecordingPosition (line 1107) | void getRecordingPosition(final long correlationId, final long recordi...
method getStopPosition (line 1118) | void getStopPosition(final long correlationId, final long recordingId,...
method getMaxRecordedPosition (line 1126) | void getMaxRecordedPosition(
method truncateRecording (line 1139) | void truncateRecording(
method purgeRecording (line 1190) | void purgeRecording(final long correlationId, final long recordingId, ...
method listRecordingSubscriptions (line 1205) | void listRecordingSubscriptions(
method stopRecordingByIdentity (line 1240) | void stopRecordingByIdentity(final long correlationId, final long reco...
method closeRecordingSession (line 1268) | void closeRecordingSession(final RecordingSession session)
method closeReplaySession (line 1307) | void closeReplaySession(final ReplaySession session)
method replicate (line 1326) | void replicate(
method stopReplication (line 1421) | void stopReplication(final long correlationId, final long replicationI...
method detachSegments (line 1436) | void detachSegments(
method deleteDetachedSegments (line 1450) | void deleteDetachedSegments(final long correlationId, final long recor...
method purgeSegments (line 1476) | void purgeSegments(
method attachSegments (line 1497) | void attachSegments(final long correlationId, final long recordingId, ...
method migrateSegments (line 1560) | void migrateSegments(
method removeReplicationSession (line 1646) | void removeReplicationSession(final ReplicationSession replicationSess...
method removeDeleteSegmentsSession (line 1651) | void removeDeleteSegmentsSession(final DeleteSegmentsSession deleteSeg...
method findDetachedSegments (line 1656) | private void findDetachedSegments(
method addDeleteSegmentsSession (line 1681) | private int addDeleteSegmentsSession(
method abortRecordingSessionAndCloseSubscription (line 1706) | private void abortRecordingSessionAndCloseSubscription(final Subscript...
method findTermOffsetForStart (line 1722) | private int findTermOffsetForStart(
method runTasks (line 1803) | private int runTasks(final ArrayDeque<Runnable> taskQueue)
method strippedChannelBuilder (line 1817) | static ChannelUriStringBuilder strippedChannelBuilder(final ChannelUri...
method makeKey (line 1846) | private static String makeKey(final int streamId, final ChannelUri cha...
method hasRecording (line 1887) | private boolean hasRecording(final long recordingId, final long correl...
method isDeleteAllowed (line 1899) | private boolean isDeleteAllowed(
method listSegmentFiles (line 1911) | private void listSegmentFiles(final long recordingId, final Consumer<S...
method startRecordingSession (line 1928) | private void startRecordingSession(
method extendRecordingSession (line 1996) | private void extendRecordingSession(
method removeRecordingSubscription (line 2076) | private Subscription removeRecordingSubscription(final long subscripti...
method validateImageForExtendRecording (line 2092) | private void validateImageForExtendRecording(
method isValidTruncate (line 2133) | private boolean isValidTruncate(
method isValidPurge (line 2168) | private boolean isValidPurge(final long correlationId, final ControlSe...
method isInvalidReplayPosition (line 2193) | private boolean isInvalidReplayPosition(
method isValidDetach (line 2229) | private boolean isValidDetach(
method isJoinPositionSegmentUnaligned (line 2293) | private boolean isJoinPositionSegmentUnaligned(
method isActiveRecording (line 2323) | private boolean isActiveRecording(
method hasMatchingStreamParameters (line 2338) | private boolean hasMatchingStreamParameters(
method moveAllSegments (line 2396) | private long moveAllSegments(
method eraseRemainingSegment (line 2474) | private boolean eraseRemainingSegment(
method closeAndRemoveRecordingSubscription (line 2519) | private void closeAndRemoveRecordingSubscription(final Subscription su...
method isLowStorageSpace (line 2536) | private String isLowStorageSpace(final long correlationId, final Contr...
method deleteSegments (line 2558) | private void deleteSegments(
method generateReplayToken (line 2577) | public long generateReplayToken(final ControlSession session, final lo...
method getReplaySession (line 2592) | public ControlSession getReplaySession(final long replayToken, final l...
method removeReplayTokensForSession (line 2607) | void removeReplayTokensForSession(final long sessionId)
method checkReplayTokens (line 2621) | private int checkReplayTokens(final long nowNs)
class Recorder (line 2637) | abstract static class Recorder extends SessionWorker<RecordingSession>
method Recorder (line 2646) | Recorder(final CountedErrorHandler errorHandler, final Archive.Conte...
method bytesWritten (line 2654) | final void bytesWritten(final long bytes)
method writeTimeNs (line 2659) | final void writeTimeNs(final long nanos)
method doWork (line 2669) | public int doWork()
class Replayer (line 2683) | abstract static class Replayer extends SessionWorker<ReplaySession>
method Replayer (line 2692) | Replayer(final CountedErrorHandler errorHandler, final Archive.Conte...
method bytesRead (line 2700) | final void bytesRead(final long bytes)
method readTimeNs (line 2705) | final void readTimeNs(final long nanos)
method doWork (line 2715) | public int doWork()
class SessionForReplay (line 2729) | private static final class SessionForReplay
method SessionForReplay (line 2735) | private SessionForReplay(final long recordingId, final ControlSessio...
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveCounters.java
class ArchiveCounters (line 33) | public final class ArchiveCounters
method ArchiveCounters (line 37) | private ArchiveCounters()
method allocate (line 52) | public static Counter allocate(
method allocateErrorCounter (line 70) | static Counter allocateErrorCounter(
method appendArchiveIdLabel (line 102) | public static int appendArchiveIdLabel(
method lengthOfArchiveIdLabel (line 117) | public static int lengthOfArchiveIdLabel(final long archiveId)
method find (line 139) | public static int find(final CountersReader counters, final int typeId...
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMarkFile.java
class ArchiveMarkFile (line 50) | public class ArchiveMarkFile implements AutoCloseable
method ArchiveMarkFile (line 98) | ArchiveMarkFile(final Archive.Context ctx)
method ArchiveMarkFile (line 110) | ArchiveMarkFile(
method ArchiveMarkFile (line 212) | public ArchiveMarkFile(
method ArchiveMarkFile (line 238) | public ArchiveMarkFile(
method ArchiveMarkFile (line 249) | ArchiveMarkFile(final MarkFile markFile)
method close (line 279) | public void close()
method isClosed (line 295) | public boolean isClosed()
method archiveId (line 306) | public long archiveId()
method signalReady (line 316) | @Deprecated(forRemoval = true)
method signalReady (line 330) | public void signalReady(final long activityTimestamp)
method signalTerminated (line 343) | public void signalTerminated()
method updateActivityTimestamp (line 353) | public void updateActivityTimestamp(final long nowMs)
method activityTimestampVolatile (line 366) | public long activityTimestampVolatile()
method encoder (line 376) | public MarkFileHeaderEncoder encoder()
method decoder (line 386) | public MarkFileHeaderDecoder decoder()
method errorBuffer (line 396) | public AtomicBuffer errorBuffer()
method saveExistingErrors (line 408) | public static void saveExistingErrors(final File markFile, final Atomi...
method isArchiveMarkFile (line 420) | public static boolean isArchiveMarkFile(final Path path, final BasicFi...
method parentDirectory (line 431) | public File parentDirectory()
method force (line 442) | public void force()
method alignedTotalFileLength (line 450) | private static int alignedTotalFileLength(final Archive.Context ctx)
method aeronDirectory (line 476) | String aeronDirectory()
method buffer (line 485) | UnsafeBuffer buffer()
method encode (line 490) | private void encode(final Archive.Context ctx)
method validateVersion (line 506) | private static void validateVersion(final File markFile, final int ver...
method headerOffset (line 516) | private static int headerOffset(final File file)
method headerOffset (line 531) | private static int headerOffset(final UnsafeBuffer headerBuffer)
method openExistingMarkFile (line 539) | private static MarkFile openExistingMarkFile(
method toString (line 562) | public String toString()
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMigrationPlanner.java
class ArchiveMigrationPlanner (line 31) | final class ArchiveMigrationPlanner
method ArchiveMigrationPlanner (line 43) | private ArchiveMigrationPlanner()
method createPlan (line 47) | static List<ArchiveMigrationStep> createPlan(final int version)
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMigrationStep.java
type ArchiveMigrationStep (line 21) | interface ArchiveMigrationStep
method minimumVersion (line 23) | int minimumVersion();
method migrate (line 25) | void migrate(PrintStream stream, ArchiveMarkFile markFile, Catalog cat...
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_0_1.java
class ArchiveMigration_0_1 (line 39) | class ArchiveMigration_0_1 implements ArchiveMigrationStep
method minimumVersion (line 46) | public int minimumVersion()
method migrate (line 54) | @SuppressWarnings("try")
method migrateRecording (line 98) | private void migrateRecording(
method toString (line 173) | public String toString()
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_1_2.java
class ArchiveMigration_1_2 (line 39) | class ArchiveMigration_1_2 implements ArchiveMigrationStep
method minimumVersion (line 46) | public int minimumVersion()
method migrate (line 54) | @SuppressWarnings("try")
method migrateRecording (line 98) | private void migrateRecording(
method toString (line 180) | public String toString()
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_2_3.java
class ArchiveMigration_2_3 (line 39) | class ArchiveMigration_2_3 implements ArchiveMigrationStep
method minimumVersion (line 46) | public int minimumVersion()
method migrate (line 54) | @SuppressWarnings("try")
method toString (line 103) | public String toString()
method migrateCatalogFile (line 108) | private int migrateCatalogFile(final Catalog catalog, final int versio...
method writeCatalogHeader (line 166) | private int writeCatalogHeader(
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveThreadingMode.java
type ArchiveThreadingMode (line 21) | public enum ArchiveThreadingMode
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchiveTool.java
class ArchiveTool (line 83) | public final class ArchiveTool
type ActionConfirmation (line 90) | @FunctionalInterface
method confirm (line 99) | boolean confirm(T context);
method ArchiveTool (line 102) | private ArchiveTool()
method main (line 111) | @SuppressWarnings("MethodLength")
method maxEntries (line 359) | @Deprecated
method maxEntries (line 377) | @Deprecated
method capacity (line 390) | public static long capacity(final File archiveDir)
method capacity (line 406) | public static long capacity(final File archiveDir, final long newCapac...
method describeAll (line 421) | public static void describeAll(final PrintStream out, final File archi...
method describe (line 439) | public static void describe(final PrintStream out, final File archiveDir)
method describeRecording (line 463) | public static void describeRecording(final PrintStream out, final File...
method entryCount (line 490) | public static int entryCount(final File archiveDir)
method pid (line 504) | public static long pid(final File archiveDir)
method printErrors (line 518) | public static void printErrors(final PrintStream out, final File archi...
method dump (line 535) | public static void dump(
type VerifyOption (line 595) | public enum VerifyOption
method VerifyOption (line 610) | VerifyOption(final String flag)
method byFlag (line 624) | public static VerifyOption byFlag(final String flag)
method verify (line 645) | public static boolean verify(
method verifyRecording (line 673) | public static boolean verifyRecording(
method checksum (line 699) | public static void checksum(
method checksumRecording (line 715) | public static void checksumRecording(
method markRecordingValid (line 734) | public static void markRecordingValid(final PrintStream out, final Fil...
method markRecordingInvalid (line 747) | public static void markRecordingInvalid(final PrintStream out, final F...
method migrate (line 759) | public static void migrate(final PrintStream out, final File archiveDir)
method compact (line 799) | public static void compact(final PrintStream out, final File archiveDir)
method deleteOrphanedSegments (line 811) | public static void deleteOrphanedSegments(final PrintStream out, final...
method deleteOrphanedSegments (line 825) | public static void deleteOrphanedSegments(
method deleteOrphanedSegments (line 833) | static void deleteOrphanedSegments(
method compact (line 866) | static void compact(final PrintStream out, final File archiveDir, fina...
method verify (line 947) | static boolean verify(
method verifyRecording (line 965) | static boolean verifyRecording(
method openCatalogReadOnly (line 998) | static Catalog openCatalogReadOnly(final File archiveDir, final EpochC...
method openCatalogReadWrite (line 1003) | static Catalog openCatalogReadWrite(
method changeRecordingState (line 1013) | private static void changeRecordingState(
method validateChecksumClass (line 1049) | private static String validateChecksumClass(final String checksumClass...
method createChecksum (line 1060) | private static Checksum createChecksum(final Set<VerifyOption> options...
method createVerifyEntryProcessor (line 1076) | private static CatalogEntryProcessor createVerifyEntryProcessor(
method truncateOnPageStraddle (line 1111) | private static boolean truncateOnPageStraddle(final File maxSegmentFile)
method continueOnFrameLimit (line 1120) | private static boolean continueOnFrameLimit(final Long frameLimit)
method readContinueAnswer (line 1125) | private static boolean readContinueAnswer(final String msg)
method openMarkFile (line 1134) | private static ArchiveMarkFile openMarkFile(final File archiveDir, fin...
method openMarkFileReadWrite (line 1140) | private static ArchiveMarkFile openMarkFileReadWrite(final File archiv...
method resolveMarkFileDir (line 1151) | private static File resolveMarkFileDir(final File archiveDir)
method dump (line 1176) | private static void dump(
method printMarkInformation (line 1237) | private static void printMarkInformation(final ArchiveMarkFile markFil...
method verifyRecording (line 1245) | @SuppressWarnings("MethodLength")
method isPositionInvariantViolated (line 1397) | private static boolean isPositionInvariantViolated(
method isNotFrameAligned (line 1428) | private static boolean isNotFrameAligned(final long position)
method isInvalidSegmentFile (line 1433) | private static boolean isInvalidSegmentFile(
method printErrors (line 1526) | private static void printErrors(final PrintStream out, final ArchiveMa...
method checksumRecording (line 1545) | static void checksumRecording(
method checksum (line 1574) | private static void checksum(
method checksumSegmentFile (line 1603) | private static void checksumSegmentFile(
method checksum (line 1674) | static void checksum(
method deleteOrphanedSegmentFiles (line 1707) | private static void deleteOrphanedSegmentFiles(
method printHelp (line 1753) | private static void printHelp()
FILE: aeron-archive/src/main/java/io/aeron/archive/ArchivingMediaDriver.java
class ArchivingMediaDriver (line 30) | public class ArchivingMediaDriver implements AutoCloseable
method ArchivingMediaDriver (line 35) | ArchivingMediaDriver(final MediaDriver driver, final Archive archive)
method main (line 46) | @SuppressWarnings("try")
method launch (line 67) | public static ArchivingMediaDriver launch()
method launch (line 79) | public static ArchivingMediaDriver launch(final MediaDriver.Context dr...
method archive (line 113) | public Archive archive()
method mediaDriver (line 123) | public MediaDriver mediaDriver()
method close (line 131) | public void close()
FILE: aeron-archive/src/main/java/io/aeron/archive/Catalog.java
class Catalog (line 96) | final class Catalog implements AutoCloseable
type CatalogEntryProcessor (line 98) | @FunctionalInterface
method accept (line 101) | void accept(
method Catalog (line 150) | Catalog(
method Catalog (line 239) | Catalog(final File archiveDir, final EpochClock epochClock)
method Catalog (line 244) | Catalog(
method close (line 324) | public void close()
method isClosed (line 333) | boolean isClosed()
method capacity (line 338) | long capacity()
method alignment (line 343) | int alignment()
method entryCount (line 348) | int entryCount()
method nextRecordingId (line 353) | long nextRecordingId()
method index (line 358) | CatalogIndex index()
method version (line 363) | int version()
method updateVersion (line 368) | void updateVersion(final int version)
method addNewRecording (line 373) | long addNewRecording(
method addNewRecording (line 434) | long addNewRecording(
method wrapDescriptor (line 463) | boolean wrapDescriptor(final long recordingId, final UnsafeBuffer buffer)
method wrapDescriptorAtOffset (line 479) | int wrapDescriptorAtOffset(final UnsafeBuffer buffer, final int record...
method hasRecording (line 494) | boolean hasRecording(final long recordingId)
method forEach (line 499) | int forEach(final CatalogEntryProcessor consumer)
method forEntry (line 520) | boolean forEntry(final long recordingId, final CatalogEntryProcessor c...
method findLast (line 543) | long findLast(final long minRecordingId, final int sessionId, final in...
method originalChannelContains (line 584) | static boolean originalChannelContains(
method recordingStopped (line 624) | void recordingStopped(final long recordingId, final long position, fin...
method stopPosition (line 636) | void stopPosition(final long recordingId, final long position)
method extendRecording (line 647) | void extendRecording(
method replaceRecording (line 663) | void replaceRecording(
method startPosition (line 747) | long startPosition(final long recordingId)
method startPosition (line 757) | void startPosition(final long recordingId, final long position)
method stopPosition (line 768) | long stopPosition(final long recordingId)
method changeState (line 778) | boolean changeState(final long recordingId, final RecordingState newSt...
method recordingSummary (line 799) | RecordingSummary recordingSummary(final long recordingId, final Record...
method descriptorLength (line 816) | static int descriptorLength(final UnsafeBuffer descriptorBuffer)
method isValidDescriptor (line 821) | static boolean isValidDescriptor(final UnsafeBuffer descriptorBuffer)
method recordingId (line 827) | static long recordingId(final UnsafeBuffer descriptorBuffer)
method recordingDescriptorOffset (line 832) | int recordingDescriptorOffset(final long recordingId)
method growCatalog (line 842) | void growCatalog(final long maxCatalogCapacity, final int frameLength)
method updateChecksum (line 892) | void updateChecksum(final int recordingDescriptorOffset)
method computeRecordingDescriptorChecksum (line 908) | int computeRecordingDescriptorChecksum(final int recordingDescriptorOf...
method catalogResized (line 921) | void catalogResized(final long oldCapacity, final long newCapacity)
method validateCapacity (line 926) | private static void validateCapacity(final long catalogCapacity)
method initBuffers (line 935) | private void initBuffers(final MappedByteBuffer catalogMappedByteBuffer)
method buildIndex (line 945) | private void buildIndex(final boolean writable)
method invokeEntryProcessor (line 980) | private void invokeEntryProcessor(final int recordingDescriptorOffset,...
method recordingDescriptorFrameLength (line 1003) | private int recordingDescriptorFrameLength(
method shiftDataToTheRight (line 1015) | private void shiftDataToTheRight(
method fixupIndexForShifterRecordings (line 1025) | private static void fixupIndexForShifterRecordings(
method refreshCatalog (line 1051) | @SuppressWarnings("checkstyle:indentation")
method refreshAndFixDescriptor (line 1065) | private void refreshAndFixDescriptor(
method forceWrites (line 1099) | private void forceWrites(final FileChannel channel)
method fsync (line 1104) | private void fsync(final FileChannel channel, final boolean forceWrite...
method listSegmentFiles (line 1119) | static ArrayList<String> listSegmentFiles(final File archiveDir, final...
method indexSegmentFiles (line 1140) | static Long2ObjectHashMap<List<String>> indexSegmentFiles(final File a...
method findSegmentFileWithHighestPosition (line 1167) | static String findSegmentFileWithHighestPosition(final List<String> se...
method parseSegmentFilePosition (line 1190) | static long parseSegmentFilePosition(final String filename)
method parseSegmentFileRecordingId (line 1208) | static long parseSegmentFileRecordingId(final String filename)
method computeStopPosition (line 1219) | static long computeStopPosition(
method fragmentStraddlesPageBoundary (line 1246) | static boolean fragmentStraddlesPageBoundary(final int fragmentOffset,...
method unmapAndCloseChannel (line 1251) | private void unmapAndCloseChannel()
method recoverStopOffset (line 1260) | private static int recoverStopOffset(
method readNextChunk (line 1326) | private static int readNextChunk(
method isValidFragment (line 1345) | private static boolean isValidFragment(
method hasValidChecksum (line 1352) | private static boolean hasValidChecksum(
method hasDataInAllPagesAfterStraddle (line 1364) | private static boolean hasDataInAllPagesAfterStraddle(
method isEmptyPage (line 1381) | private static boolean isEmptyPage(final UnsafeBuffer buffer, final in...
method toString (line 1394) | public String toString()
class InvalidRecordingNameException (line 1413) | static class InvalidRecordingNameException extends ArchiveException
method InvalidRecordingNameException (line 1417) | InvalidRecordingNameException(final String message)
FILE: aeron-archive/src/main/java/io/aeron/archive/CatalogIndex.java
class CatalogIndex (line 23) | final class CatalogIndex
method CatalogIndex (line 32) | CatalogIndex()
method add (line 46) | void add(final long recordingId, final long recordingDescriptorOffset)
method remove (line 78) | long remove(final long recordingId)
method recordingOffset (line 113) | long recordingOffset(final long recordingId)
method size (line 133) | int size()
method lastPosition (line 143) | int lastPosition()
method index (line 153) | long[] index()
method find (line 158) | static int find(final long[] index, final long recordingId, final int ...
method expand (line 208) | private static long[] expand(final long[] index)
method ensurePositive (line 217) | private static void ensurePositive(final long value, final String name)
FILE: aeron-archive/src/main/java/io/aeron/archive/CatalogTool.java
class CatalogTool (line 22) | public final class CatalogTool
method CatalogTool (line 24) | private CatalogTool()
method main (line 33) | public static void main(final String[] args)
FILE: aeron-archive/src/main/java/io/aeron/archive/CatalogView.java
class CatalogView (line 31) | public final class CatalogView
method CatalogView (line 33) | private CatalogView()
method listRecordings (line 44) | public static int listRecordings(final File archiveDir, final Recordin...
method listRecording (line 62) | public static boolean listRecording(
class RecordingDescriptorConsumerAdapter (line 71) | static class RecordingDescriptorConsumerAdapter implements Catalog.Cat...
method RecordingDescriptorConsumerAdapter (line 75) | RecordingDescriptorConsumerAdapter(final RecordingDescriptorConsumer...
method accept (line 80) | public void accept(
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlRequestDecoders.java
class ControlRequestDecoders (line 20) | class ControlRequestDecoders
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlResponseProxy.java
class ControlResponseProxy (line 33) | class ControlResponseProxy
method sendDescriptor (line 53) | boolean sendDescriptor(
method sendSubscriptionDescriptor (line 90) | boolean sendSubscriptionDescriptor(
method sendResponse (line 109) | boolean sendResponse(
method sendChallenge (line 145) | boolean sendChallenge(
method sendSignal (line 160) | boolean sendSignal(
method sendPing (line 200) | public boolean sendPing(final long controlSessionId, final Publication...
method send (line 223) | private boolean send(final ControlSession session, final DirectBuffer ...
method checkResult (line 241) | private static void checkResult(final ControlSession session, final lo...
method logSendResponse (line 263) | private void logSendResponse(final DirectBuffer buffer, final int offs...
method logSendSignal (line 267) | private void logSendSignal(final DirectBuffer buffer, final int offset...
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlSession.java
class ControlSession (line 46) | final class ControlSession implements Session
type State (line 57) | @SuppressWarnings("JavadocVariable")
method ControlSession (line 90) | ControlSession(
method sessionId (line 132) | public long sessionId()
method abort (line 140) | public void abort(final String reason)
method close (line 156) | public void close()
method isDone (line 194) | public boolean isDone()
method doWork (line 202) | public int doWork()
method encodedPrincipal (line 255) | byte[] encodedPrincipal()
method correlationId (line 260) | long correlationId()
method state (line 265) | State state()
method archiveConductor (line 270) | ArchiveConductor archiveConductor()
method controlPublication (line 275) | ExclusivePublication controlPublication()
method hasActiveListing (line 280) | boolean hasActiveListing()
method activeListing (line 285) | void activeListing(final Session activeListing)
method onChallengeResponse (line 290) | void onChallengeResponse(final long correlationId, final byte[] encode...
method onKeepAlive (line 299) | void onKeepAlive(@SuppressWarnings("unused") final long correlationId)
method onStopRecording (line 304) | void onStopRecording(final long correlationId, final int streamId, fin...
method onStopRecordingSubscription (line 313) | void onStopRecordingSubscription(final long correlationId, final long ...
method onStartRecording (line 322) | void onStartRecording(
method onListRecordingsForUri (line 336) | void onListRecordingsForUri(
method onListRecordings (line 356) | void onListRecordings(final long correlationId, final long fromRecordi...
method onListRecording (line 365) | void onListRecording(final long correlationId, final long recordingId)
method onFindLastMatchingRecording (line 374) | void onFindLastMatchingRecording(
method onStartReplay (line 394) | void onStartReplay(
method onStartBoundedReplay (line 419) | void onStartBoundedReplay(
method onStopReplay (line 445) | void onStopReplay(final long correlationId, final long replaySessionId)
method onStopAllReplays (line 454) | void onStopAllReplays(final long correlationId, final long recordingId)
method onExtendRecording (line 463) | void onExtendRecording(
method onGetRecordingPosition (line 478) | void onGetRecordingPosition(final long correlationId, final long recor...
method onTruncateRecording (line 487) | void onTruncateRecording(final long correlationId, final long recordin...
method onPurgeRecording (line 496) | void onPurgeRecording(final long correlationId, final long recordingId)
method onGetStopPosition (line 505) | void onGetStopPosition(final long correlationId, final long recordingId)
method onGetMaxRecordedPosition (line 514) | void onGetMaxRecordedPosition(final long correlationId, final long rec...
method onArchiveId (line 523) | void onArchiveId(final long correlationId)
method onListRecordingSubscriptions (line 532) | void onListRecordingSubscriptions(
method onStopRecordingByIdentity (line 554) | void onStopRecordingByIdentity(final long correlationId, final long re...
method onReplicate (line 563) | void onReplicate(
method onStopReplication (line 601) | void onStopReplication(final long correlationId, final long replicatio...
method onGetStartPosition (line 610) | void onGetStartPosition(final long correlationId, final long recordingId)
method onDetachSegments (line 619) | void onDetachSegments(final long correlationId, final long recordingId...
method onDeleteDetachedSegments (line 628) | void onDeleteDetachedSegments(final long correlationId, final long rec...
method onPurgeSegments (line 637) | void onPurgeSegments(final long correlationId, final long recordingId,...
method onAttachSegments (line 646) | void onAttachSegments(final long correlationId, final long recordingId)
method onMigrateSegments (line 655) | void onMigrateSegments(final long correlationId, final long srcRecordi...
method sendOkResponse (line 664) | void sendOkResponse(final long correlationId)
method sendOkResponse (line 669) | void sendOkResponse(final long correlationId, final long relevantId)
method sendErrorResponse (line 674) | void sendErrorResponse(final long correlationId, final String errorMes...
method sendErrorResponse (line 679) | void sendErrorResponse(
method sendRecordingUnknown (line 685) | void sendRecordingUnknown(final long correlationId, final long recordi...
method sendSubscriptionUnknown (line 690) | void sendSubscriptionUnknown(final long correlationId)
method sendResponse (line 695) | void sendResponse(
method asyncSendOkResponse (line 715) | void asyncSendOkResponse(final long correlationId, final long replaySe...
method sendDescriptor (line 729) | boolean sendDescriptor(final long correlationId, final UnsafeBuffer de...
method sendSubscriptionDescriptor (line 745) | boolean sendSubscriptionDescriptor(final long correlationId, final Sub...
method sendSignal (line 761) | void sendSignal(
method maxPayloadLength (line 794) | int maxPayloadLength()
method challenged (line 799) | void challenged()
method authenticate (line 804) | void authenticate(final byte[] encodedPrincipal)
method reject (line 811) | void reject()
method assertCalledOnConductorThread (line 816) | private void assertCalledOnConductorThread()
method queueResponse (line 825) | private void queueResponse(
method init (line 837) | private int init(final long nowMs)
method waitForConnection (line 878) | private int waitForConnection(final long nowMs)
method sendConnectResponse (line 891) | private int sendConnectResponse(final long nowMs)
method waitForChallengeResponse (line 919) | private int waitForChallengeResponse(final long nowMs)
method waitForRequest (line 925) | private int waitForRequest(final long nowMs)
method performLivenessCheck (line 948) | private int performLivenessCheck(final long nowMs)
method sendResponses (line 966) | private int sendResponses(final long nowMs)
method sendReject (line 1006) | private int sendReject(final long nowMs)
method hasNoActivity (line 1022) | private boolean hasNoActivity(final long nowMs)
method updateActivityDeadline (line 1027) | private void updateActivityDeadline(final long nowMs)
method attemptToActivate (line 1035) | private void attemptToActivate()
method state (line 1043) | void state(final State state, final String reason)
method logStateChange (line 1049) | private void logStateChange(
method abortReason (line 1055) | String abortReason()
method toString (line 1060) | public String toString()
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlSessionAdapter.java
class ControlSessionAdapter (line 32) | class ControlSessionAdapter implements FragmentHandler
method ControlSessionAdapter (line 48) | ControlSessionAdapter(
method poll (line 62) | public int poll()
method onFragment (line 79) | @SuppressWarnings("MethodLength")
method abortControlSessionByImage (line 1078) | void abortControlSessionByImage(final Image image)
method removeControlSession (line 1096) | void removeControlSession(final long controlSessionId, final boolean s...
method setupSessionAndChannelForReplay (line 1111) | private ControlSession setupSessionAndChannelForReplay(
method getControlSession (line 1138) | private ControlSession getControlSession(
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlSessionCounter.java
class ControlSessionCounter (line 37) | public final class ControlSessionCounter
method ControlSessionCounter (line 59) | private ControlSessionCounter()
method allocate (line 63) | static long allocate(
method findByControlSessionId (line 91) | public static int findByControlSessionId(
FILE: aeron-archive/src/main/java/io/aeron/archive/ControlSessionProxy.java
class ControlSessionProxy (line 22) | class ControlSessionProxy implements SessionProxy
method ControlSessionProxy (line 27) | ControlSessionProxy(final ControlResponseProxy controlResponseProxy)
method controlSession (line 32) | ControlSessionProxy controlSession(final ControlSession controlSession)
method sessionId (line 41) | public long sessionId()
method challenge (line 49) | public boolean challenge(final byte[] encodedChallenge)
method authenticate (line 67) | public boolean authenticate(final byte[] encodedPrincipal)
method reject (line 87) | public void reject()
FILE: aeron-archive/src/main/java/io/aeron/archive/CreateReplayPublicationSession.java
class CreateReplayPublicationSession (line 22) | class CreateReplayPublicationSession implements Session
method CreateReplayPublicationSession (line 41) | CreateReplayPublicationSession(
method close (line 78) | public void close()
method abort (line 89) | public void abort(final String reason)
method isDone (line 97) | public boolean isDone()
method sessionId (line 105) | public long sessionId()
method doWork (line 113) | public int doWork()
FILE: aeron-archive/src/main/java/io/aeron/archive/DedicatedModeArchiveConductor.java
class DedicatedModeArchiveConductor (line 25) | final class DedicatedModeArchiveConductor extends ArchiveConductor
method DedicatedModeArchiveConductor (line 33) | DedicatedModeArchiveConductor(final Archive.Context ctx)
method onStart (line 42) | public void onStart()
method doWork (line 56) | public int doWork()
method closeSessionWorkers (line 65) | protected void closeSessionWorkers()
method newRecorder (line 80) | Recorder newRecorder()
method newReplayer (line 91) | Replayer newReplayer()
method processCloseQueue (line 102) | private int processCloseQueue()
class DedicatedModeRecorder (line 125) | static class DedicatedModeRecorder extends Recorder
method DedicatedModeRecorder (line 135) | DedicatedModeRecorder(
method abort (line 156) | protected void abort()
method onStart (line 164) | public void onStart()
method doWork (line 174) | public int doWork()
method preSessionsClose (line 189) | protected void preSessionsClose()
method addSession (line 197) | protected void addSession(final RecordingSession session)
method closeSession (line 205) | protected void closeSession(final RecordingSession session)
method postSessionsClose (line 225) | protected void postSessionsClose()
method drainSessionsQueue (line 233) | private int drainSessionsQueue()
method send (line 247) | private void send(final RecordingSession session)
class DedicatedModeReplayer (line 265) | static class DedicatedModeReplayer extends Replayer
method DedicatedModeReplayer (line 275) | DedicatedModeReplayer(
method abort (line 296) | protected void abort()
method addSession (line 304) | protected void addSession(final ReplaySession session)
method onStart (line 312) | public void onStart()
method doWork (line 321) | public int doWork()
method preSessionsClose (line 336) | protected void preSessionsClose()
method closeSession (line 344) | protected void closeSession(final ReplaySession session)
method postSessionsClose (line 364) | protected void postSessionsClose()
method drainSessionQueue (line 372) | private int drainSessionQueue()
method send (line 386) | private void send(final ReplaySession session)
FILE: aeron-archive/src/main/java/io/aeron/archive/DeleteSegmentsSession.java
class DeleteSegmentsSession (line 31) | class DeleteSegmentsSession implements Session
method DeleteSegmentsSession (line 40) | DeleteSegmentsSession(
method maxDeletePosition (line 65) | long maxDeletePosition()
method close (line 73) | public void close()
method abort (line 82) | public void abort(final String reason)
method isDone (line 89) | public boolean isDone()
method sessionId (line 97) | public long sessionId()
method doWork (line 105) | public int doWork()
method onDeleteError (line 133) | private void onDeleteError(final File file)
FILE: aeron-archive/src/main/java/io/aeron/archive/ListRecordingByIdSession.java
class ListRecordingByIdSession (line 20) | class ListRecordingByIdSession implements Session
method ListRecordingByIdSession (line 29) | ListRecordingByIdSession(
method abort (line 46) | public void abort(final String reason)
method isDone (line 54) | public boolean isDone()
method doWork (line 62) | public int doWork()
method sessionId (line 88) | public long sessionId()
method close (line 96) | public void close()
FILE: aeron-archive/src/main/java/io/aeron/archive/ListRecordingSubscriptionsSession.java
class ListRecordingSubscriptionsSession (line 22) | class ListRecordingSubscriptionsSession implements Session
method ListRecordingSubscriptionsSession (line 35) | ListRecordingSubscriptionsSession(
method close (line 58) | public void close()
method abort (line 66) | public void abort(final String reason)
method isDone (line 74) | public boolean isDone()
method sessionId (line 82) | public long sessionId()
method doWork (line 90) | public int doWork()
FILE: aeron-archive/src/main/java/io/aeron/archive/ListRecordingsForUriSession.java
class ListRecordingsForUriSession (line 22) | class ListRecordingsForUriSession extends AbstractListRecordingsSession
method ListRecordingsForUriSession (line 28) | ListRecordingsForUriSession(
method acceptDescriptor (line 52) | boolean acceptDescriptor(final UnsafeBuffer descriptorBuffer)
FILE: aeron-archive/src/main/java/io/aeron/archive/ListRecordingsSession.java
class ListRecordingsSession (line 20) | class ListRecordingsSession extends AbstractListRecordingsSession
method ListRecordingsSession (line 22) | ListRecordingsSession(
method acceptDescriptor (line 39) | boolean acceptDescriptor(final UnsafeBuffer descriptorBuffer)
FILE: aeron-archive/src/main/java/io/aeron/archive/MigrationUtils.java
class MigrationUtils (line 26) | final class MigrationUtils
method MigrationUtils (line 31) | private MigrationUtils()
method createMigrationTimestampFile (line 35) | static FileChannel createMigrationTimestampFile(
method migrationTimestampFileName (line 57) | static String migrationTimestampFileName(final int fromVersion, final ...
method fullVersionString (line 62) | static String fullVersionString(final int version)
FILE: aeron-archive/src/main/java/io/aeron/archive/RecordingEventsProxy.java
class RecordingEventsProxy (line 28) | class RecordingEventsProxy implements AutoCloseable
method RecordingEventsProxy (line 40) | RecordingEventsProxy(final Publication publication)
method close (line 48) | public void close()
method started (line 53) | void started(
method progress (line 85) | boolean progress(final long recordingId, final long startPosition, fin...
method stopped (line 109) | void stopped(final long recordingId, final long startPosition, final l...
method checkResult (line 138) | private static void checkResult(final long position, final Publication...
FILE: aeron-archive/src/main/java/io/aeron/archive/RecordingReader.java
class RecordingReader (line 41) | class RecordingReader implements AutoCloseable
method RecordingReader (line 60) | RecordingReader(
method close (line 117) | public void close()
method replayPosition (line 122) | long replayPosition()
method isDone (line 127) | boolean isDone()
method poll (line 132) | int poll(final SimpleFragmentHandler fragmentHandler, final int fragme...
method nextTerm (line 178) | private void nextTerm()
method closeRecordingSegment (line 194) | private void closeRecordingSegment()
method openRecordingSegment (line 201) | private void openRecordingSegment()
FILE: aeron-archive/src/main/java/io/aeron/archive/RecordingSession.java
class RecordingSession (line 29) | class RecordingSession implements Session
type State (line 31) | @SuppressWarnings("JavadocVariable")
method RecordingSession (line 55) | RecordingSession(
method sessionId (line 87) | public long sessionId()
method isDone (line 95) | public boolean isDone()
method abort (line 103) | public void abort(final String reason)
method close (line 112) | public void close()
method doWork (line 121) | public int doWork()
method abortClose (line 155) | void abortClose()
method correlationId (line 160) | long correlationId()
method recordingPosition (line 165) | Counter recordingPosition()
method recordedPosition (line 170) | long recordedPosition()
method subscription (line 180) | Subscription subscription()
method controlSession (line 185) | ControlSession controlSession()
method isAutoStop (line 190) | boolean isAutoStop()
method sendPendingError (line 195) | void sendPendingError()
method init (line 203) | private int init()
method record (line 232) | private int record()
method state (line 279) | private void state(final State newState, final String reason)
method logStateChange (line 290) | @SuppressWarnings("unused")
FILE: aeron-archive/src/main/java/io/aeron/archive/RecordingSummary.java
class RecordingSummary (line 21) | public class RecordingSummary
method RecordingSummary (line 71) | public RecordingSummary()
method toString (line 78) | public String toString()
FILE: aeron-archive/src/main/java/io/aeron/archive/RecordingWriter.java
class RecordingWriter (line 53) | final class RecordingWriter implements BlockHandler, AutoCloseable
method RecordingWriter (line 75) | RecordingWriter(
method onBlock (line 107) | public void onBlock(
method close (line 172) | public void close()
method position (line 181) | long position()
method init (line 186) | void init() throws IOException
method computeChecksum (line 196) | private void computeChecksum(final Checksum checksum, final UnsafeBuff...
method openRecordingSegmentFile (line 211) | private void openRecordingSegmentFile(final File segmentFile)
method onFileRollOver (line 232) | private void onFileRollOver()
method checkErrorType (line 247) | private void checkErrorType(final IOException ex, final int writeLength)
FILE: aeron-archive/src/main/java/io/aeron/archive/ReplaySession.java
class ReplaySession (line 72) | class ReplaySession implements Session, AutoCloseable
type State (line 74) | @SuppressWarnings("JavadocVariable")
method ReplaySession (line 117) | ReplaySession(
method close (line 172) | public void close()
method sessionId (line 196) | public long sessionId()
method doWork (line 204) | public int doWork()
method abort (line 243) | public void abort(final String reason)
method isDone (line 251) | public boolean isDone()
method recordingId (line 256) | long recordingId()
method state (line 261) | State state()
method replayChannel (line 266) | String replayChannel()
method replayStreamId (line 271) | int replayStreamId()
method segmentFileBasePosition (line 276) | long segmentFileBasePosition()
method sendPendingError (line 281) | void sendPendingError()
method onPendingError (line 290) | @SuppressWarnings("unused")
method init (line 296) | private int init() throws IOException
method replay (line 350) | @SuppressWarnings("methodlength")
method framePosition (line 454) | private String framePosition(final int frameOffset)
method hasPublicationAdvanced (line 464) | private boolean hasPublicationAdvanced(final long position, final int ...
method verifyChecksum (line 487) | private void verifyChecksum(final Checksum checksum, final int frameOf...
method readRecording (line 501) | private int readRecording(final long availableReplay) throws IOException
method raiseError (line 523) | private void raiseError(final String errorMessage, final Throwable cause)
method notExtended (line 534) | private boolean notExtended(final long replayPosition, final long oldS...
method nextTerm (line 570) | private void nextTerm() throws IOException
method closeRecordingSegment (line 584) | private void closeRecordingSegment()
method openRecordingSegment (line 591) | private void openRecordingSegment() throws IOException
method notHeaderAligned (line 608) | static boolean notHeaderAligned(
method state (line 626) | private void state(final State newState, final String reason)
method logStateChange (line 632) | @SuppressWarnings("unused")
method isInvalidHeader (line 644) | static boolean isInvalidHeader(
FILE: aeron-archive/src/main/java/io/aeron/archive/ReplicationCredentialsSupplier.java
class ReplicationCredentialsSupplier (line 21) | class ReplicationCredentialsSupplier implements CredentialsSupplier
method ReplicationCredentialsSupplier (line 25) | ReplicationCredentialsSupplier(final byte[] encodedCredentials)
method encodedCredentials (line 30) | public byte[] encodedCredentials()
method onChallenge (line 35) | public byte[] onChallenge(final byte[] encodedChallenge)
FILE: aeron-archive/src/main/java/io/aeron/archive/ReplicationSession.java
class ReplicationSession (line 52) | class ReplicationSession implements Session, RecordingDescriptorConsumer
type State (line 59) | @SuppressWarnings("JavadocVariable")
method ReplicationSession (line 116) | ReplicationSession(
method sessionId (line 168) | public long sessionId()
method isDone (line 176) | public boolean isDone()
method abort (line 184) | public void abort(final String reason)
method close (line 192) | public void close()
method doWork (line 211) | public int doWork()
method onRecordingDescriptor (line 288) | public void onRecordingDescriptor(
method connect (line 394) | private int connect()
method replicateDescriptor (line 437) | private int replicateDescriptor()
method srcRecordingPosition (line 477) | private int srcRecordingPosition()
method extend (line 518) | private int extend()
method replayToken (line 562) | private int replayToken()
method getArchiveProxy (line 599) | private int getArchiveProxy()
method replay (line 659) | private int replay()
method awaitImage (line 746) | private int awaitImage()
method replicate (line 770) | private int replicate()
method catchup (line 809) | private int catchup()
method attemptLiveJoin (line 827) | private int attemptLiveJoin()
method hasResponse (line 895) | private boolean hasResponse(final ControlResponsePoller poller)
method error (line 911) | private void error(final String msg, final int errorCode)
method signal (line 916) | private void signal(final long position, final RecordingSignal recordi...
method stopReplaySession (line 922) | private void stopReplaySession(final CountedErrorHandler countedErrorH...
method stopRecording (line 939) | private void stopRecording()
method shouldAddLiveDestination (line 948) | private boolean shouldAddLiveDestination(final long position)
method shouldStopReplay (line 954) | private boolean shouldStopReplay(final long position)
method trackAction (line 961) | private int trackAction(final long correlationId)
method state (line 968) | private void state(final State newState, final String reason)
method pollSourceArchiveEvents (line 979) | private void pollSourceArchiveEvents()
method logStateChange (line 997) | private void logStateChange(
method logReplicationSessionDone (line 1009) | private void logReplicationSessionDone(
FILE: aeron-archive/src/main/java/io/aeron/archive/Session.java
type Session (line 23) | interface Session
method abort (line 25) | void abort(String reason);
method isDone (line 27) | boolean isDone();
method doWork (line 29) | int doWork();
method sessionId (line 31) | long sessionId();
method close (line 33) | void close();
FILE: aeron-archive/src/main/java/io/aeron/archive/SessionWorker.java
class SessionWorker (line 30) | class SessionWorker<T extends Session> implements Agent
method SessionWorker (line 37) | SessionWorker(final String roleName, final CountedErrorHandler errorHa...
method roleName (line 46) | public String roleName()
method doWork (line 54) | public int doWork()
method onClose (line 84) | public final void onClose()
method abort (line 113) | protected void abort()
method closeSession (line 120) | protected void closeSession(final T session)
method postSessionsClose (line 135) | protected void postSessionsClose()
method preSessionsClose (line 142) | protected void preSessionsClose()
method addSession (line 149) | protected void addSession(final T session)
FILE: aeron-archive/src/main/java/io/aeron/archive/SharedModeArchiveConductor.java
class SharedModeArchiveConductor (line 22) | final class SharedModeArchiveConductor extends ArchiveConductor
method SharedModeArchiveConductor (line 27) | SharedModeArchiveConductor(final Archive.Context ctx)
method onStart (line 32) | public void onStart()
method newRecorder (line 43) | Recorder newRecorder()
method newReplayer (line 48) | Replayer newReplayer()
method doWork (line 53) | public int doWork()
method closeSessionWorkers (line 64) | protected void closeSessionWorkers()
class SharedModeRecorder (line 70) | class SharedModeRecorder extends Recorder
method SharedModeRecorder (line 72) | SharedModeRecorder(final CountedErrorHandler errorHandler, final Arc...
method closeSession (line 77) | protected void closeSession(final RecordingSession session)
class SharedModeReplayer (line 83) | class SharedModeReplayer extends Replayer
method SharedModeReplayer (line 85) | SharedModeReplayer(final CountedErrorHandler errorHandler, final Arc...
method closeSession (line 90) | protected void closeSession(final ReplaySession session)
FILE: aeron-archive/src/main/java/io/aeron/archive/SimpleFragmentHandler.java
type SimpleFragmentHandler (line 20) | @FunctionalInterface
method onFragment (line 33) | void onFragment(UnsafeBuffer buffer, int offset, int length, int frame...
FILE: aeron-archive/src/main/java/io/aeron/archive/UpdateChannelSession.java
class UpdateChannelSession (line 22) | class UpdateChannelSession implements Session
method UpdateChannelSession (line 35) | UpdateChannelSession(
method abort (line 56) | public void abort(final String reason)
method isDone (line 64) | public boolean isDone()
method doWork (line 72) | public int doWork()
method sessionId (line 131) | public long sessionId()
method close (line 139) | public void close()
FILE: aeron-archive/src/main/java/io/aeron/archive/checksum/Checksum.java
type Checksum (line 23) | public interface Checksum
method compute (line 33) | int compute(long address, int offset, int length);
FILE: aeron-archive/src/main/java/io/aeron/archive/checksum/Checksums.java
class Checksums (line 25) | public final class Checksums
method Checksums (line 30) | private Checksums()
method crc32 (line 39) | public static Checksum crc32()
method crc32c (line 49) | public static Checksum crc32c()
method newInstance (line 65) | public static Checksum newInstance(final String className)
FILE: aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java
class AeronArchive (line 88) | @Versioned
type State (line 125) | public enum State
method AeronArchive (line 163) | AeronArchive(
method segmentFileBasePosition (line 193) | public static long segmentFileBasePosition(
method state (line 208) | public State state()
method close (line 217) | public void close()
method connect (line 282) | public static AeronArchive connect()
method connect (line 296) | public static AeronArchive connect(final Context ctx)
method asyncConnect (line 334) | public static AsyncConnect asyncConnect()
method asyncConnect (line 346) | public static AsyncConnect asyncConnect(final Context ctx)
method context (line 356) | public Context context()
method lastCorrelationId (line 366) | public long lastCorrelationId()
method controlSessionId (line 376) | public long controlSessionId()
method archiveProxy (line 386) | public ArchiveProxy archiveProxy()
method controlResponsePoller (line 396) | public ControlResponsePoller controlResponsePoller()
method recordingDescriptorPoller (line 406) | public RecordingDescriptorPoller recordingDescriptorPoller()
method recordingSubscriptionDescriptorPoller (line 427) | public RecordingSubscriptionDescriptorPoller recordingSubscriptionDesc...
method pollForErrorResponse (line 448) | public String pollForErrorResponse()
method checkForErrorResponse (line 493) | public void checkForErrorResponse()
method pollForRecordingSignals (line 552) | public int pollForRecordingSignals()
method addRecordedPublication (line 607) | public Publication addRecordedPublication(final String channel, final ...
method addRecordedExclusivePublication (line 647) | public ExclusivePublication addRecordedExclusivePublication(final Stri...
method startRecording (line 685) | public long startRecording(final String channel, final int streamId, f...
method startRecording (line 723) | public long startRecording(
method extendRecording (line 762) | public long extendRecording(
method extendRecording (line 806) | public long extendRecording(
method stopRecording (line 845) | public void stopRecording(final String channel, final int streamId)
method tryStopRecording (line 879) | public boolean tryStopRecording(final String channel, final int streamId)
method stopRecording (line 909) | public void stopRecording(final long subscriptionId)
method tryStopRecording (line 940) | public boolean tryStopRecording(final long subscriptionId)
method tryStopRecordingByIdentity (line 969) | public boolean tryStopRecordingByIdentity(final long recordingId)
method stopRecording (line 997) | public void stopRecording(final Publication publication)
method startReplay (line 1020) | public long startReplay(
method startBoundedReplay (line 1074) | public long startBoundedReplay(
method startReplay (line 1123) | public long startReplay(
method stopReplay (line 1168) | public void stopReplay(final long replaySessionId)
method stopAllReplays (line 1196) | public void stopAllReplays(final long recordingId)
method replay (line 1232) | public Subscription replay(
method replay (line 1287) | public Subscription replay(
method replay (line 1340) | public Subscription replay(
method listRecordings (line 1392) | public int listRecordings(
method listRecordingsForUri (line 1431) | public int listRecordingsForUri(
method listRecording (line 1476) | public int listRecording(final long recordingId, final RecordingDescri...
method getStartPosition (line 1508) | public long getStartPosition(final long recordingId)
method getRecordingPosition (line 1538) | public long getRecordingPosition(final long recordingId)
method getStopPosition (line 1568) | public long getStopPosition(final long recordingId)
method getMaxRecordedPosition (line 1599) | public long getMaxRecordedPosition(final long recordingId)
method archiveId (line 1628) | public long archiveId()
method findLastMatchingRecording (line 1642) | public long findLastMatchingRecording(
method truncateRecording (line 1675) | public long truncateRecording(final long recordingId, final long posit...
method purgeRecording (line 1706) | public long purgeRecording(final long recordingId)
method listRecordingSubscriptions (line 1743) | public int listRecordingSubscriptions(
method replicate (line 1801) | public long replicate(
method replicate (line 1861) | public long replicate(
method taggedReplicate (line 1922) | public long taggedReplicate(
method taggedReplicate (line 1986) | public long taggedReplicate(
method replicate (line 2047) | public long replicate(
method stopReplication (line 2086) | public void stopReplication(final long replicationId)
method tryStopReplication (line 2117) | public boolean tryStopReplication(final long replicationId)
method detachSegments (line 2151) | public void detachSegments(final long recordingId, final long newStart...
method deleteDetachedSegments (line 2181) | public long deleteDetachedSegments(final long recordingId)
method purgeSegments (line 2218) | public long purgeSegments(final long recordingId, final long newStartP...
method attachSegments (line 2251) | public long attachSegments(final long recordingId)
method migrateSegments (line 2290) | public long migrateSegments(final long srcRecordingId, final long dstR...
method updateChannel (line 2319) | public void updateChannel(final long recordingId, final String newChan...
method checkDeadline (line 2342) | private void checkDeadline(final long deadlineNs, final String errorMe...
method pollNextResponse (line 2357) | private void pollNextResponse(final long correlationId, final long dea...
method checkForDisconnect (line 2390) | private void checkForDisconnect(final Subscription subscription)
method pollForResponse (line 2403) | private long pollForResponse(final long correlationId)
method pollForResponseAllowingError (line 2447) | private boolean pollForResponseAllowingError(final long correlationId,...
method pollForDescriptors (line 2498) | private int pollForDescriptors(
method pollForSubscriptionDescriptors (line 2535) | private int pollForSubscriptionDescriptors(
method dispatchRecordingSignal (line 2572) | private void dispatchRecordingSignal(final ControlResponsePoller poller)
method ensureConnected (line 2583) | private void ensureConnected()
method ensureNotReentrant (line 2599) | private void ensureNotReentrant()
method state (line 2607) | private void state(final State newState)
class Configuration (line 2618) | @Config(existsInC = false)
method Configuration (line 2621) | private Configuration()
method messageTimeoutNs (line 2843) | public static long messageTimeoutNs()
method messageRetryAttempts (line 2854) | public static int messageRetryAttempts()
method controlTermBufferSparse (line 2865) | public static boolean controlTermBufferSparse()
method controlTermBufferLength (line 2878) | public static int controlTermBufferLength()
method controlMtuLength (line 2889) | public static int controlMtuLength()
method controlChannel (line 2899) | public static String controlChannel()
method controlStreamId (line 2911) | public static int controlStreamId()
method localControlChannel (line 2923) | public static String localControlChannel()
method localControlStreamId (line 2935) | public static int localControlStreamId()
method controlResponseChannel (line 2945) | public static String controlResponseChannel()
method controlResponseStreamId (line 2957) | public static int controlResponseStreamId()
method recordingEventsChannel (line 2967) | public static String recordingEventsChannel()
method recordingEventsStreamId (line 2979) | public static int recordingEventsStreamId()
method recordingEventsEnabled (line 2990) | public static boolean recordingEventsEnabled()
method clientName (line 3004) | public static String clientName()
class Context (line 3016) | public static final class Context implements Cloneable
method Context (line 3058) | public Context()
method clone (line 3067) | public Context clone()
method conclude (line 3082) | public void conclude()
method isConcluded (line 3155) | public boolean isConcluded()
method messageTimeoutNs (line 3167) |
Copy disabled (too large)
Download .json
Condensed preview — 1592 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,955K chars).
[
{
"path": ".gitattributes",
"chars": 51,
"preview": "* text=auto\n*.bat text eol=crlf\n*.cmd text eol=crlf"
},
{
"path": ".github/codeql/codeql-config.yml",
"chars": 520,
"preview": "name: \"Aeron CodeQL Scanning\"\n\nqueries:\n - uses: security-and-quality\n\nquery-filters:\n - exclude:\n id: java/missi"
},
{
"path": ".github/workflows/ci-low-cadence.yml",
"chars": 16613,
"preview": "name: Continuous Integration (Low Cadence)\n\non:\n workflow_call:\n workflow_dispatch:\n repository_dispatch:\n types: "
},
{
"path": ".github/workflows/ci.yml",
"chars": 20891,
"preview": "name: Continuous Integration\n\non:\n workflow_call:\n workflow_dispatch:\n repository_dispatch:\n types: run-commit-tes"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 3284,
"preview": "name: \"CodeQL\"\n\non:\n workflow_call:\n workflow_dispatch:\n repository_dispatch:\n types: run-commit-tests\n push:\n "
},
{
"path": ".github/workflows/release.yml",
"chars": 1693,
"preview": "name: Release\n\non:\n workflow_dispatch:\n push:\n tags:\n - \"*.*.*\"\n\nconcurrency:\n group: ${{ github.workflow }}-"
},
{
"path": ".gitignore",
"chars": 1140,
"preview": "target\nGTAGS\nGRTAGS\nGPATH\nprop\nout/\nclasses/\nbin/\n\n# OS X\n.DS_Store\n\n# eclipse\n.project\n.classpath\n.settings\n\n# intellij"
},
{
"path": "CHANGELOG.adoc",
"chars": 269956,
"preview": "= Aeron Releases\n\n== 1.51.0 (Unreleased)\n\n=== New & Noteworthy\n\n* **Breaking:** **[Cluster]** The classes RecordingLog.S"
},
{
"path": "CMakeLists.txt",
"chars": 15952,
"preview": "#\n# Copyright 2014-2025 Real Logic Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "CONTRIBUTING.md",
"chars": 1427,
"preview": "# Contributing to Aeron\n\nIf you would like to contribute code you can do so through GitHub by sending a pull request or "
},
{
"path": "LICENSE",
"chars": 10274,
"preview": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AN"
},
{
"path": "README.md",
"chars": 5180,
"preview": "Aeron\n=====\n\n[](https://github.com/aeron-io/aeron/blo"
},
{
"path": "aeron-agent/README.md",
"chars": 1327,
"preview": "Aeron Agent\n===\n\n[](http://www.javadoc.io/doc/io.aeron/ae"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveComponentLogger.java",
"chars": 6805,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveEventCode.java",
"chars": 14023,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveEventDissector.java",
"chars": 48273,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveEventEncoder.java",
"chars": 9553,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveEventLogger.java",
"chars": 16433,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ArchiveInterceptor.java",
"chars": 4138,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ChannelEndpointInterceptor.java",
"chars": 6081,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CleanupInterceptor.java",
"chars": 2039,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterComponentLogger.java",
"chars": 9640,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterEventCode.java",
"chars": 7211,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterEventDissector.java",
"chars": 32515,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterEventEncoder.java",
"chars": 33293,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterEventLogger.java",
"chars": 40856,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ClusterInterceptor.java",
"chars": 13044,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CmdInterceptor.java",
"chars": 5697,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CollectingEventLogReaderAgent.java",
"chars": 7224,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CollectingEventLogReaderAgentMBean.java",
"chars": 1786,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CommonEventDissector.java",
"chars": 6225,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/CommonEventEncoder.java",
"chars": 12177,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ComponentLogger.java",
"chars": 2507,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ConfigOption.java",
"chars": 5908,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/ControlInterceptor.java",
"chars": 1643,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DissectFunction.java",
"chars": 1240,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverComponentLogger.java",
"chars": 13332,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverEventCode.java",
"chars": 9603,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverEventDissector.java",
"chars": 36203,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverEventEncoder.java",
"chars": 15809,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverEventLogger.java",
"chars": 23252,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DriverInterceptor.java",
"chars": 4933,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/DynamicLoggingAgent.java",
"chars": 3944,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/EventCode.java",
"chars": 916,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/EventCodeType.java",
"chars": 1737,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/EventConfiguration.java",
"chars": 4423,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/EventLogAgent.java",
"chars": 8628,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/EventLogReaderAgent.java",
"chars": 8331,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/LogUtil.java",
"chars": 1672,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/java/io/aeron/agent/package-info.java",
"chars": 1257,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/main/resources/META-INF/services/io.aeron.agent.ComponentLogger",
"chars": 113,
"preview": "io.aeron.agent.DriverComponentLogger\nio.aeron.agent.ArchiveComponentLogger\nio.aeron.agent.ClusterComponentLogger\n"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/AgentTests.java",
"chars": 9208,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ArchiveEventCodeTest.java",
"chars": 2494,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ArchiveEventDissectorTest.java",
"chars": 37879,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ArchiveEventEncoderTest.java",
"chars": 8431,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ArchiveEventLoggerTest.java",
"chars": 16992,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ArchiveLoggingAgentTest.java",
"chars": 7098,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ClusterEventCodeTest.java",
"chars": 2127,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ClusterEventDissectorTest.java",
"chars": 7414,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ClusterEventEncoderTest.java",
"chars": 13092,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ClusterEventLoggerTest.java",
"chars": 49727,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ClusterLoggingAgentTest.java",
"chars": 11722,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/CommonEventDissectorTest.java",
"chars": 3951,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/CommonEventEncoderTest.java",
"chars": 8061,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/ConfigOptionTest.java",
"chars": 5331,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/DriverEventCodeTest.java",
"chars": 1006,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/DriverEventDissectorTest.java",
"chars": 40102,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/DriverEventEncoderTest.java",
"chars": 15239,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/DriverEventLoggerTest.java",
"chars": 19828,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/DriverLoggingAgentTest.java",
"chars": 14033,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/EventConfigurationTest.java",
"chars": 3465,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/EventLogReaderAgentTest.java",
"chars": 6697,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-agent/src/test/java/io/aeron/agent/LogUtilTest.java",
"chars": 1517,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-all/README.md",
"chars": 86,
"preview": "Aeron All\n===\n\nThis subproject contains all-in-one build of Aeron with dependencies. \n"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/api/InternalApi.java",
"chars": 1154,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/Config.java",
"chars": 5449,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/ConfigInfo.java",
"chars": 3064,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/ConfigProcessor.java",
"chars": 18310,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/DefaultType.java",
"chars": 3007,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/ExpectedCConfig.java",
"chars": 1552,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/ExpectedConfig.java",
"chars": 987,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/docgen/ConfigDocGenerator.java",
"chars": 8432,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/docgen/GenerateConfigDocTask.java",
"chars": 1290,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/validation/Entry.java",
"chars": 1586,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/validation/ValidateConfigExpectationsTask.java",
"chars": 1376,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/validation/Validation.java",
"chars": 1689,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/validation/ValidationReport.java",
"chars": 2377,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/config/validation/Validator.java",
"chars": 6771,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/AeronCounter.java",
"chars": 1267,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/CounterInfo.java",
"chars": 1567,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/CounterProcessor.java",
"chars": 6084,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/validation/ValidateCounterExpectationsTask.java",
"chars": 1376,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/validation/Validation.java",
"chars": 1821,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/validation/ValidationReport.java",
"chars": 2391,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/counter/validation/Validator.java",
"chars": 4546,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/utility/ElementIO.java",
"chars": 2120,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/utility/Processor.java",
"chars": 4396,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/validation/Grep.java",
"chars": 5276,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/version/Version.java",
"chars": 1154,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/version/VersionProcessor.java",
"chars": 5508,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/java/io/aeron/version/Versioned.java",
"chars": 985,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor",
"chars": 100,
"preview": "io.aeron.version.VersionProcessor\nio.aeron.config.ConfigProcessor\nio.aeron.counter.CounterProcessor\n"
},
{
"path": "aeron-archive/README.md",
"chars": 6613,
"preview": "Aeron Archive\n===\n\n[](http://www.javadoc.io/doc/io.aeron/"
},
{
"path": "aeron-archive/src/main/c/CMakeLists.txt",
"chars": 9636,
"preview": "#\n# Copyright 2014-2025 Real Logic Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "aeron-archive/src/main/c/client/README.md",
"chars": 3606,
"preview": "# Usage Guide\n\nThere are examples of nearly all the public C Archive Client APIs being used in the unit test file at `ae"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive.h",
"chars": 52362,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_async_connect.c",
"chars": 17877,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_async_connect.h",
"chars": 831,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_client.c",
"chars": 72125,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_client.h",
"chars": 2509,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_client_version.c",
"chars": 1074,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_client_version.h",
"chars": 1042,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_configuration.c",
"chars": 972,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_configuration.h",
"chars": 988,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_context.c",
"chars": 23249,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_context.h",
"chars": 4032,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_control_response_poller.c",
"chars": 13058,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_control_response_poller.h",
"chars": 2122,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_credentials_supplier.c",
"chars": 1567,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_credentials_supplier.h",
"chars": 1631,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_proxy.c",
"chars": 43289,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_proxy.h",
"chars": 7362,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_descriptor_poller.c",
"chars": 13930,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_descriptor_poller.h",
"chars": 2216,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_pos.c",
"chars": 5883,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_signal.c",
"chars": 2565,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_signal.h",
"chars": 1006,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_subscription_descriptor_poller.c",
"chars": 11796,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_recording_subscription_descriptor_poller.h",
"chars": 2489,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_replay_merge.c",
"chars": 29590,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_replay_params.c",
"chars": 1634,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_replay_params.h",
"chars": 946,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/c/client/aeron_archive_replication_params.c",
"chars": 1191,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/CMakeLists.txt",
"chars": 2267,
"preview": "#\n# Copyright 2014-2025 Real Logic Limited.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/AeronArchive.h",
"chars": 47297,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/ArchiveContext.h",
"chars": 11870,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/CredentialsSupplier.h",
"chars": 2402,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/RecordingPos.h",
"chars": 2445,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/ReplayMerge.h",
"chars": 3818,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/ReplayParams.h",
"chars": 2592,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/archive/ReplicationParams.h",
"chars": 3985,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/cpp_wrapper/client/util/ArchiveExceptions.h",
"chars": 1207,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/AbstractListRecordingsSession.java",
"chars": 4009,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/Archive.java",
"chars": 151009,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveConductor.java",
"chars": 103037,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveCounters.java",
"chars": 5634,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMarkFile.java",
"chars": 18735,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMigrationPlanner.java",
"chars": 2150,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMigrationStep.java",
"chars": 842,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_0_1.java",
"chars": 6330,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_1_2.java",
"chars": 6420,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveMigration_2_3.java",
"chars": 6373,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveThreadingMode.java",
"chars": 1186,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchiveTool.java",
"chars": 72365,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ArchivingMediaDriver.java",
"chars": 4395,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/Catalog.java",
"chars": 52449,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/CatalogIndex.java",
"chars": 6432,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/CatalogTool.java",
"chars": 1105,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/CatalogView.java",
"chars": 3949,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlRequestDecoders.java",
"chars": 4749,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlResponseProxy.java",
"chars": 9656,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlSession.java",
"chars": 31679,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlSessionAdapter.java",
"chars": 49687,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlSessionCounter.java",
"chars": 4511,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ControlSessionProxy.java",
"chars": 2306,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/CreateReplayPublicationSession.java",
"chars": 4578,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/DedicatedModeArchiveConductor.java",
"chars": 10693,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/DeleteSegmentsSession.java",
"chars": 3998,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ListRecordingByIdSession.java",
"chars": 2369,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ListRecordingSubscriptionsSession.java",
"chars": 3621,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ListRecordingsForUriSession.java",
"chars": 2170,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ListRecordingsSession.java",
"chars": 1271,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/MigrationUtils.java",
"chars": 2245,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/RecordingEventsProxy.java",
"chars": 5128,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/RecordingReader.java",
"chars": 7747,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/RecordingSession.java",
"chars": 7929,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/RecordingSummary.java",
"chars": 2478,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/RecordingWriter.java",
"chars": 9000,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ReplaySession.java",
"chars": 21431,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ReplicationCredentialsSupplier.java",
"chars": 1243,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/ReplicationSession.java",
"chars": 34209,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/Session.java",
"chars": 1096,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/SessionWorker.java",
"chars": 3316,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/SharedModeArchiveConductor.java",
"chars": 2741,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/SimpleFragmentHandler.java",
"chars": 1299,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/UpdateChannelSession.java",
"chars": 4530,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/checksum/Checksum.java",
"chars": 1140,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/checksum/Checksums.java",
"chars": 3258,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/checksum/package-info.java",
"chars": 1072,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java",
"chars": 155730,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ArchiveEvent.java",
"chars": 1677,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ArchiveException.java",
"chars": 8586,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ArchiveProxy.java",
"chars": 71077,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ControlEventListener.java",
"chars": 1517,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ControlResponseAdapter.java",
"chars": 7388,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ControlResponseListener.java",
"chars": 829,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/ControlResponsePoller.java",
"chars": 12149,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/RecordingDescriptorConsumer.java",
"chars": 2870,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/RecordingDescriptorPoller.java",
"chars": 11180,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
},
{
"path": "aeron-archive/src/main/java/io/aeron/archive/client/RecordingEventsAdapter.java",
"chars": 4907,
"preview": "/*\n * Copyright 2014-2025 Real Logic Limited.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * y"
}
]
// ... and 1392 more files (download for full content)
About this extraction
This page contains the full source code of the aeron-io/aeron GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1592 files (15.5 MB), approximately 4.2M tokens, and a symbol index with 17712 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.