net.i2p.data

## Class Lease

- java.lang.Object
- - net.i2p.data.DataStructureImpl
  - - net.i2p.data.Lease

- All Implemented Interfaces:
    DataStructure

      public class Lease
      extends DataStructureImpl

  Defines the proof that a particular router / tunnel is allowed to receive messages for a particular Destination during some period of time.
  Author:
    jrandom

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Lease()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object object)`
    `Date` | `getEndDate()`
    `Hash` | `getGateway()` Retrieve the router at which the destination can be contacted
    `int` | `getNumFailure()` Deprecated. unused
    `int` | `getNumSuccess()` Deprecated. unused
    `TunnelId` | `getTunnelId()` Tunnel on the gateway to communicate with
    `int` | `hashCode()`
    `boolean` | `isExpired()` has this lease already expired?
    `boolean` | `isExpired(long fudgeFactor)` has this lease already expired (giving allowing up the fudgeFactor milliseconds for clock skew)?
    `void` | `readBytes(InputStream in)` Load up the current object with data from the given stream.
    `void` | `setEndDate(Date date)`
    `void` | `setGateway(Hash ident)` Configure the router at which the destination can be contacted
    `void` | `setNumFailure(int num)` Deprecated. unused
    `void` | `setNumSuccess(int num)` Deprecated. unused
    `void` | `setTunnelId(TunnelId id)` Configure the tunnel on the gateway to communicate with
    `String` | `toString()`
    `void` | `writeBytes(OutputStream out)` Write out the data structure to the stream, using the format defined in the I2P data structure specification.

    - ### Methods inherited from class net.i2p.data.DataStructureImpl

      `calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray`

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

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

- - ### Constructor Detail

    - #### Lease

          public Lease()

  - ### Method Detail

    - #### getGateway

          public Hash getGateway()

      Retrieve the router at which the destination can be contacted
      Returns:
        identity of the router acting as a gateway

    - #### setGateway

          public void setGateway(Hash ident)

      Configure the router at which the destination can be contacted
      Parameters:
        `ident` - router acting as the gateway

    - #### getTunnelId

          public TunnelId getTunnelId()

      Tunnel on the gateway to communicate with
      Returns:
        tunnel ID

    - #### setTunnelId

          public void setTunnelId(TunnelId id)

      Configure the tunnel on the gateway to communicate with
      Parameters:
        `id` - tunnel ID

    - #### getEndDate

          public Date getEndDate()

    - #### setEndDate

          public void setEndDate(Date date)

    - #### getNumSuccess

          public int getNumSuccess()

      Deprecated. unused
      Transient attribute of the lease, used to note how many times messages sent to the destination through the current lease were successful.

    - #### setNumSuccess

          public void setNumSuccess(int num)

      Deprecated. unused

    - #### getNumFailure

          public int getNumFailure()

      Deprecated. unused
      Transient attribute of the lease, used to note how many times messages sent to the destination through the current lease failed.

    - #### setNumFailure

          public void setNumFailure(int num)

      Deprecated. unused

    - #### isExpired

          public boolean isExpired()

      has this lease already expired?

    - #### isExpired

          public boolean isExpired(long fudgeFactor)

      has this lease already expired (giving allowing up the fudgeFactor milliseconds for clock skew)?

    - #### readBytes

          public void readBytes(InputStream in)
                         throws DataFormatException,
                                IOException

      Description copied from interface: `DataStructure`
      Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification.
      Parameters:
        `in` - stream to read from
      Throws:
        `DataFormatException` - if the data is improperly formatted
        `IOException` - if there was a problem reading the stream

    - #### writeBytes

          public void writeBytes(OutputStream out)
                          throws DataFormatException,
                                 IOException

      Description copied from interface: `DataStructure`
      Write out the data structure to the stream, using the format defined in the I2P data structure specification.
      Parameters:
        `out` - stream to write to
      Throws:
        `DataFormatException` - if the data was incomplete or not yet ready to be written
        `IOException` - if there was a problem writing to the stream

    - #### equals

          public boolean equals(Object object)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`