Class ServiceInfoImpl

    • Method Detail

      • 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
      • 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.
      • 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
      • 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:
        ServiceInfo.getURLs()
      • 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
      • 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
      • 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:
        truefalse otherwise.
        See Also:
        DNSState.advance()
      • revertState

        public boolean revertState()
        Sets the state and notifies all objects that wait on the ServiceInfo.
        Specified by:
        revertState in interface DNSStatefulObject
        Returns:
        truefalse otherwise.
        See Also:
        DNSState.revert()
      • cancelState

        public boolean cancelState()
        Sets the state and notifies all objects that wait on the ServiceInfo.
        Specified by:
        cancelState in interface DNSStatefulObject
        Returns:
        truefalse otherwise.
      • closeState

        public boolean closeState()
        Sets the state and notifies all objects that wait on the ServiceInfo.
        Specified by:
        closeState in interface DNSStatefulObject
        Returns:
        truefalse otherwise.
      • recoverState

        public boolean recoverState()
        Sets the state and notifies all objects that wait on the ServiceInfo.
        Specified by:
        recoverState in interface DNSStatefulObject
        Returns:
        truefalse 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
      • getNiceTextString

        public String getNiceTextString()
        Returns a description of the service info suitable for printing.
        Specified by:
        getNiceTextString in class ServiceInfo
        Returns:
        service info description
      • 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)
      • 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