Class ServiceInfoImpl

java.lang.Object
javax.jmdns.ServiceInfo
javax.jmdns.impl.ServiceInfoImpl
All Implemented Interfaces:
Cloneable, DNSStatefulObject

public class ServiceInfoImpl extends ServiceInfo implements DNSStatefulObject
JmDNS service information.
Author:
Arthur van Hoff, Jeff Sonstein, Werner Randelshofer, Victor Toni
  • Constructor Details

  • Method Details

    • decodeQualifiedNameMap

      public static Map<ServiceInfo.Fields,String> decodeQualifiedNameMap(String type, String name, String subtype)
    • decodeQualifiedNameMapForType

      public static Map<ServiceInfo.Fields,String> decodeQualifiedNameMapForType(String type)
    • checkQualifiedNameMap

      protected static Map<ServiceInfo.Fields,String> checkQualifiedNameMap(Map<ServiceInfo.Fields,String> qualifiedNameMap)
    • getType

      public String getType()
      Fully qualified service type name, such as _http._tcp.local.
      Specified by:
      getType in class ServiceInfo
      Returns:
      service type name
    • getTypeWithSubtype

      public String getTypeWithSubtype()
      Fully qualified service type name with the subtype if appropriate, such as _printer._sub._http._tcp.local.
      Specified by:
      getTypeWithSubtype in class ServiceInfo
      Returns:
      service type name
    • getName

      public String getName()
      Unqualified service instance name, such as foobar .
      Specified by:
      getName in class ServiceInfo
      Returns:
      service name
    • getKey

      public String getKey()
      The key is used to retrieve service info in hash tables.
      The key is the lower case qualified name.
      Specified by:
      getKey in class ServiceInfo
      Returns:
      the key
    • getQualifiedName

      public String getQualifiedName()
      Fully qualified service name, such as foobar._http._tcp.local. .
      Specified by:
      getQualifiedName in class ServiceInfo
      Returns:
      qualified service name
    • getServer

      public String getServer()
      Description copied from class: ServiceInfo
      Get the name of the server.
      Specified by:
      getServer in class ServiceInfo
      Returns:
      server name
      See Also:
    • getHostAddress

      @Deprecated public String getHostAddress()
      Deprecated.
      Returns the host IP address string in textual presentation.
      Note: This can be either an IPv4 or an IPv6 representation.
      Specified by:
      getHostAddress in class ServiceInfo
      Returns:
      the host raw IP address in a string format.
      See Also:
    • getHostAddresses

      public String[] getHostAddresses()
      Returns the host IP addresses string in textual presentation.
      Specified by:
      getHostAddresses in class ServiceInfo
      Returns:
      list of host raw IP address in a string format.
    • getAddress

      @Deprecated public InetAddress getAddress()
      Deprecated.
      Get the host address of the service.
      Specified by:
      getAddress in class ServiceInfo
      Returns:
      host Internet address
      See Also:
    • getInetAddress

      @Deprecated public InetAddress getInetAddress()
      Deprecated.
      Get the InetAddress of the service. This will return the IPv4 if it exist, otherwise it return the IPv6 if set.
      Note: This return null if the service IP address cannot be resolved.
      Specified by:
      getInetAddress in class ServiceInfo
      Returns:
      Internet address
      See Also:
    • getInet4Address

      @Deprecated public Inet4Address getInet4Address()
      Deprecated.
      Get the IPv4 InetAddress of the service.
      Note: This return null if the service IPv4 address cannot be resolved.
      Specified by:
      getInet4Address in class ServiceInfo
      Returns:
      Internet address
      See Also:
    • getInet6Address

      @Deprecated public Inet6Address getInet6Address()
      Deprecated.
      Get the IPv6 InetAddress of the service.
      Note: This return null if the service IPv6 address cannot be resolved.
      Specified by:
      getInet6Address in class ServiceInfo
      Returns:
      Internet address
      See Also:
    • getInetAddresses

      public InetAddress[] getInetAddresses()
      Description copied from class: ServiceInfo
      Returns a list of all InetAddresses that can be used for this service.

      In a multi-homed environment service info can be associated with more than one address.

      Specified by:
      getInetAddresses in class ServiceInfo
      Returns:
      list of InetAddress objects
    • getInet4Addresses

      public Inet4Address[] getInet4Addresses()
      Description copied from class: ServiceInfo
      Returns a list of all IPv4 InetAddresses that can be used for this service.

      In a multi-homed environment service info can be associated with more than one address.

      Specified by:
      getInet4Addresses in class ServiceInfo
      Returns:
      list of InetAddress objects
    • getInet6Addresses

      public Inet6Address[] getInet6Addresses()
      Description copied from class: ServiceInfo
      Returns a list of all IPv6 InetAddresses that can be used for this service.

      In a multi-homed environment service info can be associated with more than one address.

      Specified by:
      getInet6Addresses in class ServiceInfo
      Returns:
      list of InetAddress objects
    • getPort

      public int getPort()
      Description copied from class: ServiceInfo
      Get the port for the service.
      Specified by:
      getPort in class ServiceInfo
      Returns:
      service port
      See Also:
    • getPriority

      public int getPriority()
      Description copied from class: ServiceInfo
      Get the priority of the service.
      Specified by:
      getPriority in class ServiceInfo
      Returns:
      service priority
      See Also:
    • getWeight

      public int getWeight()
      Description copied from class: ServiceInfo
      Get the weight of the service.
      Specified by:
      getWeight in class ServiceInfo
      Returns:
      service weight
      See Also:
    • getTextBytes

      public byte[] getTextBytes()
      Description copied from class: ServiceInfo
      Get the text for the service as raw bytes.
      Specified by:
      getTextBytes in class ServiceInfo
      Returns:
      raw service text
      See Also:
    • getTextString

      @Deprecated public String getTextString()
      Deprecated.
      Get the text for the service. This will interpret the text bytes as a UTF8 encoded string. Will return null if the bytes are not a valid UTF8 encoded string.
      Note: Do not use. This method make the assumption that the TXT record is one string. This is false. The TXT record is a series of key value pairs.
      Specified by:
      getTextString in class ServiceInfo
      Returns:
      service text
      See Also:
    • getURL

      @Deprecated public String getURL()
      Deprecated.
      Description copied from class: ServiceInfo
      Get the URL for this service. An http URL is created by combining the address, port, and path properties.
      Specified by:
      getURL in class ServiceInfo
      Returns:
      service URL
      See Also:
    • getURLs

      public String[] getURLs()
      Description copied from class: ServiceInfo
      Get the list of URL for this service. An http URL is created by combining the address, port, and path properties.
      Specified by:
      getURLs in class ServiceInfo
      Returns:
      list of service URL
    • getURL

      @Deprecated public String getURL(String protocol)
      Deprecated.
      Description copied from class: ServiceInfo
      Get the URL for this service. An URL is created by combining the protocol, address, port, and path properties.
      Specified by:
      getURL in class ServiceInfo
      Parameters:
      protocol - requested protocol
      Returns:
      service URL
      See Also:
    • getURLs

      public String[] getURLs(String protocol)
      Description copied from class: ServiceInfo
      Get the list of URL for this service. An URL is created by combining the protocol, address, port, and path properties.
      Specified by:
      getURLs in class ServiceInfo
      Parameters:
      protocol - requested protocol
      Returns:
      list of service URL
    • getPropertyBytes

      public byte[] getPropertyBytes(String name)
      Get a property of the service. This involves decoding the text bytes into a property list. Returns null if the property is not found or the text data could not be decoded correctly.
      Specified by:
      getPropertyBytes in class ServiceInfo
      Parameters:
      name - property name
      Returns:
      raw property text
    • getPropertyString

      public String getPropertyString(String name)
      Get a property of the service. This involves decoding the text bytes into a property list. Returns null if the property is not found, the text data could not be decoded correctly, or the resulting bytes are not a valid UTF8 string.
      Specified by:
      getPropertyString in class ServiceInfo
      Parameters:
      name - property name
      Returns:
      property text
    • getPropertyNames

      public Enumeration<String> getPropertyNames()
      Enumeration of the property names.
      Specified by:
      getPropertyNames in class ServiceInfo
      Returns:
      property name enumeration
    • getApplication

      public String getApplication()
      Returns the application of the service info suitable for printing.
      Specified by:
      getApplication in class ServiceInfo
      Returns:
      service application
    • getDomain

      public String getDomain()
      Returns the domain of the service info suitable for printing.
      Specified by:
      getDomain in class ServiceInfo
      Returns:
      service domain
    • getProtocol

      public String getProtocol()
      Returns the protocol of the service info suitable for printing.
      Specified by:
      getProtocol in class ServiceInfo
      Returns:
      service protocol
    • getSubtype

      public String getSubtype()
      Returns the sub type of the service info suitable for printing.
      Specified by:
      getSubtype in class ServiceInfo
      Returns:
      service sub type
    • getQualifiedNameMap

      public Map<ServiceInfo.Fields,String> getQualifiedNameMap()
      Returns a dictionary of the fully qualified name component of this service.
      Specified by:
      getQualifiedNameMap in class ServiceInfo
      Returns:
      dictionary of the fully qualified name components
    • updateRecord

      public void updateRecord(DNSCache dnsCache, long now, DNSEntry dnsEntry)
      JmDNS callback to update a DNS record.
      Parameters:
      dnsCache -
      now -
      dnsEntry -
    • hasData

      public boolean hasData()
      Returns true if the service info is filled with data.
      Specified by:
      hasData in class ServiceInfo
      Returns:
      true if the service info has data, false otherwise.
    • advanceState

      public boolean advanceState(DNSTask task)
      Sets the state and notifies all objects that wait on the ServiceInfo.
      Specified by:
      advanceState in interface DNSStatefulObject
      Parameters:
      task - associated task
      Returns:
      true</code if the state was changed by this thread, false otherwise.
      See Also:
    • revertState

      public boolean revertState()
      Sets the state and notifies all objects that wait on the ServiceInfo.
      Specified by:
      revertState in interface DNSStatefulObject
      Returns:
      true</code if the state was changed by this thread, false otherwise.
      See Also:
    • cancelState

      public boolean cancelState()
      Sets the state and notifies all objects that wait on the ServiceInfo.
      Specified by:
      cancelState in interface DNSStatefulObject
      Returns:
      true</code if the state was changed by this thread, false otherwise.
    • closeState

      public boolean closeState()
      Sets the state and notifies all objects that wait on the ServiceInfo.
      Specified by:
      closeState in interface DNSStatefulObject
      Returns:
      true</code if the state was changed by this thread, false otherwise.
    • recoverState

      public boolean recoverState()
      Sets the state and notifies all objects that wait on the ServiceInfo.
      Specified by:
      recoverState in interface DNSStatefulObject
      Returns:
      true</code if the state was changed by this thread, false otherwise.
    • removeAssociationWithTask

      public void removeAssociationWithTask(DNSTask task)
      Remove the association of the task with this Object.
      Specified by:
      removeAssociationWithTask in interface DNSStatefulObject
      Parameters:
      task - associated task
    • associateWithTask

      public void associateWithTask(DNSTask task, DNSState state)
      Sets the task associated with this Object.
      Specified by:
      associateWithTask in interface DNSStatefulObject
      Parameters:
      task - associated task
      state - state of the task
    • isAssociatedWithTask

      public boolean isAssociatedWithTask(DNSTask task, DNSState state)
      Checks if this object is associated with the task and in the same state.
      Specified by:
      isAssociatedWithTask in interface DNSStatefulObject
      Parameters:
      task - associated task
      state - state of the task
      Returns:
      true is the task is associated with this object, false otherwise.
    • isProbing

      public boolean isProbing()
      Returns true, if this is a probing state.
      Specified by:
      isProbing in interface DNSStatefulObject
      Returns:
      true if probing state, false otherwise
    • isAnnouncing

      public boolean isAnnouncing()
      Returns true, if this is an announcing state.
      Specified by:
      isAnnouncing in interface DNSStatefulObject
      Returns:
      true if announcing state, false otherwise
    • isAnnounced

      public boolean isAnnounced()
      Returns true, if this is an announced state.
      Specified by:
      isAnnounced in interface DNSStatefulObject
      Returns:
      true if announced state, false otherwise
    • isCanceling

      public boolean isCanceling()
      Returns true, if this is a canceling state.
      Specified by:
      isCanceling in interface DNSStatefulObject
      Returns:
      true if canceling state, false otherwise
    • isCanceled

      public boolean isCanceled()
      Returns true, if this is a canceled state.
      Specified by:
      isCanceled in interface DNSStatefulObject
      Returns:
      true if canceled state, false otherwise
    • isClosing

      public boolean isClosing()
      Returns true, if this is a closing state.
      Specified by:
      isClosing in interface DNSStatefulObject
      Returns:
      true if closing state, false otherwise
    • isClosed

      public boolean isClosed()
      Returns true, if this is a closed state.
      Specified by:
      isClosed in interface DNSStatefulObject
      Returns:
      true if closed state, false otherwise
    • waitForAnnounced

      public boolean waitForAnnounced(long timeout)
      Waits for the object to be announced.
      Specified by:
      waitForAnnounced in interface DNSStatefulObject
      Parameters:
      timeout - the maximum time to wait in milliseconds.
      Returns:
      true if the object is announced, false otherwise
    • waitForCanceled

      public boolean waitForCanceled(long timeout)
      Waits for the object to be canceled.
      Specified by:
      waitForCanceled in interface DNSStatefulObject
      Parameters:
      timeout - the maximum time to wait in milliseconds.
      Returns:
      true if the object is canceled, false otherwise
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • getNiceTextString

      public String getNiceTextString()
      Returns a description of the service info suitable for printing.
      Specified by:
      getNiceTextString in class ServiceInfo
      Returns:
      service info description
    • clone

      public ServiceInfoImpl clone()
      Overrides:
      clone in class ServiceInfo
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • answers

      public Collection<DNSRecord> answers(DNSRecordClass recordClass, boolean unique, int ttl, HostInfo localHost)
      Create a series of answer that correspond with the give service info.
      Parameters:
      recordClass - record class of the query
      unique -
      ttl -
      localHost -
      Returns:
      collection of answers
    • setText

      public void setText(byte[] text) throws IllegalStateException
      Set the text for the service. Setting the text will fore a re-announce of the service.
      Specified by:
      setText in class ServiceInfo
      Parameters:
      text - the raw byte representation of the text field.
      Throws:
      IllegalStateException - if attempting to set the text for a non persistent service info.
    • setText

      public void setText(Map<String,?> props) throws IllegalStateException
      Set the text for the service. Setting the text will fore a re-announce of the service.
      Specified by:
      setText in class ServiceInfo
      Parameters:
      props - a key=value map that will be encoded into raw bytes.
      Throws:
      IllegalStateException - if attempting to set the text for a non persistent service info.
    • setDns

      public void setDns(JmDNSImpl dns)
    • getDns

      public JmDNSImpl getDns()
      Returns the DNS associated with this object.
      Specified by:
      getDns in interface DNSStatefulObject
      Returns:
      DNS resolver
    • isPersistent

      public boolean isPersistent()
      Returns true if ServiceListener.resolveService will be called whenever new new information is received.
      Specified by:
      isPersistent in class ServiceInfo
      Returns:
      the persistent
    • setNeedTextAnnouncing

      public void setNeedTextAnnouncing(boolean needTextAnnouncing)
      Parameters:
      needTextAnnouncing - the needTextAnnouncing to set
    • needTextAnnouncing

      public boolean needTextAnnouncing()
      Returns:
      the needTextAnnouncing
    • hasSameAddresses

      public boolean hasSameAddresses(ServiceInfo other)
      Description copied from class: ServiceInfo
      Compare addresses of another ServiceInfo
      Specified by:
      hasSameAddresses in class ServiceInfo
      Parameters:
      other - ServiceInfo to compare
      Returns:
      true if addresses are the same, false if not