├── .gitattributes ├── .github ├── codeql │ └── codeql-config.yml └── workflows │ ├── ci-low-cadence.yml │ ├── ci.yml │ ├── codeql.yml │ ├── release-documentation.yml │ └── release.yml ├── .gitignore ├── 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 │ └── LogUtilTest.java ├── aeron-all └── README.md ├── aeron-annotations └── src │ └── main │ ├── java │ └── io │ │ └── aeron │ │ ├── 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_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 │ │ ├── CMakeLists.txt │ │ └── client │ │ │ ├── AeronArchive.cpp │ │ │ ├── AeronArchive.h │ │ │ ├── AeronArchiveVersion.cpp │ │ │ ├── AeronArchiveVersion.h │ │ │ ├── ArchiveConfiguration.h │ │ │ ├── ArchiveException.h │ │ │ ├── ArchiveProxy.cpp │ │ │ ├── ArchiveProxy.h │ │ │ ├── ControlResponseAdapter.cpp │ │ │ ├── ControlResponseAdapter.h │ │ │ ├── ControlResponsePoller.cpp │ │ │ ├── ControlResponsePoller.h │ │ │ ├── RecordingDescriptorPoller.cpp │ │ │ ├── RecordingDescriptorPoller.h │ │ │ ├── RecordingEventsAdapter.cpp │ │ │ ├── RecordingEventsAdapter.h │ │ │ ├── RecordingEventsPoller.cpp │ │ │ ├── RecordingEventsPoller.h │ │ │ ├── RecordingPos.h │ │ │ ├── RecordingSignalAdapter.cpp │ │ │ ├── RecordingSignalAdapter.h │ │ │ ├── RecordingSubscriptionDescriptorPoller.cpp │ │ │ ├── RecordingSubscriptionDescriptorPoller.h │ │ │ ├── ReplayMerge.cpp │ │ │ └── ReplayMerge.h │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ ├── AeronArchiveTest.cpp │ ├── CMakeLists.txt │ ├── TestArchive.h │ └── client │ │ └── AeronArchiveVersionTest.cpp │ ├── cpp_wrapper │ ├── AeronArchiveWrapperTest.cpp │ ├── CMakeLists.txt │ └── TestArchive.h │ └── java │ └── io │ └── aeron │ └── archive │ ├── 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 │ │ ├── Aeron.cpp │ │ ├── Aeron.h │ │ ├── AeronCounters.h │ │ ├── AeronVersion.cpp │ │ ├── AeronVersion.h │ │ ├── BufferBuilder.h │ │ ├── CMakeLists.txt │ │ ├── ChannelUri.h │ │ ├── ChannelUriStringBuilder.h │ │ ├── ClientConductor.cpp │ │ ├── ClientConductor.h │ │ ├── CncFileDescriptor.h │ │ ├── CncFileReader.h │ │ ├── Context.cpp │ │ ├── Context.h │ │ ├── ControlledFragmentAssembler.h │ │ ├── Counter.cpp │ │ ├── Counter.h │ │ ├── DriverListenerAdapter.h │ │ ├── DriverProxy.h │ │ ├── ExclusivePublication.cpp │ │ ├── ExclusivePublication.h │ │ ├── FragmentAssembler.h │ │ ├── HeartbeatTimestamp.h │ │ ├── Image.h │ │ ├── ImageControlledFragmentAssembler.h │ │ ├── ImageFragmentAssembler.h │ │ ├── LogBuffers.cpp │ │ ├── LogBuffers.h │ │ ├── Publication.cpp │ │ ├── Publication.h │ │ ├── Subscription.cpp │ │ ├── Subscription.h │ │ ├── command │ │ │ ├── ClientTimeoutFlyweight.h │ │ │ ├── ControlProtocolEvents.h │ │ │ ├── CorrelatedMessageFlyweight.h │ │ │ ├── CounterMessageFlyweight.h │ │ │ ├── CounterUpdateFlyweight.h │ │ │ ├── DestinationMessageFlyweight.h │ │ │ ├── ErrorResponseFlyweight.h │ │ │ ├── Flyweight.h │ │ │ ├── ImageBuffersReadyFlyweight.h │ │ │ ├── ImageMessageFlyweight.h │ │ │ ├── OperationSucceededFlyweight.h │ │ │ ├── PublicationBuffersReadyFlyweight.h │ │ │ ├── PublicationMessageFlyweight.h │ │ │ ├── RemoveMessageFlyweight.h │ │ │ ├── SubscriptionMessageFlyweight.h │ │ │ ├── SubscriptionReadyFlyweight.h │ │ │ └── TerminateDriverFlyweight.h │ │ ├── concurrent │ │ │ ├── AgentInvoker.h │ │ │ ├── AgentRunner.h │ │ │ ├── Atomic64.h │ │ │ ├── AtomicArrayUpdater.h │ │ │ ├── AtomicBuffer.h │ │ │ ├── AtomicCounter.h │ │ │ ├── BackOffIdleStrategy.h │ │ │ ├── BusySpinIdleStrategy.h │ │ │ ├── CountersManager.h │ │ │ ├── CountersReader.h │ │ │ ├── NoOpIdleStrategy.h │ │ │ ├── SleepingIdleStrategy.h │ │ │ ├── YieldingIdleStrategy.h │ │ │ ├── atomic │ │ │ │ ├── Atomic64_gcc_cpp11.h │ │ │ │ ├── Atomic64_gcc_x86_64.h │ │ │ │ └── Atomic64_msvc.h │ │ │ ├── broadcast │ │ │ │ ├── BroadcastBufferDescriptor.h │ │ │ │ ├── BroadcastReceiver.h │ │ │ │ ├── BroadcastTransmitter.h │ │ │ │ ├── CopyBroadcastReceiver.h │ │ │ │ └── RecordDescriptor.h │ │ │ ├── errors │ │ │ │ ├── DistinctErrorLog.h │ │ │ │ ├── ErrorLogDescriptor.h │ │ │ │ └── ErrorLogReader.h │ │ │ ├── logbuffer │ │ │ │ ├── BufferClaim.h │ │ │ │ ├── DataFrameHeader.h │ │ │ │ ├── FrameDescriptor.h │ │ │ │ ├── Header.h │ │ │ │ ├── HeaderWriter.h │ │ │ │ ├── LogBufferDescriptor.h │ │ │ │ ├── TermBlockScanner.h │ │ │ │ ├── TermGapScanner.h │ │ │ │ ├── TermReader.h │ │ │ │ ├── TermRebuilder.h │ │ │ │ └── TermScanner.h │ │ │ ├── reports │ │ │ │ ├── LossReportDescriptor.h │ │ │ │ └── LossReportReader.h │ │ │ ├── ringbuffer │ │ │ │ ├── ManyToOneRingBuffer.h │ │ │ │ ├── OneToOneRingBuffer.h │ │ │ │ ├── RecordDescriptor.h │ │ │ │ └── RingBufferDescriptor.h │ │ │ └── status │ │ │ │ ├── LocalSocketAddressStatus.h │ │ │ │ ├── Position.h │ │ │ │ ├── ReadablePosition.h │ │ │ │ ├── StatusIndicatorReader.h │ │ │ │ └── UnsafeBufferPosition.h │ │ ├── protocol │ │ │ ├── DataHeaderFlyweight.h │ │ │ ├── HeaderFlyweight.h │ │ │ ├── NakFlyweight.h │ │ │ ├── SetupFlyweight.h │ │ │ └── StatusMessageFlyweight.h │ │ └── util │ │ │ ├── BitUtil.h │ │ │ ├── CommandOption.cpp │ │ │ ├── CommandOption.h │ │ │ ├── CommandOptionParser.cpp │ │ │ ├── CommandOptionParser.h │ │ │ ├── Exceptions.h │ │ │ ├── Export.h │ │ │ ├── Index.h │ │ │ ├── LangUtil.h │ │ │ ├── MacroUtil.h │ │ │ ├── MemoryMappedFile.cpp │ │ │ ├── MemoryMappedFile.h │ │ │ ├── Platform.h │ │ │ ├── ScopeUtils.h │ │ │ └── StringUtil.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 │ │ ├── ImageBuffersReadyFlyweight.java │ │ ├── ImageMessageFlyweight.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_client_conductor_test.cpp │ ├── aeron_client_test_utils.h │ ├── aeron_controlled_fragment_assembler_test.cpp │ ├── aeron_controlled_image_fragment_assembler_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 │ └── 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 │ ├── BufferBuilderTest.cpp │ ├── CMakeLists.txt │ ├── ChannelUriStringBuilderTest.cpp │ ├── ChannelUriTest.cpp │ ├── ClientConductorFixture.cpp │ ├── ClientConductorFixture.h │ ├── ClientConductorTest.cpp │ ├── ControlledFragmentAssemblerTest.cpp │ ├── ExclusivePublicationTest.cpp │ ├── FragmentAssemblerTest.cpp │ ├── ImageControlledFragmentAssemblerTest.cpp │ ├── ImageFragmentAssemblerTest.cpp │ ├── ImageTest.cpp │ ├── PublicationTest.cpp │ ├── SystemTest.cpp │ ├── command │ │ └── CommandTest.cpp │ ├── concurrent │ │ ├── AtomicArrayUpdaterTest.cpp │ │ ├── BroadcastReceiverTest.cpp │ │ ├── BroadcastTransmitterTest.cpp │ │ ├── ConcurrentTest.cpp │ │ ├── CountersManagerTest.cpp │ │ ├── DistinctErrorLogTest.cpp │ │ ├── ErrorLogReaderTest.cpp │ │ ├── ManyToOneRingBufferTest.cpp │ │ ├── MockAtomicBuffer.cpp │ │ ├── MockAtomicBuffer.h │ │ ├── OneToOneRingBufferTest.cpp │ │ ├── TermBlockScannerTest.cpp │ │ ├── TermGapScannerTest.cpp │ │ ├── TermReaderTest.cpp │ │ └── TermScannerTest.cpp │ └── util │ │ ├── MemoryMappedFileTest.cpp │ │ ├── TestUtils.h │ │ └── UtilTest.cpp │ ├── cpp_shared │ ├── ControlledFragmentAssemblerTestFixture.h │ ├── EmbeddedMediaDriver.h │ ├── FragmentAssemblerTestFixture.h │ ├── ImageControlledFragmentAssemblerTestFixture.h │ └── ImageFragmentAssemblerTestFixture.h │ ├── cpp_wrapper │ ├── CMakeLists.txt │ ├── ChannelUriStringBuilderTest.cpp │ ├── ControlledFragmentAssemblerTest.cpp │ ├── CountersTest.cpp │ ├── ExceptionsTest.cpp │ ├── FragmentAssemblerTest.cpp │ ├── ImageControlledFragmentAssemblerTest.cpp │ ├── ImageFragmentAssemblerTest.cpp │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ ├── 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 │ │ ├── SnapshotReplicationTest.java │ │ ├── StandbySnapshotReplicatorTest.java │ │ ├── WheelTimerServiceClusterTimeTest.java │ │ ├── client │ │ ├── AeronClusterAsyncConnectTest.java │ │ ├── AeronClusterContextTest.java │ │ ├── AeronClusterTest.java │ │ └── EgressAdapterTest.java │ │ └── service │ │ ├── ClusterMarkFileTest.java │ │ ├── ClusteredServiceAgentTest.java │ │ ├── ClusteredServiceContainerContextTest.java │ │ └── ServiceSnapshotTakerTest.java │ └── resources │ ├── aeron-cluster-mark-codecs-v0.xml │ └── v1_42_x │ └── node-state.dat ├── 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 │ │ │ ├── NetworkInterfaceShim.java │ │ │ ├── NetworkUtil.java │ │ │ ├── PortManager.java │ │ │ ├── ReceiveChannelEndpoint.java │ │ │ ├── ReceiveChannelEndpointThreadLocals.java │ │ │ ├── ReceiveDestinationTransport.java │ │ │ ├── SendChannelEndpoint.java │ │ │ ├── SocketAddressParser.java │ │ │ ├── UdpChannel.java │ │ │ ├── UdpChannelTransport.java │ │ │ ├── UdpNameResolutionTransport.java │ │ │ ├── UdpTransportPoller.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 │ ├── 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 │ ├── NetworkUtilTest.java │ ├── SocketAddressParserTest.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 │ │ ├── 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 │ │ └── raw │ │ │ └── TimeTests.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 │ │ ├── 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 │ │ ├── ShutdownBarrier.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 │ ├── ChannelEndpointStatusTest.java │ ├── ChannelValidationTest.java │ ├── ClientContextTest.java │ ├── ClientErrorHandlerTest.java │ ├── ConcurrentPublicationTermRotationRaceTest.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 │ ├── 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 │ ├── cluster │ ├── AppointedLeaderTest.java │ ├── ClusterBackupTest.java │ ├── ClusterInstrumentor.java │ ├── ClusterNetworkTopologyTest.java │ ├── ClusterSessionReliabilityTest.java │ ├── ClusterTest.java │ ├── ClusterToolTest.java │ ├── FailedFirstElectionClusterTest.java │ ├── InitiateShutdownThenImmediatelyCloseLeaderTest.java │ ├── MethodCallBlocker.java │ ├── MultiClusteredServicesTest.java │ ├── MultiModuleSharedDriverTest.java │ ├── MultiNodeTest.java │ ├── RacingCatchupClusterTest.java │ ├── RecoverAfterFailedCatchupClusterTest.java │ ├── ServiceIpcIngressMessageTest.java │ ├── SingleNodeTest.java │ ├── StalledLeaderLogReplicationClusterTest.java │ └── StartFromTruncatedRecordingLogTest.java │ ├── driver │ ├── BytesSentAndReceivedTest.java │ ├── DriverNameResolverTest.java │ ├── DriverShouldStartIfAeronDirectoryExistsTest.java │ ├── DriverSpaceTest.java │ ├── ExperimentalDriverFeaturesTest.java │ ├── FilePageSizeTest.java │ ├── Issue1719Test.java │ ├── ResolveEphemeralSubscriptionPortTest.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 │ │ ├── MediaDriverTestUtil.java │ │ ├── NetworkTestingUtil.java │ │ ├── NullOutputStream.java │ │ ├── RandomWatcher.java │ │ ├── SlowTest.java │ │ ├── SystemTestConfig.java │ │ ├── SystemTestWatcher.java │ │ ├── TestContexts.java │ │ ├── TestIdleStrategy.java │ │ ├── Tests.java │ │ ├── ThreadNamingTestCallback.java │ │ ├── TopologyTest.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 │ └── launcher │ └── RemoteLauncherTest.java ├── build.gradle ├── buildSrc ├── build.gradle ├── settings.gradle └── src │ └── main │ └── java │ └── io │ └── aeron │ └── build │ ├── AsciidocUtil.java │ ├── AsciidoctorPreprocessTask.java │ ├── DeduplicateTask.java │ ├── GithubUtil.java │ └── TutorialPublishTask.java ├── config ├── checkstyle │ ├── checkstyle.xml │ └── suppressions.xml └── ide │ ├── clion │ └── aeron_cpp.xml │ └── idea │ └── aeron.xml ├── cppbuild ├── Doxyfile.in ├── HdrHistogram_c-0.11.8.zip ├── cppbuild ├── cppbuild.cmd ├── cppbuild.ps1 ├── googletest-1.14.0.zip ├── rocky-docker-build ├── rocky │ └── Dockerfile ├── vs-helper.cmd └── vsr.cmd ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── run-ci-tests.sh ├── settings.gradle └── version.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.bat text eol=crlf 3 | *.cmd text eol=crlf -------------------------------------------------------------------------------- /.github/codeql/codeql-config.yml: -------------------------------------------------------------------------------- 1 | name: "Aeron CodeQL Scanning" 2 | 3 | queries: 4 | - uses: security-and-quality 5 | 6 | query-filters: 7 | - exclude: 8 | id: java/missing-override-annotation 9 | - exclude: 10 | id: cpp/poorly-documented-function 11 | - exclude: 12 | id: cpp/unused-static-variable 13 | - exclude: 14 | id: java/unused-reference-type 15 | - exclude: 16 | id: java/unused-parameter 17 | - exclude: 18 | id: cpp/trivial-switch 19 | - exclude: 20 | id: cpp/long-switch 21 | - exclude: 22 | id: cpp/integer-used-for-enum 23 | - exclude: 24 | id: cpp/stack-address-escape 25 | -------------------------------------------------------------------------------- /aeron-agent/src/main/java/io/aeron/agent/EventCode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.agent; 17 | 18 | /** 19 | * Identifies an event that can be enabled for logging. 20 | */ 21 | public interface EventCode 22 | { 23 | /** 24 | * Returns the unique event identifier withing an {@link EventCodeType}. 25 | * 26 | * @return the unique event identifier withing an {@link EventCodeType}. 27 | */ 28 | int id(); 29 | } 30 | -------------------------------------------------------------------------------- /aeron-agent/src/main/resources/META-INF/services/io.aeron.agent.ComponentLogger: -------------------------------------------------------------------------------- 1 | io.aeron.agent.DriverComponentLogger 2 | io.aeron.agent.ArchiveComponentLogger 3 | io.aeron.agent.ClusterComponentLogger 4 | -------------------------------------------------------------------------------- /aeron-agent/src/test/java/io/aeron/agent/DriverEventCodeTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.agent; 17 | 18 | import org.junit.jupiter.params.ParameterizedTest; 19 | import org.junit.jupiter.params.provider.EnumSource; 20 | 21 | import static org.junit.jupiter.api.Assertions.assertSame; 22 | 23 | class DriverEventCodeTest 24 | { 25 | @ParameterizedTest 26 | @EnumSource(DriverEventCode.class) 27 | void getCodeById(final DriverEventCode code) 28 | { 29 | assertSame(code, DriverEventCode.get(code.id())); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /aeron-all/README.md: -------------------------------------------------------------------------------- 1 | Aeron All 2 | === 3 | 4 | This subproject contains all-in-one build of Aeron with dependencies. 5 | -------------------------------------------------------------------------------- /aeron-annotations/src/main/java/io/aeron/config/ExpectedConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.config; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | */ 22 | public class ExpectedConfig implements Serializable 23 | { 24 | private static final long serialVersionUID = -2025994445988286324L; 25 | 26 | /** 27 | * C config. 28 | */ 29 | public final ExpectedCConfig c; 30 | 31 | ExpectedConfig() 32 | { 33 | c = new ExpectedCConfig(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /aeron-annotations/src/main/java/io/aeron/version/Version.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.version; 17 | 18 | /** 19 | * Version information for a specific component. 20 | */ 21 | public interface Version 22 | { 23 | /** 24 | * @return major version portion. 25 | */ 26 | int majorVersion(); 27 | 28 | /** 29 | * @return minor version portion. 30 | */ 31 | int minorVersion(); 32 | 33 | /** 34 | * @return patched version portion. 35 | */ 36 | int patchVersion(); 37 | 38 | /** 39 | * @return git SHA. 40 | */ 41 | String gitSha(); 42 | } 43 | -------------------------------------------------------------------------------- /aeron-annotations/src/main/java/io/aeron/version/Versioned.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.version; 17 | 18 | import java.lang.annotation.ElementType; 19 | import java.lang.annotation.Retention; 20 | import java.lang.annotation.RetentionPolicy; 21 | import java.lang.annotation.Target; 22 | 23 | /** 24 | * Annotation to indicate a version class should be generated. 25 | */ 26 | @Target({ElementType.TYPE, ElementType.CONSTRUCTOR}) 27 | @Retention(RetentionPolicy.SOURCE) 28 | public @interface Versioned 29 | { 30 | } 31 | -------------------------------------------------------------------------------- /aeron-annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | io.aeron.version.VersionProcessor 2 | io.aeron.config.ConfigProcessor 3 | io.aeron.counter.CounterProcessor 4 | -------------------------------------------------------------------------------- /aeron-archive/src/main/c/client/aeron_archive_async_connect.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_ARCHIVE_ASYNC_CONNECT_H 18 | #define AERON_ARCHIVE_ASYNC_CONNECT_H 19 | 20 | #include "aeron_archive.h" 21 | 22 | uint8_t aeron_archive_async_connect_step(aeron_archive_async_connect_t *async); 23 | 24 | #endif //AERON_ARCHIVE_ASYNC_CONNECT_H 25 | -------------------------------------------------------------------------------- /aeron-archive/src/main/c/client/aeron_archive_configuration.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "aeron_archive_configuration.h" 18 | #include "aeron_common.h" 19 | 20 | int32_t aeron_archive_semantic_version(void) 21 | { 22 | return aeron_semantic_version_compose(AERON_ARCHIVE_MAJOR_VERSION, AERON_ARCHIVE_MINOR_VERSION, AERON_ARCHIVE_PATCH_VERSION); 23 | } 24 | 25 | int32_t aeron_archive_protocol_version_with_archive_id(void) 26 | { 27 | return aeron_semantic_version_compose(1, 11, 0); 28 | } 29 | -------------------------------------------------------------------------------- /aeron-archive/src/main/c/client/aeron_archive_configuration.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_C_ARCHIVE_CONFIGURATION_H 18 | #define AERON_C_ARCHIVE_CONFIGURATION_H 19 | 20 | #include "aeron_archive_proxy.h" 21 | 22 | #define AERON_ARCHIVE_MAJOR_VERSION 1 23 | #define AERON_ARCHIVE_MINOR_VERSION 11 24 | #define AERON_ARCHIVE_PATCH_VERSION 0 25 | 26 | int32_t aeron_archive_semantic_version(void); 27 | 28 | int32_t aeron_archive_protocol_version_with_archive_id(void); 29 | 30 | #endif //AERON_C_ARCHIVE_CONFIGURATION_H 31 | -------------------------------------------------------------------------------- /aeron-archive/src/main/c/client/aeron_archive_recording_signal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_ARCHIVE_RECORDING_SIGNAL_H 18 | #define AERON_ARCHIVE_RECORDING_SIGNAL_H 19 | 20 | #include "aeron_archive.h" 21 | 22 | int aeron_archive_recording_signal_dispatch_buffer(aeron_archive_context_t *ctx, const uint8_t* buffer, size_t length); 23 | 24 | void aeron_archive_recording_signal_dispatch_signal(aeron_archive_context_t *ctx, aeron_archive_recording_signal_t *signal); 25 | 26 | #endif //AERON_ARCHIVE_RECORDING_SIGNAL_H 27 | -------------------------------------------------------------------------------- /aeron-archive/src/main/c/client/aeron_archive_replay_params.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_ARCHIVE_REPLAY_PARAMS_H 18 | #define AERON_ARCHIVE_REPLAY_PARAMS_H 19 | 20 | #include "aeron_archive.h" 21 | 22 | int aeron_archive_replay_params_copy(aeron_archive_replay_params_t *dst, aeron_archive_replay_params_t *src); 23 | 24 | bool aeron_archive_replay_params_is_bounded(aeron_archive_replay_params_t *params); 25 | 26 | #endif //AERON_ARCHIVE_REPLAY_PARAMS_H 27 | -------------------------------------------------------------------------------- /aeron-archive/src/main/cpp/client/AeronArchiveVersion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #ifndef AERON_ARCHIVE_VERSION_H 17 | #define AERON_ARCHIVE_VERSION_H 18 | 19 | #include "string" 20 | 21 | #ifdef major 22 | #undef major 23 | #endif 24 | #ifdef minor 25 | #undef minor 26 | #endif 27 | 28 | namespace aeron { namespace archive { namespace client 29 | { 30 | 31 | class AeronArchiveVersion 32 | { 33 | public: 34 | static std::string text(); 35 | static std::string gitSha(); 36 | static int major(); 37 | static int minor(); 38 | static int patch(); 39 | }; 40 | 41 | }}} 42 | 43 | #endif //AERON_ARCHIVE_VERSION_H 44 | -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/ArchiveMigrationStep.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.archive; 17 | 18 | import java.io.File; 19 | import java.io.PrintStream; 20 | 21 | interface ArchiveMigrationStep 22 | { 23 | int minimumVersion(); 24 | 25 | void migrate(PrintStream stream, ArchiveMarkFile markFile, Catalog catalog, File archiveDir); 26 | } 27 | -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/CatalogTool.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.archive; 17 | 18 | /** 19 | * Tool for inspecting and performing administrative tasks on an {@link Archive} and its contents which is described in 20 | * the {@link Catalog}. The tool delegates to {@link ArchiveTool}. 21 | */ 22 | public class CatalogTool 23 | { 24 | /** 25 | * Main method for launching the process. 26 | * 27 | * @param args passed to the process. 28 | */ 29 | public static void main(final String[] args) 30 | { 31 | ArchiveTool.main(args); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/Session.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * https://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | * 15 | */ 16 | package io.aeron.archive; 17 | 18 | /** 19 | * Sessions are created by the conductor but perform their work on a different {@link SessionWorker} potentially. After 20 | * construction sessions are safely published to the {@link SessionWorker} and thereafter interacted with only from 21 | * that thread until they are done. Once done they are closed from the conductor. 22 | */ 23 | interface Session 24 | { 25 | void abort(String reason); 26 | 27 | boolean isDone(); 28 | 29 | int doWork(); 30 | 31 | long sessionId(); 32 | 33 | void close(); 34 | } 35 | -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/checksum/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Checksums can be added to recordings so that file corruption can be detected. 19 | *

20 | * Recordings can be checksumed as they are recorded or later via {@link io.aeron.archive.ArchiveTool} checksum methods. 21 | * Checksums are generated via implementations of {@link io.aeron.archive.checksum.Checksum} interface. 22 | *

23 | * Recordings can be verified on replay or via the {@link io.aeron.archive.ArchiveTool} verify methods. 24 | */ 25 | package io.aeron.archive.checksum; -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/client/ControlResponseListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.archive.client; 17 | 18 | /** 19 | * Interface for listening to events from the archive in response to requests. 20 | */ 21 | public interface ControlResponseListener extends RecordingDescriptorConsumer, ControlEventListener 22 | { 23 | } 24 | -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/client/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * {@link io.aeron.archive.client.AeronArchive} client for communicating with a local or remote Archive. 18 | */ 19 | package io.aeron.archive.client; -------------------------------------------------------------------------------- /aeron-archive/src/main/java/io/aeron/archive/status/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Counters for tracking progress of recordings in a local Archive. 18 | */ 19 | package io.aeron.archive.status; -------------------------------------------------------------------------------- /aeron-client/README.md: -------------------------------------------------------------------------------- 1 | Aeron Client 2 | === 3 | 4 | [![Javadocs](http://www.javadoc.io/badge/io.aeron/aeron-all.svg)](http://www.javadoc.io/doc/io.aeron/aeron-all) 5 | 6 | Aeron clients are used to communicate to the media driver for the publishing of messages via publications and consuming messages of replicated publication images via subscriptions. 7 | 8 | Clients communicate over IPC to the media driver thus allowing the media driver to run out of process and be in a different language to the clients. -------------------------------------------------------------------------------- /aeron-client/src/main/c/aeron_alloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_ALLOC_H 18 | #define AERON_ALLOC_H 19 | 20 | #include 21 | 22 | int aeron_alloc_no_err(void **ptr, size_t size); 23 | int aeron_alloc(void **ptr, size_t size); 24 | int aeron_alloc_aligned(void **ptr, size_t *offset, size_t size, size_t alignment); 25 | int aeron_reallocf(void **ptr, size_t size); 26 | void aeron_free(void *ptr); 27 | 28 | #endif //AERON_ALLOC_H 29 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/aeron_client.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_CLIENT_H 18 | #define AERON_CLIENT_H 19 | 20 | #include "aeronc.h" 21 | #include "aeron_agent.h" 22 | #include "aeron_context.h" 23 | #include "aeron_client_conductor.h" 24 | 25 | typedef struct aeron_stct 26 | { 27 | aeron_client_conductor_t conductor; 28 | aeron_agent_runner_t runner; 29 | aeron_context_t *context; 30 | } 31 | aeron_t; 32 | 33 | int aeron_client_connect_to_driver(aeron_mapped_file_t *cnc_mmap, aeron_context_t *context); 34 | 35 | #endif //AERON_CLIENT_H 36 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/collections/aeron_hashing.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "collections/aeron_hashing.h" 18 | 19 | extern uint64_t aeron_hash_code(uint64_t value); 20 | 21 | extern size_t aeron_hash(uint64_t value, size_t mask); 22 | 23 | extern size_t aeron_even_hash(uint64_t value, size_t mask); 24 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/collections/aeron_map.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "collections/aeron_map.h" 18 | 19 | extern int64_t aeron_map_compound_key(int32_t high, int32_t low); 20 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/collections/aeron_map.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_AERON_MAP_H 18 | #define AERON_AERON_MAP_H 19 | 20 | #define AERON_MAP_DEFAULT_LOAD_FACTOR (0.65f) 21 | 22 | #include 23 | 24 | inline int64_t aeron_map_compound_key(int32_t high, int32_t low) 25 | { 26 | return (int64_t)(((uint64_t)high << 32) | (low)); 27 | } 28 | 29 | #endif //AERON_AERON_MAP_H 30 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_atomic.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "concurrent/aeron_atomic.h" 18 | 19 | extern bool aeron_cas_int64(volatile int64_t *dst, int64_t expected, int64_t desired); 20 | 21 | extern bool aeron_cas_uint64(volatile uint64_t *dst, uint64_t expected, uint64_t desired); 22 | 23 | extern bool aeron_cas_int32(volatile int32_t *dst, int32_t expected, int32_t desired); 24 | 25 | extern void aeron_acquire(void); 26 | 27 | extern void aeron_release(void); 28 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_atomic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_ATOMIC_H 18 | #define AERON_ATOMIC_H 19 | 20 | #include "util/aeron_platform.h" 21 | 22 | #if defined(AERON_COMPILER_GCC) && defined(AERON_CPU_X64) 23 | #include "concurrent/aeron_atomic64_gcc_x86_64.h" 24 | #elif defined(AERON_COMPILER_GCC) && defined(AERON_CPU_ARM) 25 | #include "concurrent/aeron_atomic64_c11.h" 26 | #elif defined(AERON_COMPILER_MSVC) && defined(AERON_CPU_X64) 27 | #include "concurrent/aeron_atomic64_msvc.h" 28 | #else 29 | #error Unsupported platform! 30 | #endif 31 | 32 | #endif //AERON_ATOMIC_H 33 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_concurrent_array_queue.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_CONCURRENT_ARRAY_QUEUE_H 18 | #define AERON_CONCURRENT_ARRAY_QUEUE_H 19 | 20 | typedef enum aeron_queue_offer_result_stct 21 | { 22 | AERON_OFFER_SUCCESS = 0, 23 | AERON_OFFER_ERROR = -2, 24 | AERON_OFFER_FULL = -1 25 | } 26 | aeron_queue_offer_result_t; 27 | 28 | typedef void (*aeron_queue_drain_func_t)(void *clientd, void *item); 29 | 30 | #endif //AERON_CONCURRENT_ARRAY_QUEUE_H 31 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_term_gap_filler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_TERM_GAP_FILLER_H 18 | #define AERON_TERM_GAP_FILLER_H 19 | 20 | #include 21 | #include "aeron_logbuffer_descriptor.h" 22 | 23 | bool aeron_term_gap_filler_try_fill_gap( 24 | aeron_logbuffer_metadata_t *log_meta_data, 25 | uint8_t *buffer, 26 | int32_t term_id, 27 | int32_t gap_offset, 28 | int32_t gap_length); 29 | 30 | #endif //AERON_TERM_GAP_FILLER_H 31 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_term_gap_scanner.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "concurrent/aeron_term_gap_scanner.h" 18 | 19 | extern int32_t aeron_term_gap_scanner_scan_for_gap( 20 | const uint8_t *buffer, 21 | int32_t term_id, 22 | int32_t term_offset, 23 | int32_t limit_offset, 24 | aeron_term_gap_scanner_on_gap_detected_func_t on_gap_detected, 25 | void *clientd); 26 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_term_rebuilder.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "concurrent/aeron_term_rebuilder.h" 18 | 19 | extern void aeron_term_rebuilder_insert(uint8_t *dest, const uint8_t *src, size_t length); 20 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/concurrent/aeron_term_scanner.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "concurrent/aeron_term_scanner.h" 18 | 19 | extern int32_t aeron_term_scanner_scan_for_availability( 20 | const uint8_t *buffer, int32_t term_length_left, int32_t max_length, int32_t *padding); 21 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/status/aeron_local_sockaddr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_AERON_LOCAL_SOCKADDR_H 18 | #define AERON_AERON_LOCAL_SOCKADDR_H 19 | 20 | #include 21 | #include 22 | 23 | int aeron_local_sockaddr_find_addrs( 24 | aeron_counters_reader_t *reader, 25 | int32_t channel_status_indicator_id, 26 | aeron_iovec_t *address_vec, 27 | size_t address_vec_len); 28 | 29 | #endif //AERON_AERON_LOCAL_SOCKADDR_H 30 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/util/aeron_arrayutil.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "util/aeron_arrayutil.h" 18 | 19 | extern int aeron_array_ensure_capacity( 20 | uint8_t **array, size_t element_size, size_t old_capacity, size_t new_capacity); 21 | 22 | extern void aeron_array_fast_unordered_remove( 23 | uint8_t *restrict array, size_t element_size, size_t index, size_t last_index); 24 | 25 | extern int aeron_array_add( 26 | uint8_t **array, size_t element_size, size_t new_length, uint8_t *restrict element_to_add); 27 | 28 | extern int aeron_array_remove( 29 | uint8_t **array, size_t element_size, size_t index, size_t old_length); 30 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/util/aeron_deque.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by mike on 23/01/23. 3 | // 4 | 5 | #ifndef AERON_DEQUE_H 6 | #define AERON_DEQUE_H 7 | 8 | #include 9 | #include 10 | 11 | struct aeron_deque_stct 12 | { 13 | uint8_t *data; 14 | size_t element_count; 15 | size_t element_size; 16 | size_t first_element; 17 | size_t last_element; 18 | }; 19 | typedef struct aeron_deque_stct aeron_deque_t; 20 | 21 | int aeron_deque_init(aeron_deque_t *deque, size_t initial_element_count, size_t element_size); 22 | 23 | void aeron_deque_close(aeron_deque_t *deque); 24 | 25 | /** 26 | * Add value into the deque as the last element. Will memcpy into the deque from the void pointer provided using 27 | * the specified element size. May need to allocate in order to increase the size of the dequeue. 28 | * 29 | * Errors: 30 | * ENOMEM if growing the array fails. 31 | * 32 | * @param deque to add the value too. 33 | * @param value value to be added. 34 | * @return 0 on success, -1 on failure. 35 | */ 36 | int aeron_deque_add_last(aeron_deque_t *deque, void *value); 37 | 38 | int aeron_deque_remove_first(aeron_deque_t *deque, void *value); 39 | 40 | #endif //AERON_DEQUE_H 41 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/util/aeron_env.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #if defined(__linux__) 18 | #define _BSD_SOURCE 19 | #endif 20 | 21 | #include 22 | 23 | #include "util/aeron_env.h" 24 | 25 | int aeron_env_set(const char *key, const char *val) 26 | { 27 | #if defined(WIN32) 28 | return _putenv_s(key, val); 29 | #else 30 | return setenv(key, val, 1); 31 | #endif 32 | } 33 | 34 | int aeron_env_unset(const char *key) 35 | { 36 | #if defined(WIN32) 37 | return _putenv_s(key, ""); 38 | #else 39 | return unsetenv(key); 40 | #endif 41 | } 42 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/util/aeron_env.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_AERON_ENV_H 18 | #define AERON_AERON_ENV_H 19 | 20 | int aeron_env_set(const char *key, const char *val); 21 | 22 | int aeron_env_unset(const char *key); 23 | 24 | #endif //AERON_AERON_ENV_H 25 | -------------------------------------------------------------------------------- /aeron-client/src/main/c/util/aeron_math.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "aeron_math.h" 18 | 19 | extern int32_t aeron_add_wrap_i32(int32_t a, int32_t b); 20 | extern int32_t aeron_sub_wrap_i32(int32_t a, int32_t b); 21 | extern int32_t aeron_mul_wrap_i32(int32_t a, int32_t b); 22 | -------------------------------------------------------------------------------- /aeron-client/src/main/cpp/AeronVersion.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #include "AeronVersion.h" 17 | 18 | namespace aeron 19 | { 20 | 21 | std::string AeronVersion::text() 22 | { 23 | return AERON_VERSION_TXT; 24 | } 25 | 26 | std::string AeronVersion::gitSha() 27 | { 28 | return AERON_VERSION_GITSHA; 29 | } 30 | 31 | int AeronVersion::major() 32 | { 33 | return AERON_VERSION_MAJOR; 34 | } 35 | 36 | int AeronVersion::minor() 37 | { 38 | return AERON_VERSION_MINOR; 39 | } 40 | 41 | int AeronVersion::patch() 42 | { 43 | return AERON_VERSION_PATCH; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /aeron-client/src/main/cpp/AeronVersion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #ifndef AERON_AERON_VERSION_H 17 | #define AERON_AERON_VERSION_H 18 | 19 | #include "string" 20 | #include "util/Export.h" 21 | 22 | #ifdef major 23 | #undef major 24 | #endif 25 | #ifdef minor 26 | #undef minor 27 | #endif 28 | 29 | namespace aeron 30 | { 31 | 32 | class CLIENT_EXPORT AeronVersion 33 | { 34 | public: 35 | static std::string text(); 36 | static std::string gitSha(); 37 | static int major(); 38 | static int minor(); 39 | static int patch(); 40 | }; 41 | 42 | } 43 | 44 | #endif //AERON_AERON_VERSION_H 45 | -------------------------------------------------------------------------------- /aeron-client/src/main/cpp/concurrent/NoOpIdleStrategy.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_NO_OP_IDLE_STRATEGY_H 18 | #define AERON_NO_OP_IDLE_STRATEGY_H 19 | 20 | namespace aeron { namespace concurrent { 21 | 22 | class NoOpIdleStrategy 23 | { 24 | public: 25 | NoOpIdleStrategy() = default; 26 | 27 | inline void idle(int workCount) 28 | { 29 | } 30 | 31 | inline void reset() 32 | { 33 | } 34 | 35 | inline void idle() 36 | { 37 | } 38 | 39 | private: 40 | }; 41 | 42 | }} 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /aeron-client/src/main/cpp/util/Export.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #ifndef AERON_UTIL_EXPORT_FILE_H 17 | #define AERON_UTIL_EXPORT_FILE_H 18 | 19 | #include "util/Platform.h" 20 | 21 | #ifdef AERON_COMPILER_MSVC 22 | # if defined CLIENT_SHARED 23 | # if defined DLL_EXPORT 24 | # define CLIENT_EXPORT __declspec(dllexport) 25 | # else 26 | # define CLIENT_EXPORT __declspec(dllimport) 27 | # endif 28 | # else 29 | # define CLIENT_EXPORT 30 | # endif 31 | #else 32 | # define CLIENT_EXPORT 33 | #endif 34 | 35 | #endif // AERON_UTIL_EXPORT_FILE_H -------------------------------------------------------------------------------- /aeron-client/src/main/cpp_wrapper/concurrent/NoOpIdleStrategy.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_NO_OP_IDLE_STRATEGY_H 18 | #define AERON_NO_OP_IDLE_STRATEGY_H 19 | 20 | namespace aeron { namespace concurrent { 21 | 22 | class NoOpIdleStrategy 23 | { 24 | public: 25 | NoOpIdleStrategy() = default; 26 | 27 | inline void idle(int workCount) 28 | { 29 | } 30 | 31 | inline void reset() 32 | { 33 | } 34 | 35 | inline void idle() 36 | { 37 | } 38 | 39 | private: 40 | }; 41 | 42 | }} 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/LogBuffersFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron; 17 | 18 | 19 | /** 20 | * Interface for encapsulating the strategy of mapping {@link LogBuffers} at a giving file location. 21 | */ 22 | interface LogBuffersFactory 23 | { 24 | /** 25 | * Map a log file into memory and wrap each section with a {@link org.agrona.concurrent.UnsafeBuffer}. 26 | * 27 | * @param logFileName to be mapped into memory. 28 | * @return a representation of the mapped log buffer. 29 | */ 30 | LogBuffers map(String logFileName); 31 | } 32 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/MappedLogBuffersFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron; 17 | 18 | /** 19 | * Default factory for mapping log buffers in the client. 20 | */ 21 | class MappedLogBuffersFactory implements LogBuffersFactory 22 | { 23 | public LogBuffers map(final String logFileName) 24 | { 25 | return new LogBuffers(logFileName); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/command/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Command message codec flyweights for the communication protocol between Aeron clients and the Media Driver. 18 | */ 19 | package io.aeron.command; -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/exceptions/ConcurrentConcludeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.exceptions; 17 | 18 | /** 19 | * Conclude has been called concurrently on a Context. The caller that receives this should not close the 20 | * concluded context as it will be owned by another caller. 21 | */ 22 | public class ConcurrentConcludeException extends AeronException 23 | { 24 | private static final long serialVersionUID = 684839776662091577L; 25 | } 26 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/exceptions/ConfigurationException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.exceptions; 17 | 18 | /** 19 | * Indicates an invalid configuration option has been provided. 20 | */ 21 | public class ConfigurationException extends AeronException 22 | { 23 | private static final long serialVersionUID = 2545086690221965112L; 24 | 25 | /** 26 | * Construct an exception with detail for the configuration error. 27 | * 28 | * @param message detail for the configuration error. 29 | */ 30 | public ConfigurationException(final String message) 31 | { 32 | super(message); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/exceptions/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Common exception used by Aeron which are all unchecked. 18 | */ 19 | package io.aeron.exceptions; -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/logbuffer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Package of classes for working with message streams encoded into the log buffers. 18 | */ 19 | package io.aeron.logbuffer; -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * {@link io.aeron.Aeron} client that is used to communicate to a local Media Driver for the publication and 18 | * subscription to message streams. 19 | *

20 | * A client can be created by invoking {@link io.aeron.Aeron#connect()} for default setting or via 21 | * {@link io.aeron.Aeron#connect(io.aeron.Aeron.Context)} to override the defaults or system properties. 22 | */ 23 | package io.aeron; -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/protocol/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Flyweight classes for encoding and decoding network protocol messages. 18 | */ 19 | package io.aeron.protocol; -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/security/AuthenticatorSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.security; 17 | 18 | import java.util.function.Supplier; 19 | 20 | /** 21 | * Used to supply instances of {@link Authenticator}. 22 | */ 23 | @FunctionalInterface 24 | public interface AuthenticatorSupplier extends Supplier 25 | { 26 | } 27 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/security/AuthorisationServiceSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.security; 17 | 18 | import java.util.function.Supplier; 19 | 20 | /** 21 | * Used to supply instances of {@link AuthorisationService}. 22 | */ 23 | @FunctionalInterface 24 | public interface AuthorisationServiceSupplier extends Supplier 25 | { 26 | } 27 | -------------------------------------------------------------------------------- /aeron-client/src/main/java/io/aeron/status/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Counters for tracking status relevant to client activity. 18 | */ 19 | package io.aeron.status; -------------------------------------------------------------------------------- /aeron-client/src/test/c/util/aeron_bitutil_test.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include 18 | 19 | extern "C" 20 | { 21 | #include "util/aeron_bitutil.h" 22 | } 23 | 24 | class BitutilTest : public testing::Test 25 | { 26 | public: 27 | BitutilTest() = default; 28 | }; 29 | 30 | TEST_F(BitutilTest, shouldCountTrailingZeros64Bit) 31 | { 32 | for (uint64_t i = 0; i < 64; i++) 33 | { 34 | uint64_t value = UINT64_C(1) << i; 35 | EXPECT_EQ(aeron_number_of_trailing_zeroes_u64(value), static_cast(i)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /aeron-client/src/test/cpp/ClientConductorFixture.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "ClientConductorFixture.h" 18 | 19 | MockClientConductorHandlers::MockClientConductorHandlers() = default; 20 | 21 | MockClientConductorHandlers::~MockClientConductorHandlers() = default; 22 | -------------------------------------------------------------------------------- /aeron-client/src/test/cpp/concurrent/MockAtomicBuffer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "MockAtomicBuffer.h" 18 | 19 | namespace aeron { namespace concurrent { namespace mock { 20 | 21 | MockAtomicBuffer::MockAtomicBuffer(std::uint8_t *buffer, size_t length) : 22 | AtomicBuffer(buffer, length), 23 | m_realBuffer(buffer, length) 24 | { 25 | } 26 | 27 | MockAtomicBuffer::~MockAtomicBuffer() = default; 28 | 29 | }}} 30 | -------------------------------------------------------------------------------- /aeron-cluster/src/main/java/io/aeron/cluster/PriorityHeapTimerServiceSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.cluster; 17 | 18 | import java.util.concurrent.TimeUnit; 19 | 20 | /** 21 | * Supplies instances of the {@link PriorityHeapTimerService}. 22 | */ 23 | public class PriorityHeapTimerServiceSupplier implements TimerServiceSupplier 24 | { 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | public TimerService newInstance(final TimeUnit timeUnit, final TimerService.TimerHandler timerHandler) 29 | { 30 | return new PriorityHeapTimerService(timerHandler); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /aeron-cluster/src/main/java/io/aeron/cluster/client/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * {@link io.aeron.cluster.client.AeronCluster} clients interact with fault-tolerant services running in the cluster. 19 | */ 20 | package io.aeron.cluster.client; -------------------------------------------------------------------------------- /aeron-cluster/src/main/java/io/aeron/cluster/service/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Services implement {@link io.aeron.cluster.service.ClusteredService} and have their lifecycle managed by the 19 | * {@link io.aeron.cluster.service.Cluster}. This is where application logic is contained. 20 | */ 21 | package io.aeron.cluster.service; -------------------------------------------------------------------------------- /aeron-cluster/src/test/java/io/aeron/cluster/ClusterTestConstants.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.cluster; 17 | 18 | class ClusterTestConstants 19 | { 20 | static final String INGRESS_ENDPOINT = "localhost:20000"; 21 | static final String INGRESS_ENDPOINTS = "0=" + INGRESS_ENDPOINT; 22 | static final String CLUSTER_MEMBERS = 23 | "0," + INGRESS_ENDPOINT + ",localhost:20001,localhost:20002,localhost:0,localhost:8010"; 24 | static final long CATALOG_CAPACITY = 1024 * 1024; 25 | } 26 | -------------------------------------------------------------------------------- /aeron-cluster/src/test/java/io/aeron/cluster/PriorityHeapTimerServiceClusterTimeTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.cluster; 17 | 18 | class PriorityHeapTimerServiceClusterTimeTest extends ClusterTimerTest 19 | { 20 | TimerServiceSupplier timerServiceSupplier() 21 | { 22 | return new PriorityHeapTimerServiceSupplier(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /aeron-cluster/src/test/java/io/aeron/cluster/WheelTimerServiceClusterTimeTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.cluster; 17 | 18 | import java.util.concurrent.TimeUnit; 19 | 20 | class WheelTimerServiceClusterTimeTest extends ClusterTimerTest 21 | { 22 | TimerServiceSupplier timerServiceSupplier() 23 | { 24 | return new WheelTimerServiceSupplier(TimeUnit.MILLISECONDS, 0, 8, 128); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /aeron-cluster/src/test/resources/v1_42_x/node-state.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeron-io/aeron/545afee9326746c2cd43ecf6ded4b07d64c7e138/aeron-cluster/src/test/resources/v1_42_x/node-state.dat -------------------------------------------------------------------------------- /aeron-config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include(CMakeFindDependencyMacro) 4 | find_package(Threads) 5 | find_package(Java) 6 | 7 | include("${CMAKE_CURRENT_LIST_DIR}/aeron-targets.cmake") 8 | 9 | check_required_components(aeron) -------------------------------------------------------------------------------- /aeron-driver/README.md: -------------------------------------------------------------------------------- 1 | Aeron Media Driver 2 | === 3 | 4 | [![Javadocs](http://www.javadoc.io/badge/io.aeron/aeron-all.svg)](http://www.javadoc.io/doc/io.aeron/aeron-all) 5 | 6 | The media driver can run in, or out of, process with aeron clients. It is responsible for replicating publications 7 | to appear as images over a network, aka the media. 8 | -------------------------------------------------------------------------------- /aeron-driver/src/main/c/aeron_driver_version.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #include "aeron_driver_version.h" 17 | 18 | const char *aeron_driver_version_text(void) 19 | { 20 | return AERON_VERSION_TXT; 21 | } 22 | 23 | const char *aeron_driver_version_git_sha(void) 24 | { 25 | return AERON_VERSION_GITSHA; 26 | } 27 | 28 | int aeron_driver_version_major(void) 29 | { 30 | return AERON_VERSION_MAJOR; 31 | } 32 | 33 | int aeron_driver_version_minor(void) 34 | { 35 | return AERON_VERSION_MINOR; 36 | } 37 | 38 | int aeron_driver_version_patch(void) 39 | { 40 | return AERON_VERSION_PATCH; 41 | } 42 | -------------------------------------------------------------------------------- /aeron-driver/src/main/c/aeron_driver_version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_DRIVER_VERSION_H 18 | #define AERON_DRIVER_VERSION_H 19 | 20 | #ifdef __cplusplus 21 | extern "C" 22 | { 23 | #endif 24 | 25 | const char *aeron_driver_version_text(void); 26 | const char *aeron_driver_version_git_sha(void); 27 | int aeron_driver_version_major(void); 28 | int aeron_driver_version_minor(void); 29 | int aeron_driver_version_patch(void); 30 | 31 | #ifdef __cplusplus 32 | } 33 | #endif 34 | 35 | #endif //AERON_DRIVER_VERSION_H 36 | -------------------------------------------------------------------------------- /aeron-driver/src/main/c/aeron_termination_validator.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | #ifndef AERON_TERMINATION_VALIDATOR_H 17 | #define AERON_TERMINATION_VALIDATOR_H 18 | 19 | #include "aeron_driver_common.h" 20 | #include "aeronmd.h" 21 | 22 | bool aeron_driver_termination_validator_default_allow(void *state, uint8_t *token_buffer, int32_t token_length); 23 | bool aeron_driver_termination_validator_default_deny(void *state, uint8_t *token_buffer, int32_t token_length); 24 | 25 | aeron_driver_termination_validator_func_t aeron_driver_termination_validator_load(const char *validator_name); 26 | 27 | #endif //AERON_TERMINATION_VALIDATOR_H 28 | -------------------------------------------------------------------------------- /aeron-driver/src/main/c/concurrent/aeron_logbuffer_unblocker.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_LOG_BUFFER_UNBLOCK_H 18 | #define AERON_LOG_BUFFER_UNBLOCK_H 19 | 20 | #include "util/aeron_fileutil.h" 21 | #include "concurrent/aeron_term_unblocker.h" 22 | 23 | bool aeron_logbuffer_unblocker_unblock( 24 | aeron_mapped_buffer_t *term_buffers, aeron_logbuffer_metadata_t *log_meta_data, int64_t blocked_position); 25 | 26 | #endif //AERON_LOG_BUFFER_UNBLOCK_H 27 | -------------------------------------------------------------------------------- /aeron-driver/src/main/c/media/aeron_timestamps.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef AERON_TIMESTAMPS_H 18 | #define AERON_TIMESTAMPS_H 19 | 20 | #include 21 | #include 22 | 23 | void aeron_timestamps_set_timestamp( 24 | struct timespec *timestamp, 25 | int32_t offset, 26 | uint8_t *frame, 27 | size_t frame_length); 28 | 29 | #endif // AERON_TIMESTAMPS_H 30 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/LossHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.driver; 17 | 18 | /** 19 | * Handler for dealing with detected loss on a message stream. 20 | */ 21 | @FunctionalInterface 22 | public interface LossHandler 23 | { 24 | /** 25 | * Called when a gap in the message stream has been detected. 26 | * 27 | * @param termId for the gap 28 | * @param termOffset for the beginning of the gap 29 | * @param length of the gap 30 | */ 31 | void onGapDetected(int termId, int termOffset, int length); 32 | } 33 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/MaxMulticastFlowControlSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.driver; 17 | 18 | import io.aeron.driver.media.UdpChannel; 19 | 20 | /** 21 | * Supplier of {@link MaxMulticastFlowControl} strategy implementations. 22 | */ 23 | public class MaxMulticastFlowControlSupplier implements FlowControlSupplier 24 | { 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | public FlowControl newInstance(final UdpChannel udpChannel, final int streamId, final long registrationId) 29 | { 30 | return new MaxMulticastFlowControl(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/MinMulticastFlowControlSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.driver; 17 | 18 | import io.aeron.driver.media.UdpChannel; 19 | 20 | /** 21 | * Supplier of {@link MinMulticastFlowControl} strategy implementations. 22 | */ 23 | public class MinMulticastFlowControlSupplier implements FlowControlSupplier 24 | { 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | public FlowControl newInstance(final UdpChannel udpChannel, final int streamId, final long registrationId) 29 | { 30 | return new MinMulticastFlowControl(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/RetransmitSender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.driver; 17 | 18 | /** 19 | * Handler for sending a retransmit. 20 | */ 21 | @FunctionalInterface 22 | public interface RetransmitSender 23 | { 24 | /** 25 | * Called when a frame should be sent to request the retransmission of data. 26 | * 27 | * @param termId containing the data to NAK. 28 | * @param termOffset of the data to NAK. 29 | * @param length of the data to NAK. 30 | */ 31 | void resend(int termId, int termOffset, int length); 32 | } 33 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/TaggedMulticastFlowControlSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.driver; 17 | 18 | import io.aeron.driver.media.UdpChannel; 19 | 20 | /** 21 | * Supplier of {@link TaggedMulticastFlowControl} implementation strategies. 22 | */ 23 | public class TaggedMulticastFlowControlSupplier implements FlowControlSupplier 24 | { 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | public FlowControl newInstance(final UdpChannel udpChannel, final int streamId, final long registrationId) 29 | { 30 | return new TaggedMulticastFlowControl(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/buffer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Encapsulates the creation and management of buffers used to contain the log buffers. 18 | */ 19 | package io.aeron.driver.buffer; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/exceptions/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * {@link io.aeron.driver.MediaDriver} specific exceptions which are all unchecked. 18 | */ 19 | package io.aeron.driver.exceptions; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/ext/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Package for extending the behaviour of the driver with features such as debug endpoints and congestion control 18 | * implementations. 19 | */ 20 | package io.aeron.driver.ext; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/media/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Media, such as UDP, specific implementations used by the driver. 18 | */ 19 | package io.aeron.driver.media; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * The {@link io.aeron.driver.MediaDriver} manages sending and receiving from the underlying media and handling 18 | * request from the Aeron clients. The media driver can run in-process, or out of process, from the Aeron clients. 19 | */ 20 | package io.aeron.driver; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/reports/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Reports of driver activity such the {@link io.aeron.driver.reports.LossReport} which tracks loss per stream. 18 | */ 19 | package io.aeron.driver.reports; -------------------------------------------------------------------------------- /aeron-driver/src/main/java/io/aeron/driver/status/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Status counters that track progress or events experienced by the driver. 18 | */ 19 | package io.aeron.driver.status; -------------------------------------------------------------------------------- /aeron-driver/src/main/resources/aeron-ipc.properties: -------------------------------------------------------------------------------- 1 | aeron.ipc.mtu.length=8k 2 | aeron.threading.mode=SHARED 3 | aeron.shared.idle.strategy=spin 4 | agrona.disable.bounds.checks=true 5 | -------------------------------------------------------------------------------- /aeron-driver/src/main/resources/aeron-throughput.properties: -------------------------------------------------------------------------------- 1 | aeron.term.buffer.sparse.file=false 2 | aeron.mtu.length=8k 3 | aeron.ipc.mtu.length=8k 4 | aeron.socket.so_sndbuf=2m 5 | aeron.socket.so_rcvbuf=2m 6 | aeron.rcv.initial.window.length=2m 7 | agrona.disable.bounds.checks=true 8 | -------------------------------------------------------------------------------- /aeron-driver/src/main/resources/debug-loss-10.properties: -------------------------------------------------------------------------------- 1 | aeron.SendChannelEndpoint.supplier=io.aeron.driver.ext.DebugSendChannelEndpointSupplier 2 | aeron.ReceiveChannelEndpoint.supplier=io.aeron.driver.ext.DebugReceiveChannelEndpointSupplier 3 | aeron.debug.receive.data.loss.rate=0.10 4 | aeron.debug.receive.data.loss.seed=-1 5 | -------------------------------------------------------------------------------- /aeron-driver/src/main/resources/high-stream-count.properties: -------------------------------------------------------------------------------- 1 | aeron.socket.so_sndbuf=2m 2 | aeron.socket.so_rcvbuf=2m 3 | aeron.term.buffer.length=256k 4 | aeron.conductor.idle.strategy=spin 5 | aeron.term.buffer.sparse.file=true 6 | agrona.disable.bounds.checks=true 7 | -------------------------------------------------------------------------------- /aeron-driver/src/main/resources/low-latency.properties: -------------------------------------------------------------------------------- 1 | aeron.term.buffer.sparse.file=false 2 | aeron.pre.touch.mapped.memory=true 3 | aeron.socket.so_sndbuf=2m 4 | aeron.socket.so_rcvbuf=2m 5 | aeron.rcv.initial.window.length=2m 6 | aeron.threading.mode=DEDICATED 7 | aeron.sender.idle.strategy=noop 8 | aeron.receiver.idle.strategy=noop 9 | aeron.conductor.idle.strategy=spin 10 | agrona.disable.bounds.checks=true 11 | -------------------------------------------------------------------------------- /aeron-samples/scripts/aeron-stat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.AeronStat "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/aeron-stat.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.AeronStat %* -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/archiving-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 \ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 \ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 \ 24 | io.aeron.archive.ArchivingMediaDriver "$@" 25 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/archiving-media-driver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 ^ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 ^ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 ^ 24 | io.aeron.archive.ArchivingMediaDriver %* 25 | 26 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/high-throughput-archive.properties: -------------------------------------------------------------------------------- 1 | aeron.archive.dir=../../build/archive 2 | aeron.archive.threading.mode=DEDICATED 3 | aeron.archive.file.sync.level=0 4 | aeron.archive.file.io.max.length=1m 5 | aeron.archive.segment.file.length=1g 6 | aeron.spies.simulate.connection=true 7 | aeron.threading.mode=DEDICATED 8 | aeron.term.buffer.sparse.file=false 9 | aeron.mtu.length=8k 10 | aeron.ipc.mtu.length=8k 11 | aeron.socket.so_sndbuf=2m 12 | aeron.socket.so_rcvbuf=2m 13 | aeron.rcv.initial.window.length=2m 14 | aeron.sender.idle.strategy=noop 15 | aeron.receiver.idle.strategy=noop 16 | aeron.conductor.idle.strategy=spin 17 | agrona.disable.bounds.checks=true -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/lightweight-archive.properties: -------------------------------------------------------------------------------- 1 | aeron.archive.dir=../../build/archive 2 | aeron.archive.threading.mode=SHARED 3 | aeron.archive.file.sync.level=0 4 | aeron.archive.file.io.max.length=1m 5 | aeron.spies.simulate.connection=true 6 | aeron.threading.mode=INVOKER 7 | aeron.term.buffer.sparse.file=true 8 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/logging-archiving-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java-logging" \ 21 | -Daeron.event.log=all \ 22 | -Daeron.event.log=admin \ 23 | -Daeron.event.archive.log=all \ 24 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 \ 25 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 \ 26 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 \ 27 | ${JVM_OPTS} io.aeron.archive.ArchivingMediaDriver "$@" 28 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/logging-archiving-media-driver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java-logging" ^ 21 | -Daeron.event.log=admin ^ 22 | -Daeron.event.archive.log=all ^ 23 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 ^ 24 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 ^ 25 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 ^ 26 | %JVM_OPTS% io.aeron.archive.ArchivingMediaDriver %* 27 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/recorded-basic-publisher: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 \ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 \ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 \ 24 | io.aeron.samples.archive.RecordedBasicPublisher 25 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/recorded-basic-publisher.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 ^ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 ^ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 ^ 24 | io.aeron.samples.archive.RecordedBasicPublisher -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/recording-replicator: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | io.aeron.samples.archive.RecordingReplicator "$@" 22 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/recording-replicator.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | io.aeron.samples.archive.RecordingReplicator %* 22 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/replayed-basic-subscriber: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 \ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 \ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 \ 24 | io.aeron.samples.archive.ReplayedBasicSubscriber 25 | -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/replayed-basic-subscriber.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Daeron.archive.control.channel=aeron:udp?endpoint=localhost:8010 ^ 22 | -Daeron.archive.replication.channel=aeron:udp?endpoint=localhost:0 ^ 23 | -Daeron.archive.control.response.channel=aeron:udp?endpoint=localhost:0 ^ 24 | io.aeron.samples.archive.ReplayedBasicSubscriber -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/segment-inspector: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" io.aeron.samples.archive.SegmentInspector "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/segment-inspector.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" io.aeron.samples.archive.SegmentInspector %* -------------------------------------------------------------------------------- /aeron-samples/scripts/archive/standard-archive.properties: -------------------------------------------------------------------------------- 1 | aeron.archive.dir=../../build/archive 2 | aeron.archive.threading.mode=SHARED 3 | aeron.archive.file.sync.level=0 4 | aeron.archive.file.io.max.length=1m 5 | aeron.spies.simulate.connection=true 6 | aeron.threading.mode=SHARED 7 | aeron.term.buffer.sparse.file=true 8 | -------------------------------------------------------------------------------- /aeron-samples/scripts/backlog-stat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.BacklogStat -------------------------------------------------------------------------------- /aeron-samples/scripts/backlog-stat.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.BacklogStat -------------------------------------------------------------------------------- /aeron-samples/scripts/basic-publisher: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.BasicPublisher -------------------------------------------------------------------------------- /aeron-samples/scripts/basic-publisher.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.BasicPublisher -------------------------------------------------------------------------------- /aeron-samples/scripts/basic-subscriber: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.BasicSubscriber -------------------------------------------------------------------------------- /aeron-samples/scripts/basic-subscriber.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.BasicSubscriber -------------------------------------------------------------------------------- /aeron-samples/scripts/cluster/remove-namespaces: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | sudo ip netns delete ns_node0 19 | sudo ip netns delete ns_node1 20 | sudo ip netns delete ns_node2 21 | sudo ip link delete br_a 22 | sudo ip link delete br_b 23 | 24 | 25 | -------------------------------------------------------------------------------- /aeron-samples/scripts/cluster/script-common: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ## 4 | ## Copyright 2014-2025 Real Logic Limited. 5 | ## 6 | ## Licensed under the Apache License, Version 2.0 (the "License"); 7 | ## you may not use this file except in compliance with the License. 8 | ## You may obtain a copy of the License at 9 | ## 10 | ## https://www.apache.org/licenses/LICENSE-2.0 11 | ## 12 | ## Unless required by applicable law or agreed to in writing, software 13 | ## distributed under the License is distributed on an "AS IS" BASIS, 14 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | ## See the License for the specific language governing permissions and 16 | ## limitations under the License. 17 | ## 18 | 19 | if [ -z "${JAVA_HOME}" ]; then 20 | echo "Please set the JAVA_HOME environment variable" 21 | exit 1 22 | fi 23 | 24 | VERSION=$(cat ../../../version.txt) 25 | 26 | JDK_VERSION=$(${JAVA_HOME}/bin/java -version 2>&1 | awk -F '"' '/version/ {print $2}') 27 | 28 | ADD_OPENS="--add-opens java.base/jdk.internal.misc=ALL-UNNAMED --add-opens java.base/java.util.zip=ALL-UNNAMED" 29 | -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-claim-ipc-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.sample.messageLength=32 \ 23 | ${JVM_OPTS} io.aeron.samples.EmbeddedBufferClaimIpcThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-claim-ipc-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.messageLength=32 ^ 23 | %JVM_OPTS% io.aeron.samples.EmbeddedBufferClaimIpcThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-dual-exclusive-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.sample.messageLength=32 \ 24 | -Daeron.sample.messages=500000000 \ 25 | -Daeron.term.buffer.sparse.file=false \ 26 | -Daeron.mtu.length=8k \ 27 | -Daeron.socket.so_sndbuf=2m \ 28 | -Daeron.socket.so_rcvbuf=2m \ 29 | -Daeron.rcv.initial.window.length=2m \ 30 | ${JVM_OPTS} io.aeron.samples.EmbeddedDualExclusiveThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-dual-exclusive-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.sample.messageLength=32 ^ 24 | -Daeron.sample.messages=500000000 ^ 25 | -Daeron.term.buffer.sparse.file=false ^ 26 | -Daeron.mtu.length=8k ^ 27 | -Daeron.socket.so_sndbuf=2m ^ 28 | -Daeron.socket.so_rcvbuf=2m ^ 29 | -Daeron.rcv.initial.window.length=2m ^ 30 | %JVM_OPTS% io.aeron.samples.EmbeddedDualExclusiveThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-claim-ipc-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.sample.messageLength=32 \ 23 | -Daeron.ipc.mtu.length=8k \ 24 | ${JVM_OPTS} io.aeron.samples.EmbeddedExclusiveBufferClaimIpcThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-claim-ipc-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.messageLength=32 ^ 23 | -Daeron.ipc.mtu.length=8k ^ 24 | %JVM_OPTS% io.aeron.samples.EmbeddedExclusiveBufferClaimIpcThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-ipc-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.sample.messageLength=32 \ 23 | -Daeron.ipc.mtu.length=8k \ 24 | ${JVM_OPTS} io.aeron.samples.EmbeddedExclusiveIpcThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-ipc-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.messageLength=32 ^ 23 | -Daeron.ipc.mtu.length=8k ^ 24 | %JVM_OPTS% io.aeron.samples.EmbeddedExclusiveIpcThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-spied-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.sample.messageLength=32 \ 24 | -Daeron.sample.messages=500000000 \ 25 | -Daeron.term.buffer.sparse.file=false \ 26 | -Daeron.mtu.length=8k \ 27 | -Daeron.socket.so_sndbuf=2m \ 28 | -Daeron.socket.so_rcvbuf=2m \ 29 | -Daeron.rcv.initial.window.length=2m \ 30 | ${JVM_OPTS} io.aeron.samples.EmbeddedExclusiveSpiedThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-spied-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.sample.messageLength=32 ^ 24 | -Daeron.sample.messages=500000000 ^ 25 | -Daeron.term.buffer.sparse.file=false ^ 26 | -Daeron.mtu.length=8k ^ 27 | -Daeron.socket.so_sndbuf=2m ^ 28 | -Daeron.socket.so_rcvbuf=2m ^ 29 | -Daeron.rcv.initial.window.length=2m ^ 30 | %JVM_OPTS% io.aeron.samples.EmbeddedExclusiveSpiedThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.sample.messageLength=32 \ 24 | -Daeron.sample.messages=500000000 \ 25 | -Daeron.term.buffer.sparse.file=false \ 26 | -Daeron.mtu.length=8k \ 27 | -Daeron.socket.so_sndbuf=2m \ 28 | -Daeron.socket.so_rcvbuf=2m \ 29 | -Daeron.rcv.initial.window.length=2m \ 30 | ${JVM_OPTS} io.aeron.samples.EmbeddedExclusiveThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.sample.messageLength=32 ^ 24 | -Daeron.sample.messages=500000000 ^ 25 | -Daeron.term.buffer.sparse.file=false ^ 26 | -Daeron.mtu.length=8k ^ 27 | -Daeron.socket.so_sndbuf=2m ^ 28 | -Daeron.socket.so_rcvbuf=2m ^ 29 | -Daeron.rcv.initial.window.length=2m ^ 30 | %JVM_OPTS% io.aeron.samples.EmbeddedExclusiveThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-vectored-ipc-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.sample.messageLength=32 \ 24 | -Daeron.ipc.mtu.length=8k \ 25 | ${JVM_OPTS} io.aeron.samples.EmbeddedExclusiveVectoredIpcThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-exclusive-vectored-ipc-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.sample.messageLength=32 ^ 24 | -Daeron.ipc.mtu.length=8k ^ 25 | %JVM_OPTS% io.aeron.samples.EmbeddedExclusiveVectoredIpcThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-ipc-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.sample.messageLength=32 \ 23 | -Daeron.ipc.mtu.length=8k \ 24 | ${JVM_OPTS} io.aeron.samples.EmbeddedIpcThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-ipc-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.messageLength=32 ^ 23 | -Daeron.ipc.mtu.length=8k ^ 24 | %JVM_OPTS% io.aeron.samples.EmbeddedIpcThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-ping-pong: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.term.buffer.sparse.file=false \ 24 | -Daeron.pre.touch.mapped.memory=true \ 25 | -Daeron.sample.messageLength=32 \ 26 | -Daeron.sample.messages=1000000 \ 27 | -Daeron.sample.exclusive.publications=true \ 28 | ${JVM_OPTS} io.aeron.samples.EmbeddedPingPong "$@" 29 | -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-ping-pong.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.pre.touch.mapped.memory=true ^ 24 | -Daeron.term.buffer.sparse.file=false ^ 25 | -Daeron.sample.messageLength=32 ^ 26 | -Daeron.sample.messages=1000000 ^ 27 | -Daeron.sample.exclusive.publications=true ^ 28 | %JVM_OPTS% io.aeron.samples.EmbeddedPingPong %* -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-throughput: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | -Dagrona.disable.bounds.checks=true \ 23 | -Daeron.sample.messageLength=32 \ 24 | -Daeron.sample.messages=500000000 \ 25 | -Daeron.term.buffer.sparse.file=false \ 26 | -Daeron.mtu.length=8k \ 27 | -Daeron.socket.so_sndbuf=2m \ 28 | -Daeron.socket.so_rcvbuf=2m \ 29 | -Daeron.rcv.initial.window.length=2m \ 30 | ${JVM_OPTS} io.aeron.samples.EmbeddedThroughput "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/embedded-throughput.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | -Dagrona.disable.bounds.checks=true ^ 23 | -Daeron.sample.messageLength=32 ^ 24 | -Daeron.sample.messages=500000000 ^ 25 | -Daeron.term.buffer.sparse.file=false ^ 26 | -Daeron.mtu.length=8k ^ 27 | -Daeron.socket.so_sndbuf=2m ^ 28 | -Daeron.socket.so_rcvbuf=2m ^ 29 | -Daeron.rcv.initial.window.length=2m ^ 30 | %JVM_OPTS% io.aeron.samples.EmbeddedThroughput %* -------------------------------------------------------------------------------- /aeron-samples/scripts/error-stat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.ErrorStat -------------------------------------------------------------------------------- /aeron-samples/scripts/error-stat.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.ErrorStat -------------------------------------------------------------------------------- /aeron-samples/scripts/file-receiver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.FileReceiver "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/file-receiver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.FileReceiver %* -------------------------------------------------------------------------------- /aeron-samples/scripts/file-sender: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.FileSender "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/file-sender.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.FileSender %* -------------------------------------------------------------------------------- /aeron-samples/scripts/ipc-c-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | AERON_BUILD_DIR=../../cppbuild/Release 19 | 20 | export AERON_TERM_BUFFER_SPARSE_FILE="0" 21 | export AERON_MTU_LENGTH="8k" 22 | export AERON_THREADING_MODE="SHARED" 23 | export AERON_SHARED_IDLE_STRATEGY="spin" 24 | 25 | ${AERON_BUILD_DIR}/binaries/aeronmd 26 | -------------------------------------------------------------------------------- /aeron-samples/scripts/java-common.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | @echo off 17 | 18 | if "%JAVA_HOME%" == "" ( 19 | echo "Please set the JAVA_HOME environment variable" 20 | exit /b 1 21 | ) 22 | 23 | set /p VERSION=<"%~dp0\..\..\version.txt" 24 | 25 | set JAVA_OPTIONS=^ 26 | -XX:+UnlockExperimentalVMOptions ^ 27 | -XX:+TrustFinalNonStaticFields ^ 28 | -XX:+UnlockDiagnosticVMOptions ^ 29 | -XX:GuaranteedSafepointInterval=300000 ^ 30 | -XX:+UseParallelGC 31 | 32 | set ADD_OPENS=^ 33 | --add-opens java.base/jdk.internal.misc=ALL-UNNAMED ^ 34 | --add-opens java.base/java.util.zip=ALL-UNNAMED 35 | -------------------------------------------------------------------------------- /aeron-samples/scripts/linux-qdisc-basic: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | PORT_TO_FILTER=20121 19 | 20 | sudo tc qdisc del dev lo root 21 | sudo tc qdisc add dev lo root handle 1: prio 22 | sudo tc filter add dev lo protocol ip parent 1: prio 1 u32 match ip dport ${PORT_TO_FILTER} 0xffff match ip protocol 17 0xff flowid 1:1 23 | sudo tc qdisc add dev lo parent 1:1 handle 20: netem loss 5% delay 10ms 24 | tc qdisc show dev lo 25 | -------------------------------------------------------------------------------- /aeron-samples/scripts/log-inspector: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.LogInspector "$@" -------------------------------------------------------------------------------- /aeron-samples/scripts/log-inspector.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.LogInspector %* -------------------------------------------------------------------------------- /aeron-samples/scripts/logging-c-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | AERON_BUILD_DIR=../../cppbuild/Release 19 | 20 | export AERON_EVENT_LOG="all" 21 | 22 | ${AERON_BUILD_DIR}/binaries/aeronmd "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/logging-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java-logging" \ 21 | -Daeron.event.log=all \ 22 | ${JVM_OPTS} io.aeron.driver.MediaDriver "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/logging-media-driver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java-logging" ^ 21 | -Daeron.event.log=all ^ 22 | %JVM_OPTS% io.aeron.driver.MediaDriver %* 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/loss-rate-c-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | AERON_BUILD_DIR=../../cppbuild/Release 19 | 20 | export AERON_UDP_CHANNEL_INCOMING_INTERCEPTORS="loss" 21 | export AERON_UDP_CHANNEL_TRANSPORT_BINDINGS_LOSS_ARGS="rate=0.2|recv-msg-mask=0xF" 22 | 23 | ${AERON_BUILD_DIR}/binaries/aeronmd "$@" 24 | -------------------------------------------------------------------------------- /aeron-samples/scripts/loss-stat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.LossStat -------------------------------------------------------------------------------- /aeron-samples/scripts/loss-stat.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.LossStat -------------------------------------------------------------------------------- /aeron-samples/scripts/low-latency-c-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | AERON_BUILD_DIR=../../cppbuild/Release 19 | 20 | export AERON_TERM_BUFFER_SPARSE_FILE="0" 21 | export AERON_SOCKET_SO_RCVBUF="2m" 22 | export AERON_SOCKET_SO_SNDBUF="2m" 23 | export AERON_RCV_INITIAL_WINDOW_LENGTH="2m" 24 | export AERON_THREADING_MODE="DEDICATED" 25 | export AERON_CONDUCTOR_IDLE_STRATEGY="spin" 26 | export AERON_SENDER_IDLE_STRATEGY="noop" 27 | export AERON_RECEIVER_IDLE_STRATEGY="noop" 28 | export AERON_NETWORK_PUBLICATION_MAX_MESSAGES_PER_SEND="2" 29 | export AERON_PRINT_CONFIGURATION="1" 30 | 31 | ${AERON_BUILD_DIR}/binaries/aeronmd 32 | -------------------------------------------------------------------------------- /aeron-samples/scripts/low-latency-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.driver.MediaDriver \ 21 | low-latency.properties "$@" 22 | -------------------------------------------------------------------------------- /aeron-samples/scripts/low-latency-media-driver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.driver.MediaDriver ^ 21 | low-latency.properties %* 22 | -------------------------------------------------------------------------------- /aeron-samples/scripts/media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.driver.MediaDriver "$@" 21 | -------------------------------------------------------------------------------- /aeron-samples/scripts/media-driver.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.driver.MediaDriver %* 21 | -------------------------------------------------------------------------------- /aeron-samples/scripts/ping: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Daeron.sample.messages=1000000 \ 22 | -Daeron.sample.messageLength=32 \ 23 | -Dagrona.disable.bounds.checks=true \ 24 | -Daeron.pre.touch.mapped.memory=true \ 25 | -Daeron.sample.exclusive.publications=true \ 26 | ${JVM_OPTS} io.aeron.samples.Ping -------------------------------------------------------------------------------- /aeron-samples/scripts/ping.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.pre.touch.mapped.memory=true ^ 23 | -Daeron.sample.messages=1000000 ^ 24 | -Daeron.sample.messageLength=32 ^ 25 | -Daeron.sample.exclusive.publications=true ^ 26 | %JVM_OPTS% io.aeron.samples.Ping -------------------------------------------------------------------------------- /aeron-samples/scripts/pong: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.pre.touch.mapped.memory=true \ 23 | -Daeron.sample.exclusive.publications=true \ 24 | ${JVM_OPTS} io.aeron.samples.Pong -------------------------------------------------------------------------------- /aeron-samples/scripts/pong.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.pre.touch.mapped.memory=true ^ 23 | -Daeron.sample.exclusive.publications=true ^ 24 | %JVM_OPTS% io.aeron.samples.Pong -------------------------------------------------------------------------------- /aeron-samples/scripts/rate-subscriber: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" \ 21 | -Dagrona.disable.bounds.checks=true \ 22 | -Daeron.sample.frameCountLimit=256 \ 23 | ${JVM_OPTS} io.aeron.samples.RateSubscriber -------------------------------------------------------------------------------- /aeron-samples/scripts/rate-subscriber.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.frameCountLimit=256 ^ 23 | %JVM_OPTS% io.aeron.samples.RateSubscriber -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/hack-select-receive-send-udp-pong: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | ${JVM_OPTS} io.aeron.samples.raw.HackSelectReceiveSendUdpPong "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/hack-select-receive-send-udp-pong.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | %JVM_OPTS% io.aeron.samples.raw.HackSelectReceiveSendUdpPong %* -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/receive-send-udp-pong: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | ${JVM_OPTS} io.aeron.samples.raw.ReceiveSendUdpPong "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/receive-send-udp-pong.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | %JVM_OPTS% io.aeron.samples.raw.ReceiveSendUdpPong %* -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/send-hack-select-receive-udp-ping: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | ${JVM_OPTS} io.aeron.samples.raw.SendHackSelectReceiveUdpPing "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/send-hack-select-receive-udp-ping.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | %JVM_OPTS% io.aeron.samples.raw.SendHackSelectReceiveUdpPing %* -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/send-receive-udp-ping: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/../run-java" \ 21 | -Djava.net.preferIPv4Stack=true \ 22 | ${JVM_OPTS} io.aeron.samples.raw.SendReceiveUdpPing "$@" 23 | -------------------------------------------------------------------------------- /aeron-samples/scripts/raw/send-receive-udp-ping.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\..\run-java" ^ 21 | -Djava.net.preferIPv4Stack=true ^ 22 | %JVM_OPTS% io.aeron.samples.raw.SendReceiveUdpPing %* -------------------------------------------------------------------------------- /aeron-samples/scripts/run-java: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | source "${DIR}/java-common" 21 | 22 | exec "${JAVA_HOME}/bin/java" \ 23 | -cp "${DIR}/../../aeron-all/build/libs/aeron-all-${VERSION}.jar" \ 24 | ${JAVA_OPTIONS} \ 25 | ${ADD_OPENS} \ 26 | ${JVM_OPTS} \ 27 | "$@" 28 | -------------------------------------------------------------------------------- /aeron-samples/scripts/run-java-logging: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | source "${DIR}/java-common" 21 | 22 | exec "${JAVA_HOME}/bin/java" \ 23 | -cp "${DIR}/../../aeron-all/build/libs/aeron-all-${VERSION}.jar" \ 24 | -javaagent:"${DIR}/../../aeron-agent/build/libs/aeron-agent-${VERSION}.jar" \ 25 | ${JAVA_OPTIONS} \ 26 | ${ADD_OPENS} \ 27 | ${JVM_OPTS} \ 28 | "$@" 29 | -------------------------------------------------------------------------------- /aeron-samples/scripts/run-java-logging.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | @echo off 17 | setlocal EnableExtensions EnableDelayedExpansion 18 | 19 | set "DIR=%~dp0" 20 | 21 | call "%DIR%\java-common" 22 | 23 | "%JAVA_HOME%\bin\java" ^ 24 | -cp "%DIR%\..\..\aeron-all\build\libs\aeron-all-%VERSION%.jar" ^ 25 | -javaagent:"%DIR%\..\..\aeron-agent\build\libs\aeron-agent-%VERSION%.jar" ^ 26 | !JAVA_OPTIONS! ^ 27 | !ADD_OPENS! ^ 28 | %JVM_OPTS% ^ 29 | %* 30 | -------------------------------------------------------------------------------- /aeron-samples/scripts/run-java.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | @echo off 17 | setlocal EnableExtensions EnableDelayedExpansion 18 | 19 | set "DIR=%~dp0" 20 | 21 | call "%DIR%\java-common" 22 | 23 | "%JAVA_HOME%\bin\java" ^ 24 | -cp "%DIR%\..\..\aeron-all\build\libs\aeron-all-%VERSION%.jar" ^ 25 | %JAVA_OPTIONS% ^ 26 | %ADD_OPENS% ^ 27 | %JVM_OPTS% ^ 28 | %* 29 | -------------------------------------------------------------------------------- /aeron-samples/scripts/show_thread_affinity.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | pname=${1:-aeronmd} # default to 'aeronmd' 6 | 7 | pid=$(pgrep "${pname}") 8 | 9 | echo "PID: ${pid} (${pname})" 10 | ps -T -o pid,tid,comm,psr -p "${pid}" 11 | -------------------------------------------------------------------------------- /aeron-samples/scripts/stream-stat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.StreamStat "$@" 21 | -------------------------------------------------------------------------------- /aeron-samples/scripts/stream-stat.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" io.aeron.samples.StreamStat %* -------------------------------------------------------------------------------- /aeron-samples/scripts/streaming-publisher: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 19 | 20 | exec "${DIR}/run-java" io.aeron.samples.StreamingPublisher -------------------------------------------------------------------------------- /aeron-samples/scripts/streaming-publisher.cmd: -------------------------------------------------------------------------------- 1 | :: 2 | :: Copyright 2014-2025 Real Logic Limited. 3 | :: 4 | :: Licensed under the Apache License, Version 2.0 (the "License"); 5 | :: you may not use this file except in compliance with the License. 6 | :: You may obtain a copy of the License at 7 | :: 8 | :: https://www.apache.org/licenses/LICENSE-2.0 9 | :: 10 | :: Unless required by applicable law or agreed to in writing, software 11 | :: distributed under the License is distributed on an "AS IS" BASIS, 12 | :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | :: See the License for the specific language governing permissions and 14 | :: limitations under the License. 15 | :: 16 | 17 | @echo off 18 | set "DIR=%~dp0" 19 | 20 | call "%DIR%\run-java" ^ 21 | -Dagrona.disable.bounds.checks=true ^ 22 | -Daeron.sample.messageLength=32 ^ 23 | -Daeron.sample.messages=500000000 ^ 24 | %JVM_OPTS% io.aeron.samples.StreamingPublisher -------------------------------------------------------------------------------- /aeron-samples/scripts/throughput-c-media-driver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | ## Copyright 2014-2025 Real Logic Limited. 4 | ## 5 | ## Licensed under the Apache License, Version 2.0 (the "License"); 6 | ## you may not use this file except in compliance with the License. 7 | ## You may obtain a copy of the License at 8 | ## 9 | ## https://www.apache.org/licenses/LICENSE-2.0 10 | ## 11 | ## Unless required by applicable law or agreed to in writing, software 12 | ## distributed under the License is distributed on an "AS IS" BASIS, 13 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ## See the License for the specific language governing permissions and 15 | ## limitations under the License. 16 | ## 17 | 18 | AERON_BUILD_DIR=../../cppbuild/Release 19 | 20 | export AERON_TERM_BUFFER_SPARSE_FILE="0" 21 | export AERON_MTU_LENGTH="8k" 22 | export AERON_SOCKET_SO_RCVBUF="2m" 23 | export AERON_SOCKET_SO_SNDBUF="2m" 24 | export AERON_RCV_INITIAL_WINDOW_LENGTH="2m" 25 | 26 | ${AERON_BUILD_DIR}/binaries/aeronmd 27 | -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/archive/SampleAuthenticatorSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.samples.archive; 17 | 18 | import io.aeron.security.Authenticator; 19 | import io.aeron.security.AuthenticatorSupplier; 20 | 21 | /** 22 | * Sample {@link AuthenticatorSupplier} which returns a new {@link SampleAuthenticator}. 23 | */ 24 | public class SampleAuthenticatorSupplier implements AuthenticatorSupplier 25 | { 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | public Authenticator get() 30 | { 31 | return new SampleAuthenticator(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/archive/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Samples for recording and replaying message streams to disk while measuring throughput. 18 | */ 19 | package io.aeron.samples.archive; -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/cluster/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Samples and supporting classes for using Aeron Cluster. 18 | */ 19 | package io.aeron.samples.cluster; -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/cluster/tutorial/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Samples for getting an overview of using Aeron Cluster with the basic tutorial. 18 | */ 19 | package io.aeron.samples.cluster.tutorial; -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/echo/RemoveAllEchoPairs.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.samples.echo; 17 | 18 | /** 19 | * Message to remove all the echo pairs from the service. 20 | */ 21 | public class RemoveAllEchoPairs extends ProvisioningMessage 22 | { 23 | } 24 | -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Samples for using the major features and measuring throughput and latency. 18 | */ 19 | package io.aeron.samples; -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/raw/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * Samples for measuring the raw Java NIO and network performance. 18 | */ 19 | package io.aeron.samples.raw; -------------------------------------------------------------------------------- /aeron-samples/src/main/java/io/aeron/samples/stress/SimpleReservedValueSupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.samples.stress; 17 | 18 | import io.aeron.ReservedValueSupplier; 19 | import org.agrona.DirectBuffer; 20 | 21 | class SimpleReservedValueSupplier implements ReservedValueSupplier 22 | { 23 | private long value; 24 | public long get(final DirectBuffer termBuffer, final int termOffset, final int frameLength) 25 | { 26 | return value; 27 | } 28 | 29 | ReservedValueSupplier set(final long value) 30 | { 31 | this.value = value; 32 | return this; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /aeron-system-tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if (AERON_SYSTEM_TESTS) 2 | add_test( 3 | NAME java_system_tests_c_media_driver 4 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 5 | COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=$ENV{JAVA_HOME} BUILD_JAVA_HOME=$ENV{BUILD_JAVA_HOME} BUILD_JAVA_VERSION=$ENV{BUILD_JAVA_VERSION} ${GRADLE_WRAPPER} -Daeron.test.system.aeronmd.path=$ :aeron-system-tests:cleanTest :aeron-system-tests:test --no-daemon --console=plain) 6 | set_tests_properties(java_system_tests_c_media_driver PROPERTIES RUN_SERIAL TRUE) 7 | endif () 8 | 9 | if (AERON_SLOW_SYSTEM_TESTS) 10 | add_test( 11 | NAME java_slow_system_tests_c_media_driver 12 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 13 | COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=$ENV{JAVA_HOME} BUILD_JAVA_HOME=$ENV{BUILD_JAVA_HOME} BUILD_JAVA_VERSION=$ENV{BUILD_JAVA_VERSION} ${GRADLE_WRAPPER} -Daeron.test.system.aeronmd.path=$ :aeron-system-tests:cleanSlowTest :aeron-system-tests:slowTest --no-daemon --console=plain) 14 | set_tests_properties(java_slow_system_tests_c_media_driver PROPERTIES TIMEOUT 3600) 15 | set_tests_properties(java_slow_system_tests_c_media_driver PROPERTIES RUN_SERIAL TRUE) 16 | endif () 17 | -------------------------------------------------------------------------------- /aeron-system-tests/README.md: -------------------------------------------------------------------------------- 1 | Aeron System Tests 2 | === 3 | 4 | [![Javadocs](http://www.javadoc.io/badge/io.aeron/aeron-all.svg)](http://www.javadoc.io/doc/io.aeron/aeron-all) 5 | 6 | System tests which exercise end-to-end features of Aeron that act as acceptance tests for CI. -------------------------------------------------------------------------------- /aeron-system-tests/scripts/provisioning/README.md: -------------------------------------------------------------------------------- 1 | # Remote Provisioning for Bindings Test 2 | 3 | This script use the fabric deployment tool (https://docs.fabfile.org) v2. 4 | It should be run from the root directory of the project. It will: 5 | 6 | 1. Build a copy of aeron-all-.jar 7 | 2. Copy the jar to a remote server 8 | 3. Ssh to a remote server, start an instance of the remote provision service 9 | 4. Run the RemoteEchoTest 10 | 5. Stop the service 11 | 12 | Usage 13 | 14 | ```shell 15 | $ fab -r aeron-system-tests/scripts/provisioning \ 16 | -H 17 | stop \ 18 | prepare-deploy \ 19 | deploy \ 20 | --java-home= \ 21 | test \ 22 | --test-host= \ 23 | --aeron-dir= 24 | ``` 25 | -------------------------------------------------------------------------------- /aeron-test-support/README.md: -------------------------------------------------------------------------------- 1 | Aeron Test Support 2 | === 3 | 4 | Utility classes and functions common to unit and system tests. -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/BindingsTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import org.junit.jupiter.api.Tag; 19 | 20 | import java.lang.annotation.ElementType; 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.RetentionPolicy; 23 | import java.lang.annotation.Target; 24 | 25 | @Target({ ElementType.TYPE, ElementType.METHOD }) 26 | @Retention(RetentionPolicy.RUNTIME) 27 | @Tag("bindings") 28 | public @interface BindingsTest 29 | { 30 | } 31 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/DisableJavaUtilLogging.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import java.util.logging.LogManager; 19 | 20 | /** 21 | * This is an implementation of the {@link LogManager} that disables java util logging completely. 22 | * In order to work it must be configured via the system property {@code java.util.logging.config.class}. 23 | */ 24 | public class DisableJavaUtilLogging extends LogManager 25 | { 26 | @SuppressWarnings("this-escape") 27 | public DisableJavaUtilLogging() 28 | { 29 | reset(); // Close all logging handlers 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/IgnoreStdErr.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import java.lang.annotation.ElementType; 19 | import java.lang.annotation.Retention; 20 | import java.lang.annotation.RetentionPolicy; 21 | import java.lang.annotation.Target; 22 | 23 | @Target({ ElementType.TYPE, ElementType.METHOD }) 24 | @Retention(RetentionPolicy.RUNTIME) 25 | public @interface IgnoreStdErr 26 | { 27 | } 28 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/InterruptAfter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import java.lang.annotation.ElementType; 19 | import java.lang.annotation.Retention; 20 | import java.lang.annotation.RetentionPolicy; 21 | import java.lang.annotation.Target; 22 | import java.util.concurrent.TimeUnit; 23 | 24 | @Target({ ElementType.TYPE, ElementType.METHOD }) 25 | @Retention(RetentionPolicy.RUNTIME) 26 | public @interface InterruptAfter 27 | { 28 | long value(); 29 | 30 | TimeUnit unit() default TimeUnit.SECONDS; 31 | } 32 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/NullOutputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import java.io.OutputStream; 19 | 20 | public class NullOutputStream extends OutputStream 21 | { 22 | public void write(final int ignore) 23 | { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/SlowTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import org.junit.jupiter.api.Tag; 19 | 20 | import java.lang.annotation.ElementType; 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.RetentionPolicy; 23 | import java.lang.annotation.Target; 24 | 25 | @Target({ ElementType.TYPE, ElementType.METHOD }) 26 | @Retention(RetentionPolicy.RUNTIME) 27 | @Tag("slow") 28 | public @interface SlowTest 29 | { 30 | } 31 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/SystemTestConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | public class SystemTestConfig 19 | { 20 | public static final String DRIVER_AWAIT_COUNTER_CLOSE_PROP_NAME = "aeron.test.system.driver.await.counters"; 21 | public static final boolean DRIVER_AWAIT_COUNTER_CLOSE = Boolean.getBoolean(DRIVER_AWAIT_COUNTER_CLOSE_PROP_NAME); 22 | public static final long MIN_COUNTER_CLOSE_INTERRUPT_TIMEOUT_MS = 20_000L; 23 | } 24 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/TestIdleStrategy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2024-2025 Adaptive Financial Consulting Limited. 3 | */ 4 | package io.aeron.test; 5 | 6 | import org.agrona.concurrent.IdleStrategy; 7 | 8 | public class TestIdleStrategy implements IdleStrategy 9 | { 10 | /** 11 | * Static instance to reduce allocation. 12 | */ 13 | public static final TestIdleStrategy INSTANCE = new TestIdleStrategy(); 14 | 15 | public void idle(final int i) 16 | { 17 | if (i == 0) 18 | { 19 | idle(); 20 | } 21 | } 22 | 23 | public void idle() 24 | { 25 | Tests.yield(); 26 | } 27 | 28 | public void reset() 29 | { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/TopologyTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test; 17 | 18 | import org.junit.jupiter.api.Tag; 19 | 20 | import java.lang.annotation.ElementType; 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.RetentionPolicy; 23 | import java.lang.annotation.Target; 24 | 25 | @Target({ ElementType.TYPE, ElementType.METHOD }) 26 | @Retention(RetentionPolicy.RUNTIME) 27 | @Tag("topology") 28 | public @interface TopologyTest 29 | { 30 | } 31 | -------------------------------------------------------------------------------- /aeron-test-support/src/main/java/io/aeron/test/driver/DriverOutputConsumer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2025 Real Logic Limited. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.aeron.test.driver; 17 | 18 | import java.io.File; 19 | import java.util.Map; 20 | 21 | public interface DriverOutputConsumer 22 | { 23 | default void outputFiles(String aeronDirectoryName, File stdoutFile, File stderrFile) 24 | { 25 | } 26 | 27 | default void exitCode(String aeronDirectoryName, int exitValue, String exitMessage) 28 | { 29 | } 30 | 31 | default void environmentVariables(String aeronDirectoryName, Map environment) 32 | { 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | mavenCentral() 3 | } 4 | 5 | configurations.configureEach { 6 | resolutionStrategy { 7 | failOnVersionConflict() 8 | 9 | force libs.asm, 10 | libs.asm.analysis, 11 | libs.asm.commons, 12 | libs.asm.tree, 13 | libs.asm.util 14 | } 15 | } 16 | 17 | dependencies { 18 | implementation libs.asciidoctorj 19 | implementation libs.jgit 20 | } 21 | 22 | tasks.withType(JavaCompile).configureEach { 23 | configure(options) { 24 | options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked' // examples 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /buildSrc/settings.gradle: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | versionCatalogs { 3 | create("libs") { 4 | from(files("../gradle/libs.versions.toml")) 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /config/checkstyle/suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /cppbuild/HdrHistogram_c-0.11.8.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeron-io/aeron/545afee9326746c2cd43ecf6ded4b07d64c7e138/cppbuild/HdrHistogram_c-0.11.8.zip -------------------------------------------------------------------------------- /cppbuild/cppbuild.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | echo Building Aeron using the Window Batch script is no longer supported, use a PowerShell terminal and run cppbuild\cppbuild.ps1 4 | -------------------------------------------------------------------------------- /cppbuild/googletest-1.14.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeron-io/aeron/545afee9326746c2cd43ecf6ded4b07d64c7e138/cppbuild/googletest-1.14.0.zip -------------------------------------------------------------------------------- /cppbuild/rocky-docker-build: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z ${GCC_VERSION} ]; 4 | then 5 | echo "No GCC version provided!"; 6 | exit 1; 7 | else 8 | echo "GCC_VERSION=${GCC_VERSION}" 9 | fi 10 | 11 | SOURCE_DIR="$(pwd)" 12 | 13 | docker build --tag rocky8-aeron \ 14 | --build-arg USER_ID="$(id -u)" \ 15 | --build-arg GROUP_ID="$(id -g)" \ 16 | --build-arg GCC_VERSION="${GCC_VERSION}" \ 17 | --target essentials-test \ 18 | "${SOURCE_DIR}/cppbuild/rocky" 19 | 20 | docker run --rm --shm-size=1G --network host \ 21 | --volume="${SOURCE_DIR}":/opt/aeron \ 22 | --volume="$(realpath ~/.gradle)":/home/athena/.gradle \ 23 | rocky8-aeron 24 | -------------------------------------------------------------------------------- /cppbuild/rocky/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG VERSION="8.9" 2 | FROM rockylinux:${VERSION} as builder 3 | 4 | ARG GCC_VERSION="10" 5 | 6 | RUN yum update -y && yum install -y https://cdn.azul.com/zulu/bin/zulu-repo-1.0.0-1.noarch.rpm && \ 7 | yum update -y && yum install -y \ 8 | scl-utils \ 9 | gcc-toolset-${GCC_VERSION}-gcc \ 10 | gcc-toolset-${GCC_VERSION}-gcc-c++ \ 11 | make \ 12 | tar \ 13 | zlib-devel \ 14 | libuuid-devel \ 15 | git \ 16 | findutils \ 17 | openssl-devel \ 18 | zulu17-jdk 19 | 20 | ENV JAVA_HOME=/usr/lib/jvm/java-17-zulu-openjdk \ 21 | BUILD_JAVA_HOME=/usr/lib/jvm/java-17-zulu-openjdk \ 22 | BUILD_JAVA_VERSION=17 \ 23 | GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.warning.mode=fail" \ 24 | GCC_VERSION=${GCC_VERSION} 25 | 26 | ARG USER_ID="1000" 27 | ARG GROUP_ID="1000" 28 | RUN groupadd --gid $GROUP_ID --non-unique --system athena 29 | RUN adduser --uid $USER_ID --system --create-home --gid $GROUP_ID athena 30 | 31 | USER athena 32 | WORKDIR /opt/aeron 33 | 34 | FROM builder as essentials-test 35 | ENTRYPOINT scl enable "gcc-toolset-${GCC_VERSION}" -- cppbuild/cppbuild --c-warnings-as-errors --cxx-warnings-as-errors --package -------------------------------------------------------------------------------- /cppbuild/vs-helper.cmd: -------------------------------------------------------------------------------- 1 | rem Invoke script to set all of the Visual Studio ENV variables 2 | @for /f "usebackq delims=#" %%a in (`"%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere" -latest -property installationPath`) do "%%a\Common7\Tools\VsDevCmd.bat" -------------------------------------------------------------------------------- /cppbuild/vsr.cmd: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | setlocal EnableDelayedExpansion 3 | 4 | set "DIR=%~dp0" 5 | 6 | call "%DIR%\vs-helper.cmd" 7 | if %ERRORLEVEL% neq 0 exit /b %ERRORLEVEL% 8 | 9 | %* -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.java.installations.auto-detect=false 2 | org.gradle.java.installations.auto-download=false 3 | org.gradle.java.installations.fromEnv=BUILD_JAVA_HOME 4 | 5 | org.gradle.logging.level=lifecycle 6 | org.gradle.warning.mode=all 7 | 8 | # HTTP timeouts for Gradle 9 | systemProp.org.gradle.internal.http.connectionTimeout=300000 10 | systemProp.org.gradle.internal.http.socketTimeout=300000 11 | systemProp.org.gradle.internal.repository.max.retries=1 12 | systemProp.org.gradle.internal.publish.checksums.insecure=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeron-io/aeron/545afee9326746c2cd43ecf6ded4b07d64c7e138/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /run-ci-tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z "$AERON_GITHUB_PAT" ] 4 | then 5 | echo "Please set AERON_GITHUB_PAT environment variable to contain your token" 6 | exit 1 7 | fi 8 | 9 | event_type=run-commit-tests 10 | 11 | for option in "$@" 12 | do 13 | case ${option} in 14 | -s|--slow) 15 | event_type=run-slow-tests 16 | shift 17 | ;; 18 | -c|--commit) 19 | shift 20 | ;; 21 | *) 22 | echo "$0 [-s|--slow-tests] (run slow tests) [-c|--commit] (run commit tests) default: commit tests" 23 | exit 24 | ;; 25 | esac 26 | done 27 | 28 | echo "Sending repository_dispatch, event_type: ${event_type}" 29 | 30 | curl -v -H "Accept: application/vnd.github.everest-preview+json" \ 31 | -H "Authorization: token ${AERON_GITHUB_PAT}" \ 32 | --request POST \ 33 | --data "{\"event_type\": \"${event_type}\"}" \ 34 | https://api.github.com/repos/aeron-io/aeron/dispatches -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ( 2 | 'aeron-annotations', 3 | 'aeron-client', 4 | 'aeron-driver', 5 | 'aeron-archive', 6 | 'aeron-cluster', 7 | 'aeron-agent', 8 | 'aeron-samples', 9 | 'aeron-system-tests', 10 | 'aeron-test-support', 11 | 'aeron-all') 12 | 13 | 14 | -------------------------------------------------------------------------------- /version.txt: -------------------------------------------------------------------------------- 1 | 1.48.0-SNAPSHOT 2 | --------------------------------------------------------------------------------