Browse Source

Add RX/TX dup counters to ETCP monitor GUI

- Add IDC_EDIT_ETCP_RX_DUP and IDC_EDIT_ETCP_TX_DUP controls
- Insert RX Dup / TX Dup fields after Retrans in ETCP Metrics group
- Update tooltips, metrics display and clear functions
congestion
Evgeny 5 months ago
parent
commit
2e3eb0976a
  1. 25
      tools/etcpmon/etcpmon_gui.c
  2. 4
      tools/etcpmon/etcpmon_gui.h

25
tools/etcpmon/etcpmon_gui.c

@ -315,19 +315,32 @@ static void CreateControls(struct etcpmon_app* app) {
WS_CHILD | WS_VISIBLE | ES_READONLY, WS_CHILD | WS_VISIBLE | ES_READONLY,
mx + 285, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_RETRANS, hInst, NULL); mx + 285, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_RETRANS, hInst, NULL);
my += 25;
CreateWindowExA(0, "STATIC", "RX Dup:",
WS_CHILD | WS_VISIBLE, mx, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL);
app->hEditEtcpRxDup = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | ES_READONLY,
mx + 85, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_RX_DUP, hInst, NULL);
CreateWindowExA(0, "STATIC", "TX Dup:",
WS_CHILD | WS_VISIBLE, mx + 200, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL);
app->hEditEtcpTxDup = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | ES_READONLY,
mx + 285, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_TX_DUP, hInst, NULL);
my += 25; my += 25;
CreateWindowExA(0, "STATIC", "ACKs:", CreateWindowExA(0, "STATIC", "ACKs:",
WS_CHILD | WS_VISIBLE, mx, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL); WS_CHILD | WS_VISIBLE, mx, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL);
app->hEditEtcpAcks = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", app->hEditEtcpAcks = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | ES_READONLY, WS_CHILD | WS_VISIBLE | ES_READONLY,
mx + 85, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_ACKS, hInst, NULL); mx + 85, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_ACKS, hInst, NULL);
CreateWindowExA(0, "STATIC", "Inflight:", CreateWindowExA(0, "STATIC", "Inflight:",
WS_CHILD | WS_VISIBLE, mx + 200, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL); WS_CHILD | WS_VISIBLE, mx + 200, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL);
app->hEditEtcpInflight = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", app->hEditEtcpInflight = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | ES_READONLY, WS_CHILD | WS_VISIBLE | ES_READONLY,
mx + 285, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_INFLIGHT, hInst, NULL); mx + 285, my, 100, 20, hWnd, (HMENU)IDC_EDIT_ETCP_INFLIGHT, hInst, NULL);
my += 25; my += 25;
CreateWindowExA(0, "STATIC", "Links:", CreateWindowExA(0, "STATIC", "Links:",
WS_CHILD | WS_VISIBLE, mx, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL); WS_CHILD | WS_VISIBLE, mx, my, 80, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL);
@ -738,6 +751,10 @@ static void CreateTooltips(struct etcpmon_app* app)
"etcp.bytes_sent_total / ETCP Connection\r\nTotal bytes sent since connection start"); "etcp.bytes_sent_total / ETCP Connection\r\nTotal bytes sent since connection start");
AddTooltip(app->hToolTip, app->hEditEtcpRetrans, AddTooltip(app->hToolTip, app->hEditEtcpRetrans,
"etcp.retrans_count / ETCP Connection\r\nNumber of retransmissions (resent packets)"); "etcp.retrans_count / ETCP Connection\r\nNumber of retransmissions (resent packets)");
AddTooltip(app->hToolTip, app->hEditEtcpRxDup,
"etcp.rx_dup_count / ETCP Connection\r\nLocal received duplicate packets counter");
AddTooltip(app->hToolTip, app->hEditEtcpTxDup,
"etcp.tx_dup_count / ETCP Connection\r\nRemote duplicate packets counter (from ACK)");
AddTooltip(app->hToolTip, app->hEditEtcpAcks, AddTooltip(app->hToolTip, app->hEditEtcpAcks,
"etcp.ack_count / ETCP Connection\r\nNumber of received ACK packets (confirmations)"); "etcp.ack_count / ETCP Connection\r\nNumber of received ACK packets (confirmations)");
AddTooltip(app->hToolTip, app->hEditEtcpInflight, AddTooltip(app->hToolTip, app->hEditEtcpInflight,
@ -1226,6 +1243,8 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app,
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_JITTER, "%.1f ms", metrics->etcp.jitter/10.f); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_JITTER, "%.1f ms", metrics->etcp.jitter/10.f);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_BYTES_SENT, "%llu", (unsigned long long)metrics->etcp.bytes_sent_total); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_BYTES_SENT, "%llu", (unsigned long long)metrics->etcp.bytes_sent_total);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_RETRANS, "%u", metrics->etcp.retrans_count); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_RETRANS, "%u", metrics->etcp.retrans_count);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_RX_DUP, "%u", metrics->etcp.rx_dup_count);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_TX_DUP, "%u", metrics->etcp.tx_dup_count);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_ACKS, "%u", metrics->etcp.ack_count); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_ACKS, "%u", metrics->etcp.ack_count);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_INFLIGHT, "%u bytes", metrics->etcp.unacked_bytes); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_INFLIGHT, "%u bytes", metrics->etcp.unacked_bytes);
UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_LINKS, "%u", metrics->etcp.links_count); UpdateEditIfChanged(hMain, IDC_EDIT_ETCP_LINKS, "%u", metrics->etcp.links_count);
@ -1373,6 +1392,8 @@ void etcpmon_gui_clear_metrics(struct etcpmon_app* app) {
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_JITTER, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_JITTER, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_BYTES_SENT, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_BYTES_SENT, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_RETRANS, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_RETRANS, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_RX_DUP, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_TX_DUP, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_ACKS, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_ACKS, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_INFLIGHT, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_INFLIGHT, "");
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_LINKS, ""); SetDlgItemTextA(app->hWndMain, IDC_EDIT_ETCP_LINKS, "");

4
tools/etcpmon/etcpmon_gui.h

@ -52,6 +52,8 @@ extern "C" {
#define IDC_EDIT_ETCP_ACKS 207 #define IDC_EDIT_ETCP_ACKS 207
#define IDC_EDIT_ETCP_INFLIGHT 208 #define IDC_EDIT_ETCP_INFLIGHT 208
#define IDC_EDIT_ETCP_LINKS 209 #define IDC_EDIT_ETCP_LINKS 209
#define IDC_EDIT_ETCP_RX_DUP 210
#define IDC_EDIT_ETCP_TX_DUP 211
/* TUN Metrics control IDs */ /* TUN Metrics control IDs */
#define IDC_EDIT_TUN_READ_BYTES 300 #define IDC_EDIT_TUN_READ_BYTES 300
@ -204,6 +206,8 @@ struct etcpmon_app {
HWND hEditEtcpJitter; HWND hEditEtcpJitter;
HWND hEditEtcpBytesSent; HWND hEditEtcpBytesSent;
HWND hEditEtcpRetrans; HWND hEditEtcpRetrans;
HWND hEditEtcpRxDup;
HWND hEditEtcpTxDup;
HWND hEditEtcpAcks; HWND hEditEtcpAcks;
HWND hEditEtcpInflight; HWND hEditEtcpInflight;
HWND hEditEtcpLinks; HWND hEditEtcpLinks;

Loading…
Cancel
Save