Class MulticastDiscovery

java.lang.Object
com.loomcache.server.discovery.MulticastDiscovery
All Implemented Interfaces:
DiscoveryStrategy

public class MulticastDiscovery extends Object implements DiscoveryStrategy
UDP multicast-based discovery for local area networks.

Each node periodically announces itself to a multicast group. Announcements contain: nodeId,host,port

Configuration: - Multicast group: 239.0.0.1:5555 (configurable) - Announcement interval: 5 seconds - Peer timeout: 30 seconds (peers expire if no announcement received)

Uses virtual threads for announcement and listening. Thread-safe with ConcurrentHashMap for peer tracking.

  • Constructor Details

    • MulticastDiscovery

      public MulticastDiscovery(String nodeId, String host, int port)
      Create a multicast discovery strategy.
      Parameters:
      nodeId - this node's identifier
      host - this node's host address
      port - this node's port
    • MulticastDiscovery

      public MulticastDiscovery(String nodeId, String host, int port, String multicastGroup, int multicastPort)
      Create a multicast discovery strategy with custom multicast group.
      Parameters:
      nodeId - this node's identifier
      host - this node's host address
      port - this node's port
      multicastGroup - multicast group IP (e.g., "239.0.0.1")
      multicastPort - multicast port (e.g., 5555)
  • Method Details

    • start

      public void start() throws Exception
      Description copied from interface: DiscoveryStrategy
      Start the discovery strategy.

      Initializes the discovery mechanism and starts any background threads or I/O operations (e.g., watching files, listening to multicast, resolving DNS). Implementations must handle errors gracefully and should not leave resources in an inconsistent state if startup fails.

      Specified by:
      start in interface DiscoveryStrategy
      Throws:
      Exception - if startup fails; specific exceptions depend on implementation
    • stop

      public void stop()
      Description copied from interface: DiscoveryStrategy
      Stop the discovery strategy and release resources.

      Cleanly shuts down the discovery mechanism, including stopping any background threads and closing I/O resources. Safe to call multiple times and must be idempotent (calling twice should have no additional effect).

      Specified by:
      stop in interface DiscoveryStrategy
    • discoverPeers

      public List<PeerAddress> discoverPeers()
      Description copied from interface: DiscoveryStrategy
      Discover available peers.

      Returns a snapshot of currently known peers. If no peers are available, an empty list is returned (not null). The returned list is mutable and modifications should not affect internal strategy state.

      Specified by:
      discoverPeers in interface DiscoveryStrategy
      Returns:
      list of discovered peer addresses; empty list if none available
    • getName

      public String getName()
      Description copied from interface: DiscoveryStrategy
      Get the name of this discovery strategy.

      Used for logging, metrics, and debugging purposes.

      Specified by:
      getName in interface DiscoveryStrategy
      Returns:
      human-readable strategy name (e.g., "FileBasedDiscovery", "MulticastDiscovery")