Package io.github.mahmoudimus.quic.frame
Record Class Frame.Ack
java.lang.Object
java.lang.Record
io.github.mahmoudimus.quic.frame.Frame.Ack
- Record Components:
ranges- the acknowledged ranges, largest first, at least oneackDelay- the ACK Delay field, in units of 2ack_delay_exponent microsecondsecn- the ECN counts, or null for a type 0x02 frame
- All Implemented Interfaces:
Frame
- Enclosing interface:
Frame
public static record Frame.Ack(List<Frame.AckRange> ranges, long ackDelay, Frame.EcnCounts ecn)
extends Record
implements Frame
An ACK frame (types 0x02 and 0x03). Ranges run from the largest packet number down, and
consecutive ranges are separated by at least one unacknowledged packet number, so they encode
exactly as quinn's
Ack::encode does.-
Nested Class Summary
Nested classes/interfaces inherited from interface io.github.mahmoudimus.quic.frame.Frame
Frame.Ack, Frame.AckFrequency, Frame.AckRange, Frame.ApplicationClose, Frame.ConnectionClose, Frame.Crypto, Frame.DataBlocked, Frame.Datagram, Frame.EcnCounts, Frame.HandshakeDone, Frame.ImmediateAck, Frame.MaxData, Frame.MaxStreamData, Frame.MaxStreams, Frame.NewConnectionId, Frame.NewToken, Frame.Padding, Frame.PathChallenge, Frame.PathResponse, Frame.Ping, Frame.ResetStream, Frame.RetireConnectionId, Frame.StopSending, Frame.Stream, Frame.StreamDataBlocked, Frame.StreamsBlocked -
Field Summary
Fields inherited from interface io.github.mahmoudimus.quic.frame.Frame
MAX_STREAM_COUNT -
Constructor Summary
ConstructorsConstructorDescriptionAck(List<Frame.AckRange> ranges, long ackDelay, Frame.EcnCounts ecn) An ACK frame. -
Method Summary
Modifier and TypeMethodDescriptionlongackDelay()Returns the value of theackDelayrecord component.booleancontains(long packetNumber) Whether the frame acknowledges a packet number.ecn()Returns the value of theecnrecord component.voidencode(ByteBuffer out) Writes the frame at the buffer's position.intThe encoded length.final booleanIndicates whether some other object is "equal to" this one.final inthashCode()Returns a hash code value for this object.longlargest()The largest acknowledged packet number.static Frame.Ackof(long ackDelay, Frame.EcnCounts ecn, long... packetNumbers) An ACK frame for a set of packet numbers, in any order and with duplicates: they are sorted and merged into ranges.ranges()Returns the value of therangesrecord component.final StringtoString()Returns a string representation of this record class.type()The frame type.longtypeCode()The exact type code this frame encodes with, flags included.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface io.github.mahmoudimus.quic.frame.Frame
isAckEliciting
-
Constructor Details
-
Ack
An ACK frame.- Parameters:
ranges- the acknowledged ranges, largest first, separated by gapsackDelay- the encoded ACK delayecn- the ECN counts, or null
-
-
Method Details
-
of
An ACK frame for a set of packet numbers, in any order and with duplicates: they are sorted and merged into ranges.- Parameters:
ackDelay- the encoded ACK delayecn- the ECN counts, or nullpacketNumbers- the acknowledged packet numbers, at least one- Returns:
- the frame
-
largest
public long largest()The largest acknowledged packet number.- Returns:
- the first range's largest packet number
-
contains
public boolean contains(long packetNumber) Whether the frame acknowledges a packet number.- Parameters:
packetNumber- the packet number- Returns:
- true if a range contains it
-
type
Description copied from interface:FrameThe frame type. -
typeCode
public long typeCode()Description copied from interface:FrameThe exact type code this frame encodes with, flags included. -
encodedLength
public int encodedLength()Description copied from interface:FrameThe encoded length.- Specified by:
encodedLengthin interfaceFrame- Returns:
- the bytes
Frame.encode(java.nio.ByteBuffer)writes
-
encode
Description copied from interface:FrameWrites the frame at the buffer's position. -
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared withObjects::equals(Object,Object); primitive components are compared with '=='. -
ranges
Returns the value of therangesrecord component.- Returns:
- the value of the
rangesrecord component
-
ackDelay
public long ackDelay()Returns the value of theackDelayrecord component.- Returns:
- the value of the
ackDelayrecord component
-
ecn
Returns the value of theecnrecord component.- Returns:
- the value of the
ecnrecord component
-