DNSStateTask
Date: 2017-02-10

javax.jmdns.impl.tasks.state

## Class DNSStateTask

- java.lang.Object
- - java.util.TimerTask
  - - javax.jmdns.impl.tasks.DNSTask
    - - javax.jmdns.impl.tasks.state.DNSStateTask

- All Implemented Interfaces:
    java.lang.Runnable
  Direct Known Subclasses:
    Announcer, Canceler, Prober, Renewer

      public abstract class DNSStateTask
      extends DNSTask

  This is the root class for all state tasks. These tasks work with objects that implements the `DNSStatefulObject` interface and therefore participate in the state machine.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DNSStateTask(JmDNSImpl jmDNSImpl, int ttl)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `advanceObjectsState(java.util.List<DNSStatefulObject> list)`
    `protected abstract void` | `advanceTask()`
    `protected void` | `associate(DNSState state)` Associate the DNS host and the service infos with this task if not already associated and in the same state.
    `protected abstract DNSOutgoing` | `buildOutgoingForDNS(DNSOutgoing out)`
    `protected abstract DNSOutgoing` | `buildOutgoingForInfo(ServiceInfoImpl info, DNSOutgoing out)`
    `protected abstract boolean` | `checkRunCondition()`
    `protected abstract DNSOutgoing` | `createOugoing()`
    `static int` | `defaultTTL()`
    `abstract java.lang.String` | `getTaskDescription()`
    `protected DNSState` | `getTaskState()`
    `int` | `getTTL()`
    `protected abstract void` | `recoverTask(java.lang.Throwable e)`
    `protected void` | `removeAssociation()` Remove the DNS host and service info association with this task.
    `void` | `run()`
    `static void` | `setDefaultTTL(int value)` For testing only do not use in production.
    `protected void` | `setTaskState(DNSState taskState)`

    - ### Methods inherited from class javax.jmdns.impl.tasks.DNSTask

      `addAdditionalAnswer, addAnswer, addAnswer, addAuthoritativeAnswer, addQuestion, getDns, getName, start, toString`

    - ### Methods inherited from class java.util.TimerTask

      `cancel, scheduledExecutionTime`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### DNSStateTask

          public DNSStateTask(JmDNSImpl jmDNSImpl,
                      int ttl)

      Parameters:
        `jmDNSImpl` -
        `ttl` -

  - ### Method Detail

    - #### getTaskDescription

          public abstract java.lang.String getTaskDescription()

    - #### defaultTTL

          public static int defaultTTL()

    - #### setDefaultTTL

          public static void setDefaultTTL(int value)

      For testing only do not use in production.
      Parameters:
        `value` -

    - #### getTTL

          public int getTTL()

      Returns:
        the ttl

    - #### associate

          protected void associate(DNSState state)

      Associate the DNS host and the service infos with this task if not already associated and in the same state.
      Parameters:
        `state` - target state

    - #### removeAssociation

          protected void removeAssociation()

      Remove the DNS host and service info association with this task.

    - #### run

          public void run()

      Specified by:
        `run` in interface `java.lang.Runnable`
      Specified by:
        `run` in class `java.util.TimerTask`

    - #### checkRunCondition

          protected abstract boolean checkRunCondition()

    - #### buildOutgoingForDNS

          protected abstract DNSOutgoing buildOutgoingForDNS(DNSOutgoing out)
                                                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### buildOutgoingForInfo

          protected abstract DNSOutgoing buildOutgoingForInfo(ServiceInfoImpl info,
                                         DNSOutgoing out)
                                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### createOugoing

          protected abstract DNSOutgoing createOugoing()

    - #### advanceObjectsState

          protected void advanceObjectsState(java.util.List<DNSStatefulObject> list)

    - #### recoverTask

          protected abstract void recoverTask(java.lang.Throwable e)

    - #### advanceTask

          protected abstract void advanceTask()

    - #### getTaskState

          protected DNSState getTaskState()

      Returns:
        the taskState

    - #### setTaskState

          protected void setTaskState(DNSState taskState)

      Parameters:
        `taskState` - the taskState to set