net.i2p.data.i2cp

## Class BandwidthLimitsMessage

- java.lang.Object
- - net.i2p.data.i2cp.I2CPMessageImpl
  - - net.i2p.data.i2cp.BandwidthLimitsMessage

- All Implemented Interfaces:
    I2CPMessage

      public class BandwidthLimitsMessage
      extends I2CPMessageImpl

  Tell the other side the limits

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `MESSAGE_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BandwidthLimitsMessage()`
    `BandwidthLimitsMessage(int in, int out)` Let's define it this way.
    `BandwidthLimitsMessage(int in, int out, int rin, int rinb, int rout, int routb, int sec)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `doReadMessage(InputStream in, int size)` Read in the payload part of the message (after the initial 4 byte size and 1 byte type)
    `protected byte[]` | `doWriteMessage()` Write out the payload part of the message (not including the 4 byte size and 1 byte type)
    `int[]` | `getLimits()`
    `int` | `getType()` Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessages
    `String` | `toString()`

    - ### Methods inherited from class net.i2p.data.i2cp.I2CPMessageImpl

      `readBytes, readMessage, readMessage, sessionId, writeBytes, writeMessage`

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

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

- - ### Field Detail

    - #### MESSAGE_TYPE

          public static final int MESSAGE_TYPE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### BandwidthLimitsMessage

          public BandwidthLimitsMessage()

    - #### BandwidthLimitsMessage

          public BandwidthLimitsMessage(int in,
                                        int out)

      Let's define it this way. Leave some extra. This is only local and rarely sent so we don't care about waste. 0) Client inbound limit (KBps) 1) Client outbound limit (KBps) 2) Router inbound limit (KBps) 3) Router inbound burst limit (KBps) 4) Router outbound limit (KBps) 5) Router outbound burst limit (KBps) 6) Router burst time (seconds) 7-15) undefined

    - #### BandwidthLimitsMessage

          public BandwidthLimitsMessage(int in,
                                        int out,
                                        int rin,
                                        int rinb,
                                        int rout,
                                        int routb,
                                        int sec)

      Parameters:
        `in` - Client inbound limit (KBps)
        `out` - Client outbound limit (KBps)
        `rin` - Router inbound limit (KBps)
        `rinb` - Router inbound burst limit (KBps)
        `rout` - Router outbound limit (KBps)
        `routb` - Router outbound burst limit (KBps)
        `sec` - Router burst time (seconds)

  - ### Method Detail

    - #### doReadMessage

          protected void doReadMessage(InputStream in,
                                       int size)
                                throws I2CPMessageException,
                                       IOException

      Description copied from class: `I2CPMessageImpl`
      Read in the payload part of the message (after the initial 4 byte size and 1 byte type)
      Specified by:
        `doReadMessage` in class `I2CPMessageImpl`
      Parameters:
        `in` - InputStream
        `size` - payload size
      Throws:
        `I2CPMessageException` - if the message format is invalid
        `IOException` - if there's an error reading from the stream

    - #### doWriteMessage

          protected byte[] doWriteMessage()
                                   throws I2CPMessageException,
                                          IOException

      Description copied from class: `I2CPMessageImpl`
      Write out the payload part of the message (not including the 4 byte size and 1 byte type)
      Specified by:
        `doWriteMessage` in class `I2CPMessageImpl`
      Returns:
        byte array
      Throws:
        `I2CPMessageException` - if the message cannot be written
        `IOException` - if there's an error writing to the stream

    - #### getLimits

          public int[] getLimits()

    - #### getType

          public int getType()

      Description copied from interface: `I2CPMessage`
      Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessages
      Returns:
        unique identifier for this type of message

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`