|
|
|
|
@ -436,7 +436,7 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
y = 915; |
|
|
|
|
CreateWindowExA(0, "BUTTON", "Queues & Errors", |
|
|
|
|
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, |
|
|
|
|
10, y, 880, 165, hWnd, (HMENU)IDC_STATIC_QUEUES, hInst, NULL); |
|
|
|
|
10, y, 880, 235, hWnd, (HMENU)IDC_STATIC_QUEUES, hInst, NULL); |
|
|
|
|
|
|
|
|
|
int qy = y + 22; |
|
|
|
|
int q_col1 = 20; |
|
|
|
|
@ -554,6 +554,64 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
app->hEditIdRxAckTill = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col2 + 245, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_RX_ACK_TILL, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* Normalizer - row 5 */ |
|
|
|
|
qy += 28; |
|
|
|
|
CreateWindowExA(0, "STATIC", "Norm:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1, qy, 40, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditNormInPkts = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 45, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_IN_PKTS, hInst, NULL); |
|
|
|
|
app->hEditNormInBytes = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 90, qy - 2, 55, 18, hWnd, (HMENU)IDC_EDIT_NORM_IN_BYTES, hInst, NULL); |
|
|
|
|
|
|
|
|
|
app->hEditNormOutPkts = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 150, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_OUT_PKTS, hInst, NULL); |
|
|
|
|
app->hEditNormOutBytes = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 195, qy - 2, 55, 18, hWnd, (HMENU)IDC_EDIT_NORM_OUT_BYTES, hInst, NULL); |
|
|
|
|
|
|
|
|
|
app->hEditNormAllocErr = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 255, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_ALLOC_ERR, hInst, NULL); |
|
|
|
|
app->hEditNormLogicErr = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 300, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_LOGIC_ERR, hInst, NULL); |
|
|
|
|
|
|
|
|
|
CreateWindowExA(0, "STATIC", "frag:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1 + 345, qy, 30, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditNormFragSize = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 380, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_FRAG_SIZE, hInst, NULL); |
|
|
|
|
|
|
|
|
|
CreateWindowExA(0, "STATIC", "buf:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1 + 425, qy, 30, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditNormDataPtr = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 460, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_DATA_PTR, hInst, NULL); |
|
|
|
|
app->hEditNormDataSize = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 505, qy - 2, 40, 18, hWnd, (HMENU)IDC_EDIT_NORM_DATA_SIZE, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* Normalizer cumulative totals - row 2 */ |
|
|
|
|
qy += 25; |
|
|
|
|
CreateWindowExA(0, "STATIC", "NormTot:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1, qy, 50, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditNormInTotPkts = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 55, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_NORM_IN_TOT_PKTS, hInst, NULL); |
|
|
|
|
app->hEditNormInTotBytes = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 120, qy - 2, 70, 18, hWnd, (HMENU)IDC_EDIT_NORM_IN_TOT_BYTES, hInst, NULL); |
|
|
|
|
|
|
|
|
|
app->hEditNormOutTotPkts = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 200, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_NORM_OUT_TOT_PKTS, hInst, NULL); |
|
|
|
|
app->hEditNormOutTotBytes = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 265, qy - 2, 70, 18, hWnd, (HMENU)IDC_EDIT_NORM_OUT_TOT_BYTES, hInst, NULL); |
|
|
|
|
} |
|
|
|
|
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { |
|
|
|
|
struct etcpmon_app* app = NULL; |
|
|
|
|
@ -876,6 +934,21 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app,
|
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_ID_LAST_DEL, "%u", metrics->etcp.last_delivered_id); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_ID_RX_ACK_TILL, "%u", metrics->etcp.rx_ack_till); |
|
|
|
|
|
|
|
|
|
/* Normalizer */ |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_IN_PKTS, "%u", metrics->etcp.norm_input_pkts); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_IN_BYTES, "%u", metrics->etcp.norm_input_bytes); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_OUT_PKTS, "%u", metrics->etcp.norm_output_pkts); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_OUT_BYTES, "%u", metrics->etcp.norm_output_bytes); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_ALLOC_ERR, "%u", metrics->etcp.norm_alloc_errors); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_LOGIC_ERR, "%u", metrics->etcp.norm_logic_errors); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_FRAG_SIZE, "%u", metrics->etcp.norm_frag_size); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_DATA_PTR, "%u", metrics->etcp.norm_data_ptr); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_DATA_SIZE, "%u", metrics->etcp.norm_data_size); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_IN_TOT_PKTS, "%llu", (unsigned long long)metrics->etcp.norm_in_total_pkts); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_IN_TOT_BYTES, "%llu", (unsigned long long)metrics->etcp.norm_in_total_bytes); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_OUT_TOT_PKTS, "%llu", (unsigned long long)metrics->etcp.norm_out_total_pkts); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_NORM_OUT_TOT_BYTES, "%llu", (unsigned long long)metrics->etcp.norm_out_total_bytes); |
|
|
|
|
|
|
|
|
|
/* Links list */ |
|
|
|
|
if (app->hListLinks) { |
|
|
|
|
SendMessage(app->hListLinks, LB_RESETCONTENT, 0, 0); |
|
|
|
|
@ -978,6 +1051,20 @@ void etcpmon_gui_clear_metrics(struct etcpmon_app* app) {
|
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ID_LAST_DEL, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ID_RX_ACK_TILL, ""); |
|
|
|
|
|
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_IN_PKTS, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_IN_BYTES, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_OUT_PKTS, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_OUT_BYTES, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_ALLOC_ERR, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_LOGIC_ERR, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_FRAG_SIZE, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_DATA_PTR, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_DATA_SIZE, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_IN_TOT_PKTS, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_IN_TOT_BYTES, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_OUT_TOT_PKTS, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_NORM_OUT_TOT_BYTES, ""); |
|
|
|
|
|
|
|
|
|
if (app->hListLinks) { |
|
|
|
|
SendMessage(app->hListLinks, LB_RESETCONTENT, 0, 0); |
|
|
|
|
} |
|
|
|
|
|