You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
271 lines
7.2 KiB
271 lines
7.2 KiB
/* |
|
* etcpmon_gui.h - ETCP Monitor GUI Header |
|
*/ |
|
|
|
#ifndef ETCPMON_GUI_H |
|
#define ETCPMON_GUI_H |
|
|
|
/* Exclude winsock from windows.h to avoid conflict with winsock2.h */ |
|
#ifndef WIN32_LEAN_AND_MEAN |
|
#define WIN32_LEAN_AND_MEAN |
|
#endif |
|
|
|
/* Windows headers */ |
|
#include <windows.h> |
|
#include <stdint.h> |
|
|
|
/* Client structure is defined in etcpmon_client.h */ |
|
struct etcpmon_client; |
|
struct etcpmon_conn_info; |
|
struct etcpmon_rsp_metrics; |
|
struct etcpmon_link_metrics; |
|
|
|
/* Graph constants */ |
|
#include "etcpmon_graph.h" |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/* Window class name */ |
|
#define ETCPMON_WINDOW_CLASS "ETCPMonMainWindow" |
|
|
|
/* Control IDs */ |
|
#define IDC_STATIC -1 |
|
#define IDC_EDIT_ADDR 100 |
|
#define IDC_EDIT_PORT 101 |
|
#define IDC_BTN_CONNECT 102 |
|
#define IDC_BTN_DISCONNECT 103 |
|
#define IDC_LIST_CONNECTIONS 104 |
|
#define IDC_TIMER_UPDATE 105 |
|
|
|
/* ETCP Metrics control IDs */ |
|
#define IDC_EDIT_ETCP_NAME 200 |
|
#define IDC_EDIT_ETCP_RTT_LAST 201 |
|
#define IDC_EDIT_ETCP_RTT_AVG10 202 |
|
#define IDC_EDIT_ETCP_RTT_AVG100 203 |
|
#define IDC_EDIT_ETCP_JITTER 204 |
|
#define IDC_EDIT_ETCP_BYTES_SENT 205 |
|
#define IDC_EDIT_ETCP_RETRANS 206 |
|
#define IDC_EDIT_ETCP_ACKS 207 |
|
#define IDC_EDIT_ETCP_INFLIGHT 208 |
|
#define IDC_EDIT_ETCP_LINKS 209 |
|
|
|
/* TUN Metrics control IDs */ |
|
#define IDC_EDIT_TUN_READ_BYTES 300 |
|
#define IDC_EDIT_TUN_WRITE_BYTES 301 |
|
#define IDC_EDIT_TUN_READ_PKTS 302 |
|
#define IDC_EDIT_TUN_WRITE_PKTS 303 |
|
#define IDC_EDIT_TUN_READ_ERRS 304 |
|
#define IDC_EDIT_TUN_WRITE_ERRS 305 |
|
|
|
/* Routing Metrics control IDs */ |
|
#define IDC_EDIT_RT_ROUTED 306 |
|
#define IDC_EDIT_RT_DROPPED 307 |
|
#define IDC_EDIT_RT_TUN_IN_Q_PKTS 308 |
|
#define IDC_EDIT_RT_TUN_IN_Q_BYTES 309 |
|
#define IDC_EDIT_RT_TUN_OUT_Q_PKTS 310 |
|
#define IDC_EDIT_RT_TUN_OUT_Q_BYTES 311 |
|
#define IDC_EDIT_RT_COUNT 312 |
|
#define IDC_EDIT_RT_LOCAL 313 |
|
#define IDC_EDIT_RT_LEARNED 314 |
|
|
|
/* Link list control ID */ |
|
#define IDC_LIST_LINKS 400 |
|
|
|
/* Queue & Error Metrics control IDs */ |
|
#define IDC_STATIC_QUEUES 600 |
|
#define IDC_EDIT_Q_IN_Q_BYTES 601 |
|
#define IDC_EDIT_Q_IN_Q_PKTS 602 |
|
#define IDC_EDIT_Q_IN_SEND_BYTES 603 |
|
#define IDC_EDIT_Q_IN_SEND_PKTS 604 |
|
#define IDC_EDIT_Q_WAIT_ACK_BYTES 605 |
|
#define IDC_EDIT_Q_WAIT_ACK_PKTS 606 |
|
#define IDC_EDIT_Q_ACK_BYTES 607 |
|
#define IDC_EDIT_Q_ACK_PKTS 608 |
|
#define IDC_EDIT_Q_RECV_BYTES 609 |
|
#define IDC_EDIT_Q_RECV_PKTS 610 |
|
#define IDC_EDIT_Q_OUT_BYTES 611 |
|
#define IDC_EDIT_Q_OUT_PKTS 612 |
|
|
|
#define IDC_STATIC_ERRORS 620 |
|
#define IDC_EDIT_ERR_REINIT 621 |
|
#define IDC_EDIT_ERR_RESET 622 |
|
#define IDC_EDIT_ERR_PKT_FMT 623 |
|
|
|
#define IDC_STATIC_TIMERS 630 |
|
#define IDC_EDIT_TIMER_RETRANS 631 |
|
#define IDC_EDIT_TIMER_ACK_RESP 632 |
|
|
|
/* ID Metrics control IDs */ |
|
#define IDC_STATIC_IDS 640 |
|
#define IDC_EDIT_ID_NEXT_TX 641 |
|
#define IDC_EDIT_ID_LAST_RX 642 |
|
#define IDC_EDIT_ID_LAST_DEL 643 |
|
#define IDC_EDIT_ID_RX_ACK_TILL 644 |
|
|
|
/* Graph control ID */ |
|
#define IDC_GRAPH 500 |
|
|
|
/* Channel block IDs */ |
|
#define IDC_CH_NAME_0 510 |
|
#define IDC_CH_VALUE_0 520 |
|
#define IDC_CH_CHECK_0 530 |
|
#define IDC_CH_NAME_1 511 |
|
#define IDC_CH_VALUE_1 521 |
|
#define IDC_CH_CHECK_1 531 |
|
#define IDC_CH_NAME_2 512 |
|
#define IDC_CH_VALUE_2 522 |
|
#define IDC_CH_CHECK_2 532 |
|
#define IDC_CH_NAME_3 513 |
|
#define IDC_CH_VALUE_3 523 |
|
#define IDC_CH_CHECK_3 533 |
|
#define IDC_CH_NAME_4 514 |
|
#define IDC_CH_VALUE_4 524 |
|
#define IDC_CH_CHECK_4 534 |
|
#define IDC_CH_NAME_5 515 |
|
#define IDC_CH_VALUE_5 525 |
|
#define IDC_CH_CHECK_5 535 |
|
#define IDC_CH_NAME_6 516 |
|
#define IDC_CH_VALUE_6 526 |
|
#define IDC_CH_CHECK_6 536 |
|
#define IDC_CH_NAME_7 517 |
|
#define IDC_CH_VALUE_7 527 |
|
#define IDC_CH_CHECK_7 537 |
|
|
|
/* Main application structure */ |
|
struct etcpmon_app { |
|
HINSTANCE hInstance; |
|
HWND hWndMain; |
|
HWND hWndStatus; |
|
|
|
HPEN hGraphPens[GRAPH_METRICS_COUNT]; |
|
|
|
/* Connection controls */ |
|
HWND hEditAddr; |
|
HWND hEditPort; |
|
HWND hBtnConnect; |
|
HWND hBtnDisconnect; |
|
HWND hListConnections; |
|
|
|
/* ETCP metrics controls */ |
|
HWND hEditEtcpName; |
|
HWND hEditEtcpRttLast; |
|
HWND hEditEtcpRttAvg10; |
|
HWND hEditEtcpRttAvg100; |
|
HWND hEditEtcpJitter; |
|
HWND hEditEtcpBytesSent; |
|
HWND hEditEtcpRetrans; |
|
HWND hEditEtcpAcks; |
|
HWND hEditEtcpInflight; |
|
HWND hEditEtcpLinks; |
|
|
|
/* TUN metrics controls */ |
|
HWND hEditTunReadBytes; |
|
HWND hEditTunWriteBytes; |
|
HWND hEditTunReadPkts; |
|
HWND hEditTunWritePkts; |
|
HWND hEditTunReadErrs; |
|
HWND hEditTunWriteErrs; |
|
|
|
/* Routing metrics controls */ |
|
HWND hEditRtRouted; |
|
HWND hEditRtDropped; |
|
HWND hEditRtTunInQPkts; |
|
HWND hEditRtTunInQBytes; |
|
HWND hEditRtTunOutQPkts; |
|
HWND hEditRtTunOutQBytes; |
|
HWND hEditRtCount; |
|
HWND hEditRtLocal; |
|
HWND hEditRtLearned; |
|
|
|
/* Links list */ |
|
HWND hListLinks; |
|
|
|
/* Queue metrics controls */ |
|
HWND hEditQInQBytes; |
|
HWND hEditQInQPkts; |
|
HWND hEditQInSendBytes; |
|
HWND hEditQInSendPkts; |
|
HWND hEditQWaitAckBytes; |
|
HWND hEditQWaitAckPkts; |
|
HWND hEditQAckBytes; |
|
HWND hEditQAckPkts; |
|
HWND hEditQRecvBytes; |
|
HWND hEditQRecvPkts; |
|
HWND hEditQOutBytes; |
|
HWND hEditQOutPkts; |
|
|
|
/* Error counters */ |
|
HWND hEditErrReinit; |
|
HWND hEditErrReset; |
|
HWND hEditErrPktFmt; |
|
|
|
/* Timer flags */ |
|
HWND hEditTimerRetrans; |
|
HWND hEditTimerAckResp; |
|
|
|
/* ID metrics */ |
|
HWND hEditIdNextTx; |
|
HWND hEditIdLastRx; |
|
HWND hEditIdLastDel; |
|
HWND hEditIdRxAckTill; |
|
|
|
/* Graph controls */ |
|
HWND hGraphWnd; |
|
HWND hChannelName[GRAPH_METRICS_COUNT]; |
|
HWND hChannelValue[GRAPH_METRICS_COUNT]; |
|
HWND hChannelCheck[GRAPH_METRICS_COUNT]; |
|
|
|
/* Cursor (вертикальная линия остаётся) */ |
|
int graph_cursor_x; |
|
int graph_cursor_y; |
|
int graph_cursor_active; |
|
|
|
/* Client state */ |
|
struct etcpmon_client* client; |
|
|
|
/* Timer */ |
|
UINT_PTR updateTimer; |
|
DWORD last_poll_time; |
|
int isConnected; |
|
}; |
|
|
|
/* Initialize application */ |
|
int etcpmon_gui_init(struct etcpmon_app* app, HINSTANCE hInstance); |
|
|
|
/* Create main window */ |
|
HWND etcpmon_gui_create_window(struct etcpmon_app* app); |
|
|
|
/* Run message loop */ |
|
int etcpmon_gui_run(struct etcpmon_app* app); |
|
|
|
/* Cleanup */ |
|
void etcpmon_gui_cleanup(struct etcpmon_app* app); |
|
|
|
/* Update connection status display */ |
|
void etcpmon_gui_set_status(struct etcpmon_app* app, const char* text); |
|
|
|
/* Update connection list */ |
|
void etcpmon_gui_update_conn_list(struct etcpmon_app* app, |
|
struct etcpmon_conn_info* list, |
|
uint8_t count); |
|
|
|
/* Update metrics display */ |
|
void etcpmon_gui_update_metrics(struct etcpmon_app* app, |
|
struct etcpmon_rsp_metrics* metrics, |
|
struct etcpmon_link_metrics* links, |
|
uint8_t links_count); |
|
|
|
/* Clear metrics display */ |
|
void etcpmon_gui_clear_metrics(struct etcpmon_app* app); |
|
|
|
/* Update graph with new metrics */ |
|
void etcpmon_gui_update_graph(struct etcpmon_app* app, |
|
struct etcpmon_rsp_metrics* metrics); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif /* ETCPMON_GUI_H */
|
|
|