@DefaultQualifier(org.checkerframework.checker.nullness.qual.NonNull.class)

Package ninja.leaping.configurate.reactive

This package contains a rudimentary implementation of a reactive programming API. It does not intend to meet all the requirements of the Reactive Streams specification, but it is designed to allow for easy migration to implementations based on JDK9's Flow API when Configurate targets Java 9.

With Publisher, Subscriber, and Processor, a system can be easily built that allows the processing of a series of units of information.

The origin of a system generally starts from creating a processor, and making it available for users to subscribe to. Then, any value submitted to the Processor will be forwarded to every registered subscriber.

A unique feature of Configurate's reactive listeners is the ability to have transactional subscribers. A TransactionalSubscriber will receive a new value, followed by either a commit or rollback notification. When subscribing to a transactional processor, all subscribers must accept the new value before it's committed.

In many cases, it is best to only expose the Publisher side of the processor, so that the submission of values can be more easily controlled.