java.lang.Object
net.i2p.data.i2cp.I2CPMessageImpl
net.i2p.data.i2cp.BandwidthLimitsMessage
- All Implemented Interfaces:
I2CPMessage
Tell the other side the limits.
Field Summary
Modifier and TypeFieldDescriptionprivate int[]The limit values.private static final intNumber of limit values in the message.static final intMessage type identifier for bandwidth limit messages.Constructor Summary
ConstructorsConstructorDescriptionCreates a new BandwidthLimitsMessage with default values.BandwidthLimitsMessage(int in, int out) BandwidthLimitsMessage with the client inbound and outbound limits.BandwidthLimitsMessage(int in, int out, int rin, int rinb, int rout, int routb, int sec) All client and router bandwidth limits.Method Summary
Public MethodsModifier and TypeMethodDescriptionprotected voiddoReadMessage(InputStream in, int size) Read in the payload part of the message (after the initial 4 byte size and 1 byte type).protected byte[]Write out the payload part of the message (not including the 4 byte size and 1 byte type).int[]The bandwidth limit slots of this message.intgetType()Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessages.toString()Methods inherited from class I2CPMessageImpl
readBytes, readMessage, readMessage, sessionId, writeBytes, writeMessageModifier and TypeMethodDescriptionvoidreadBytes(InputStream in) Read the message from the stream, wrapping I2CPMessageException inDataFormatException.voidValidate the type and size of the message, and then read the message into the data structures.voidreadMessage(InputStream in, int length, int type) Read the body into the data structures.Return the SessionId for this type of message.voidwriteBytes(OutputStream out) Write the message to the stream, wrapping I2CPMessageException in DataFormatException.voidwriteMessage(OutputStream out) Write out the full message to the stream, including the 4 byte size and 1 byte type header.
Field Details
MESSAGE_TYPE
public static final int MESSAGE_TYPEMessage type identifier for bandwidth limit messages.- See Also:
LIMITS
data
private int[] dataThe limit values.
Constructor Details
BandwidthLimitsMessage
public BandwidthLimitsMessage()Creates a new BandwidthLimitsMessage with default values.BandwidthLimitsMessage
public BandwidthLimitsMessage(int in, int out) BandwidthLimitsMessage with the client inbound and outbound limits.Slot definitions. Slots 7-15 are left undefined and wasted. This message is only local and rarely sent, so we don't care about the 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.
- Parameters:
in- Client inbound limit (KBps)out- Client outbound limit (KBps)
BandwidthLimitsMessage
public BandwidthLimitsMessage(int in, int out, int rin, int rinb, int rout, int routb, int sec) All client and router bandwidth limits.- 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 Details
getLimits
public int[] getLimits()The bandwidth limit slots of this message.- Returns:
- the live array of limit slots, not a copy; slots 0-6 as defined by the constructors, slots 7-15 undefined
doReadMessage
Description copied from class:I2CPMessageImplRead in the payload part of the message (after the initial 4 byte size and 1 byte type).- Specified by:
doReadMessagein classI2CPMessageImpl- Parameters:
in- positioned just past the 4 byte size and 1 byte type headersize- how many payload bytes remain to be read- Throws:
I2CPMessageException- if the message format is invalidIOException- if there's an error reading from the stream
doWriteMessage
Description copied from class:I2CPMessageImplWrite out the payload part of the message (not including the 4 byte size and 1 byte type).- Specified by:
doWriteMessagein classI2CPMessageImpl- Returns:
- byte array
- Throws:
I2CPMessageException- if the message cannot be writtenIOException- if there's an error writing to the stream
getType
public int getType()Description copied from interface:I2CPMessageReturn 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