Provides a set of constraints, low-level utility classes, and provider interfaces for participating in versions 1 and 2 of the multicast request, multicast announcement, and unicast discovery protocols.

The {@link org.apache.river.discovery.DiscoveryProtocolVersion}, {@link org.apache.river.discovery.MulticastMaxPacketSize}, {@link org.apache.river.discovery.MulticastTimeToLive} and {@link org.apache.river.discovery.UnicastSocketTimeout} classes represent constraints which can be applied to multicast and unicast discovery. The {@link org.apache.river.discovery.DiscoveryConstraints} class offers convenience methods for querying the values expressed by groups of these constraints. The {@link org.apache.river.discovery.Discovery} class provides methods implementing various low-level discovery protocol operations, such as encoding and decoding multicast packet contents and unicast discovery data. These methods accept as arguments instances of the {@link org.apache.river.discovery.MulticastRequest}, {@link org.apache.river.discovery.MulticastAnnouncement} and {@link org.apache.river.discovery.UnicastResponse} classes, which represent the values (independent of protocol details) to be transmitted by multicast requests, multicast announcements, and unicast discovery.

The `Discovery` class implements both versions 1 and 2 of the discovery protocols. For version 2 of the protocols, it accepts pluggable format providers, specified via resource using the {@link org.apache.river.discovery.DiscoveryFormatProvider} interface, which implement the {@link org.apache.river.discovery.MulticastRequestEncoder}, {@link org.apache.river.discovery.MulticastRequestDecoder}, {@link org.apache.river.discovery.MulticastAnnouncementEncoder}, {@link org.apache.river.discovery.MulticastAnnouncementDecoder}, {@link org.apache.river.discovery.UnicastDiscoveryClient}, and {@link org.apache.river.discovery.UnicastDiscoveryServer} format provider sub-interfaces. @see "Jini Discovery and Join Specification"