Class JmmDNSImpl

java.lang.Object
javax.jmdns.impl.JmmDNSImpl
All Implemented Interfaces:
Closeable, AutoCloseable, EventListener, ServiceInfoImpl.Delegate, JmmDNS, NetworkTopologyListener

public class JmmDNSImpl extends Object implements JmmDNS, NetworkTopologyListener, ServiceInfoImpl.Delegate
This class enable multihoming mDNS. It will open a mDNS per IP address of the machine.
  • Field Details

  • Constructor Details

    • JmmDNSImpl

      public JmmDNSImpl()
  • Method Details

    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • getNames

      public String[] getNames()
      Description copied from interface: JmmDNS
      Return the names of the JmDNS instances.
      Specified by:
      getNames in interface JmmDNS
      Returns:
      list of name of the JmDNS
      See Also:
    • getHostNames

      public String[] getHostNames()
      Description copied from interface: JmmDNS
      Return the list HostName associated with this JmmDNS instance.
      Specified by:
      getHostNames in interface JmmDNS
      Returns:
      list of host names
      See Also:
    • getInetAddresses

      public InetAddress[] getInetAddresses() throws IOException
      Description copied from interface: JmmDNS
      Return the list of addresses of the interface to which this instance of JmmDNS is bound.
      Specified by:
      getInetAddresses in interface JmmDNS
      Returns:
      list of Internet Address
      Throws:
      IOException
      See Also:
    • getDNS

      public JmDNS[] getDNS()
      Description copied from interface: JmmDNS
      Return a list of all the registered JmDNS instances
      Specified by:
      getDNS in interface JmmDNS
      Returns:
      list of JmDNS instances
    • getInterfaces

      @Deprecated public InetAddress[] getInterfaces() throws IOException
      Deprecated.
      Description copied from interface: JmmDNS
      Return the list of addresses of the interface to which this instance of JmmDNS is bound.
      Specified by:
      getInterfaces in interface JmmDNS
      Returns:
      list of Internet Address
      Throws:
      IOException
      See Also:
    • getServiceInfos

      public ServiceInfo[] getServiceInfos(String type, String name)
      Description copied from interface: JmmDNS
      Get service information. If the information is not cached, the method will block until updated information is received on all DNS.

      Usage note: Do not call this method from the AWT event dispatcher thread. You will make the user interface unresponsive.

      Specified by:
      getServiceInfos in interface JmmDNS
      Parameters:
      type - fully qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      Returns:
      list of service info. If no service info is found the list is empty.
      See Also:
    • getServiceInfos

      public ServiceInfo[] getServiceInfos(String type, String name, long timeout)
      Description copied from interface: JmmDNS
      Get service information. If the information is not cached, the method will block until updated information is received on all DNS.

      Usage note: If you call this method from the AWT event dispatcher thread, use a small timeout, or you will make the user interface unresponsive.

      Specified by:
      getServiceInfos in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      timeout - timeout in milliseconds. Typical timeout should be 5s.
      Returns:
      list of service info. If no service info is found the list is empty.
      See Also:
    • getServiceInfos

      public ServiceInfo[] getServiceInfos(String type, String name, boolean persistent)
      Description copied from interface: JmmDNS
      Get service information. If the information is not cached, the method will block until updated information is received on all DNS.

      Usage note: If you call this method from the AWT event dispatcher thread, use a small timeout, or you will make the user interface unresponsive.

      Specified by:
      getServiceInfos in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      persistent - if true ServiceListener.resolveService will be called whenever new new information is received.
      Returns:
      list of service info. If no service info is found the list is empty.
      See Also:
    • getServiceInfos

      public ServiceInfo[] getServiceInfos(String type, String name, boolean persistent, long timeout)
      Description copied from interface: JmmDNS
      Get service information. If the information is not cached, the method will block until updated information is received on all DNS.

      Usage note: If you call this method from the AWT event dispatcher thread, use a small timeout, or you will make the user interface unresponsive.

      Specified by:
      getServiceInfos in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      persistent - if true ServiceListener.resolveService will be called whenever new new information is received.
      timeout - timeout in milliseconds. Typical timeout should be 5s.
      Returns:
      list of service info. If no service info is found the list is empty.
      See Also:
    • requestServiceInfo

      public void requestServiceInfo(String type, String name)
      Description copied from interface: JmmDNS
      Request service information. The information about the service is requested and the ServiceListener.resolveService method is called as soon as it is available.
      Specified by:
      requestServiceInfo in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      See Also:
    • requestServiceInfo

      public void requestServiceInfo(String type, String name, boolean persistent)
      Description copied from interface: JmmDNS
      Request service information. The information about the service is requested and the ServiceListener.resolveService method is called as soon as it is available.
      Specified by:
      requestServiceInfo in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      persistent - if true ServiceListener.resolveService will be called whenever new new information is received.
      See Also:
    • requestServiceInfo

      public void requestServiceInfo(String type, String name, long timeout)
      Description copied from interface: JmmDNS
      Request service information. The information about the service is requested and the ServiceListener.resolveService method is called as soon as it is available.
      Specified by:
      requestServiceInfo in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      timeout - timeout in milliseconds
      See Also:
    • requestServiceInfo

      public void requestServiceInfo(String type, String name, boolean persistent, long timeout)
      Description copied from interface: JmmDNS
      Request service information. The information about the service is requested and the ServiceListener.resolveService method is called as soon as it is available.
      Specified by:
      requestServiceInfo in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local. .
      name - unqualified service name, such as foobar .
      persistent - if true ServiceListener.resolveService will be called whenever new new information is received.
      timeout - timeout in milliseconds
      See Also:
    • addServiceTypeListener

      public void addServiceTypeListener(ServiceTypeListener listener) throws IOException
      Description copied from interface: JmmDNS
      Listen for service types.
      Specified by:
      addServiceTypeListener in interface JmmDNS
      Parameters:
      listener - listener for service types
      Throws:
      IOException
      See Also:
    • removeServiceTypeListener

      public void removeServiceTypeListener(ServiceTypeListener listener)
      Description copied from interface: JmmDNS
      Remove listener for service types.
      Specified by:
      removeServiceTypeListener in interface JmmDNS
      Parameters:
      listener - listener for service types
      See Also:
    • addServiceListener

      public void addServiceListener(String type, ServiceListener listener)
      Description copied from interface: JmmDNS
      Listen for services of a given type. The type has to be a fully qualified type name such as _http._tcp.local..
      Specified by:
      addServiceListener in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local..
      listener - listener for service updates
      See Also:
    • removeServiceListener

      public void removeServiceListener(String type, ServiceListener listener)
      Description copied from interface: JmmDNS
      Remove listener for services of a given type.
      Specified by:
      removeServiceListener in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local..
      listener - listener for service updates
      See Also:
    • textValueUpdated

      public void textValueUpdated(ServiceInfo target, byte[] value)
      Specified by:
      textValueUpdated in interface ServiceInfoImpl.Delegate
    • registerService

      public void registerService(ServiceInfo info) throws IOException
      Description copied from interface: JmmDNS
      Register a service. The service is registered for access by other jmdns clients. The name of the service may be changed to make it unique.
      Note the Service info is cloned for each network interface.
      Specified by:
      registerService in interface JmmDNS
      Parameters:
      info - service info to register
      Throws:
      IOException
      See Also:
    • unregisterService

      public void unregisterService(ServiceInfo info)
      Description copied from interface: JmmDNS
      Unregister a service. The service should have been registered.
      Specified by:
      unregisterService in interface JmmDNS
      Parameters:
      info - service info to remove
      See Also:
    • unregisterAllServices

      public void unregisterAllServices()
      Description copied from interface: JmmDNS
      Unregister all services.
      Specified by:
      unregisterAllServices in interface JmmDNS
      See Also:
    • registerServiceType

      public void registerServiceType(String type)
      Description copied from interface: JmmDNS
      Register a service type. If this service type was not already known, all service listeners will be notified of the new service type. Service types are automatically registered as they are discovered.
      Specified by:
      registerServiceType in interface JmmDNS
      Parameters:
      type - full qualified service type, such as _http._tcp.local..
      See Also:
    • list

      public ServiceInfo[] list(String type)
      Description copied from interface: JmmDNS
      Returns a list of service infos of the specified type.
      Specified by:
      list in interface JmmDNS
      Parameters:
      type - Service type name, such as _http._tcp.local..
      Returns:
      An array of service instance.
      See Also:
    • list

      public ServiceInfo[] list(String type, long timeout)
      Description copied from interface: JmmDNS
      Returns a list of service infos of the specified type.
      Specified by:
      list in interface JmmDNS
      Parameters:
      type - Service type name, such as _http._tcp.local..
      timeout - timeout in milliseconds. Typical timeout should be 6s.
      Returns:
      An array of service instance.
      See Also:
    • listBySubtype

      public Map<String,ServiceInfo[]> listBySubtype(String type)
      Description copied from interface: JmmDNS
      Returns a list of service infos of the specified type sorted by subtype. Any service that do not register a subtype is listed in the empty subtype section.
      Specified by:
      listBySubtype in interface JmmDNS
      Parameters:
      type - Service type name, such as _http._tcp.local..
      Returns:
      A dictionary of service info by subtypes.
      See Also:
    • listBySubtype

      public Map<String,ServiceInfo[]> listBySubtype(String type, long timeout)
      Description copied from interface: JmmDNS
      Returns a list of service infos of the specified type sorted by subtype. Any service that do not register a subtype is listed in the empty subtype section.
      Specified by:
      listBySubtype in interface JmmDNS
      Parameters:
      type - Service type name, such as _http._tcp.local..
      timeout - timeout in milliseconds. Typical timeout should be 6s.
      Returns:
      A dictionary of service info by subtypes.
      See Also:
    • addNetworkTopologyListener

      public void addNetworkTopologyListener(NetworkTopologyListener listener)
      Description copied from interface: JmmDNS
      Listen to network changes.
      Specified by:
      addNetworkTopologyListener in interface JmmDNS
      Parameters:
      listener - listener for network changes
    • removeNetworkTopologyListener

      public void removeNetworkTopologyListener(NetworkTopologyListener listener)
      Description copied from interface: JmmDNS
      Remove listener for network changes.
      Specified by:
      removeNetworkTopologyListener in interface JmmDNS
      Parameters:
      listener - listener for network changes
    • networkListeners

      public NetworkTopologyListener[] networkListeners()
      Description copied from interface: JmmDNS
      Returns list of network change listeners
      Specified by:
      networkListeners in interface JmmDNS
      Returns:
      list of network change listeners
    • inetAddressAdded

      public void inetAddressAdded(NetworkTopologyEvent event)
      Description copied from interface: NetworkTopologyListener
      A network address has been added.
      Specified by:
      inetAddressAdded in interface NetworkTopologyListener
      Parameters:
      event - The NetworkTopologyEvent providing the name and fully qualified type of the service.
    • inetAddressRemoved

      public void inetAddressRemoved(NetworkTopologyEvent event)
      Description copied from interface: NetworkTopologyListener
      A network address has been removed.
      Specified by:
      inetAddressRemoved in interface NetworkTopologyListener
      Parameters:
      event - The NetworkTopologyEvent providing the name and fully qualified type of the service.
    • createJmDnsInstance

      protected JmDNS createJmDnsInstance(InetAddress address) throws IOException
      Throws:
      IOException