/*
* Copyright 2014 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package io.netty.channel.epoll;
/**
* <p>
* struct tcp_info
* {
* __u8 tcpi_state;
* __u8 tcpi_ca_state;
* __u8 tcpi_retransmits;
* __u8 tcpi_probes;
* __u8 tcpi_backoff;
* __u8 tcpi_options;
* __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
*
* __u32 tcpi_rto;
* __u32 tcpi_ato;
* __u32 tcpi_snd_mss;
* __u32 tcpi_rcv_mss;
*
* __u32 tcpi_unacked;
* __u32 tcpi_sacked;
* __u32 tcpi_lost;
* __u32 tcpi_retrans;
* __u32 tcpi_fackets;
*
* __u32 tcpi_last_data_sent;
* __u32 tcpi_last_ack_sent;
* __u32 tcpi_last_data_recv;
* __u32 tcpi_last_ack_recv;
*
* __u32 tcpi_pmtu;
* __u32 tcpi_rcv_ssthresh;
* __u32 tcpi_rtt;
* __u32 tcpi_rttvar;
* __u32 tcpi_snd_ssthresh;
* __u32 tcpi_snd_cwnd;
* __u32 tcpi_advmss;
* __u32 tcpi_reordering;
*
* __u32 tcpi_rcv_rtt;
* __u32 tcpi_rcv_space;
*
* __u32 tcpi_total_retrans;
* };
* </p>
*/
public final class EpollTcpInfo {
final int[] info = new int[32];
public int state() {
return info[0] & 0xFF;
}
public int caState() {
return info[1] & 0xFF;
}
public int retransmits() {
return info[2] & 0xFF;
}
public int probes() {
return info[3] & 0xFF;
}
public int backoff() {
return info[4] & 0xFF;
}
public int options() {
return info[5] & 0xFF;
}
public int sndWscale() {
return info[6] & 0xFF;
}
public int rcvWscale() {
return info[7] & 0xFF;
}
public long rto() {
return info[8] & 0xFFFFFFFFL;
}
public long ato() {
return info[9] & 0xFFFFFFFFL;
}
public long sndMss() {
return info[10] & 0xFFFFFFFFL;
}
public long rcvMss() {
return info[11] & 0xFFFFFFFFL;
}
public long unacked() {
return info[12] & 0xFFFFFFFFL;
}
public long sacked() {
return info[13] & 0xFFFFFFFFL;
}
public long lost() {
return info[14] & 0xFFFFFFFFL;
}
public long retrans() {
return info[15] & 0xFFFFFFFFL;
}
public long fackets() {
return info[16] & 0xFFFFFFFFL;
}
public long lastDataSent() {
return info[17] & 0xFFFFFFFFL;
}
public long lastAckSent() {
return info[18] & 0xFFFFFFFFL;
}
public long lastDataRecv() {
return info[19] & 0xFFFFFFFFL;
}
public long lastAckRecv() {
return info[20] & 0xFFFFFFFFL;
}
public long pmtu() {
return info[21] & 0xFFFFFFFFL;
}
public long rcvSsthresh() {
return info[22] & 0xFFFFFFFFL;
}
public long rtt() {
return info[23] & 0xFFFFFFFFL;
}
public long rttvar() {
return info[24] & 0xFFFFFFFFL;
}
public long sndSsthresh() {
return info[25] & 0xFFFFFFFFL;
}
public long sndCwnd() {
return info[26] & 0xFFFFFFFFL;
}
public long advmss() {
return info[27] & 0xFFFFFFFFL;
}
public long reordering() {
return info[28] & 0xFFFFFFFFL;
}
public long rcvRtt() {
return info[29] & 0xFFFFFFFFL;
}
public long rcvSpace() {
return info[30] & 0xFFFFFFFFL;
}
public long totalRetrans() {
return info[31] & 0xFFFFFFFFL;
}
}