Class MulticastRegistryClient

java.lang.Object
org.j7m.middleware.registry.mcast.MulticastRegistryClient
All Implemented Interfaces:
AutoCloseable, org.j7m.middleware.registry.api.PeerGraphRegistry, org.j7m.middleware.registry.api.RegistryClient, org.j7m.middleware.registry.api.RegistryDiagnostics

public final class MulticastRegistryClient extends Object implements org.j7m.middleware.registry.api.RegistryClient, org.j7m.middleware.registry.api.PeerGraphRegistry, org.j7m.middleware.registry.api.RegistryDiagnostics
Decentralized multicast-style registry client.

The client owns a local embedded registry, listens on an injected multicast bus, answers bounded discovery questions, ignores self messages, filters by registry context, and returns only active records. All methods are thread-safe.

  • Constructor Details

    • MulticastRegistryClient

      public MulticastRegistryClient(MulticastRegistryOptions options)
      Creates a multicast registry with a fresh embedded store and system clock.
      Parameters:
      options - multicast options
    • MulticastRegistryClient

      public MulticastRegistryClient(EmbeddedRegistryStore store, Clock clock, MulticastRegistryOptions options)
      Creates a multicast registry with supplied store and clock.
      Parameters:
      store - local embedded store
      clock - registry clock
      options - multicast options
    • MulticastRegistryClient

      public MulticastRegistryClient(EmbeddedRegistryStore store, Clock clock, MulticastRegistryOptions options, org.j7m.middleware.registry.api.RegistryRecordVerifier verifier, boolean strictTrust, org.j7m.middleware.security.api.SecurityAuditSink auditSink)
      Creates a multicast registry with explicit received-record trust policy.
      Parameters:
      store - local embedded store
      clock - registry clock
      options - multicast options
      verifier - record verifier
      strictTrust - true to reject invalid or unsigned records
      auditSink - optional audit sink for suspicious records
  • Method Details

    • bind

      public void bind(org.j7m.middleware.registry.api.RegistryRecord record)
      Specified by:
      bind in interface org.j7m.middleware.registry.api.RegistryClient
    • unbind

      public void unbind(org.j7m.middleware.api.ObjectRef ref)
      Specified by:
      unbind in interface org.j7m.middleware.registry.api.RegistryClient
    • lookup

      public Optional<org.j7m.middleware.registry.api.RegistryRecord> lookup(org.j7m.middleware.api.ObjectRef ref)
      Specified by:
      lookup in interface org.j7m.middleware.registry.api.RegistryClient
    • list

      public List<org.j7m.middleware.registry.api.RegistryRecord> list(org.j7m.middleware.registry.api.RegistryQuery query)
      Specified by:
      list in interface org.j7m.middleware.registry.api.RegistryClient
    • heartbeat

      public void heartbeat(org.j7m.middleware.api.ObjectRef ref, long leaseUntil)
      Specified by:
      heartbeat in interface org.j7m.middleware.registry.api.RegistryClient
    • peers

      public List<org.j7m.middleware.registry.api.RegistryPeerStatus> peers(org.j7m.middleware.registry.api.PeerQuery query)
      Specified by:
      peers in interface org.j7m.middleware.registry.api.RegistryClient
    • updatePeer

      public void updatePeer(org.j7m.middleware.registry.api.RegistryPeerStatus status)
      Specified by:
      updatePeer in interface org.j7m.middleware.registry.api.PeerGraphRegistry
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface org.j7m.middleware.registry.api.RegistryClient
    • discoveryStatistics

      public org.j7m.middleware.registry.api.DiscoveryStatistics discoveryStatistics()
      Specified by:
      discoveryStatistics in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • recentDiscoveryEvents

      public List<org.j7m.middleware.registry.api.DiscoveryEvent> recentDiscoveryEvents()
      Specified by:
      recentDiscoveryEvents in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • activeDiscoveryQuestions

      public int activeDiscoveryQuestions()
      Specified by:
      activeDiscoveryQuestions in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • lookupCacheSize

      public int lookupCacheSize()
      Specified by:
      lookupCacheSize in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • bootstrapHintCount

      public int bootstrapHintCount()
      Specified by:
      bootstrapHintCount in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • contactedBootstrapPeerCount

      public int contactedBootstrapPeerCount()
      Specified by:
      contactedBootstrapPeerCount in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • multicastListenerRunning

      public boolean multicastListenerRunning()
      Specified by:
      multicastListenerRunning in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • multicastAdapterType

      public String multicastAdapterType()
      Specified by:
      multicastAdapterType in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • multicastEndpoint

      public String multicastEndpoint()
      Specified by:
      multicastEndpoint in interface org.j7m.middleware.registry.api.RegistryDiagnostics
    • expireQuestionCache

      public void expireQuestionCache()
      Expires stale in-flight questions.