1
2
3
4
5 package oshi.software.os.unix.aix;
6
7 import static oshi.util.Memoizer.defaultExpiration;
8 import static oshi.util.Memoizer.memoize;
9
10 import java.util.function.Supplier;
11
12 import com.sun.jna.Native;
13 import com.sun.jna.platform.unix.aix.Perfstat.perfstat_protocol_t;
14
15 import oshi.annotation.concurrent.ThreadSafe;
16 import oshi.driver.unix.aix.perfstat.PerfstatProtocol;
17 import oshi.software.common.AbstractInternetProtocolStats;
18
19
20
21
22 @ThreadSafe
23 public class AixInternetProtocolStats extends AbstractInternetProtocolStats {
24
25 private Supplier<perfstat_protocol_t[]> ipstats = memoize(PerfstatProtocol::queryProtocols, defaultExpiration());
26
27 @Override
28 public TcpStats getTCPv4Stats() {
29 for (perfstat_protocol_t stat : ipstats.get()) {
30 if ("tcp".equals(Native.toString(stat.name))) {
31 return new TcpStats(stat.u.tcp.established, stat.u.tcp.initiated, stat.u.tcp.accepted,
32 stat.u.tcp.dropped, stat.u.tcp.dropped, stat.u.tcp.opackets, stat.u.tcp.ipackets, 0L,
33 stat.u.tcp.ierrors, 0L);
34 }
35 }
36 return new TcpStats(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L);
37 }
38
39 @Override
40 public UdpStats getUDPv4Stats() {
41 for (perfstat_protocol_t stat : ipstats.get()) {
42 if ("udp".equals(Native.toString(stat.name))) {
43 return new UdpStats(stat.u.udp.opackets, stat.u.udp.ipackets, stat.u.udp.no_socket, stat.u.udp.ierrors);
44 }
45 }
46 return new UdpStats(0L, 0L, 0L, 0L);
47 }
48 }