|
|
|
|
@ -727,175 +727,175 @@ static void CreateTooltips(struct etcpmon_app* app)
|
|
|
|
|
|
|
|
|
|
/* ETCP Metrics */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpRttLast, |
|
|
|
|
"etcp.rtt_last / ETCP Connection\r\nВремя приема-передачи последнего пакета (RTT), единицы 0.1 мс"); |
|
|
|
|
"etcp.rtt_last / ETCP Connection\r\nRound-trip time of the last packet (RTT), units 0.1 ms"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpRttAvg10, |
|
|
|
|
"etcp.rtt_avg_10 / ETCP Connection\r\nСредний RTT за последние 10 пакетов, единицы 0.1 мс"); |
|
|
|
|
"etcp.rtt_avg_10 / ETCP Connection\r\nAverage RTT over last 10 packets, units 0.1 ms"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpRttAvg100, |
|
|
|
|
"etcp.rtt_avg_100 / ETCP Connection\r\nСредний RTT за последние 100 пакетов, единицы 0.1 мс"); |
|
|
|
|
"etcp.rtt_avg_100 / ETCP Connection\r\nAverage RTT over last 100 packets, units 0.1 ms"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpJitter, |
|
|
|
|
"etcp.jitter / ETCP Connection\r\nРазброс RTT (макс - мин), единицы 0.1 мс"); |
|
|
|
|
"etcp.jitter / ETCP Connection\r\nRTT spread (max - min), units 0.1 ms"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpBytesSent, |
|
|
|
|
"etcp.bytes_sent_total / ETCP Connection\r\nОбщий объем отправленных байт за все время"); |
|
|
|
|
"etcp.bytes_sent_total / ETCP Connection\r\nTotal bytes sent since connection start"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpRetrans, |
|
|
|
|
"etcp.retrans_count / ETCP Connection\r\nКоличество ретрансляций (повторных отправок пакетов)"); |
|
|
|
|
"etcp.retrans_count / ETCP Connection\r\nNumber of retransmissions (resent packets)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpAcks, |
|
|
|
|
"etcp.ack_count / ETCP Connection\r\nКоличество полученных ACK-пакетов (подтверждений)"); |
|
|
|
|
"etcp.ack_count / ETCP Connection\r\nNumber of received ACK packets (confirmations)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpInflight, |
|
|
|
|
"etcp.unacked_bytes / ETCP Connection\r\nБайт в полете: отправлено, но еще не подтверждено"); |
|
|
|
|
"etcp.unacked_bytes / ETCP Connection\r\nBytes in flight: sent but not yet acknowledged"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditEtcpLinks, |
|
|
|
|
"etcp.links_count / ETCP Connection\r\nКоличество активных линков (физических соединений)"); |
|
|
|
|
"etcp.links_count / ETCP Connection\r\nNumber of active links (physical connections)"); |
|
|
|
|
|
|
|
|
|
/* TUN Metrics */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunReadBytes, |
|
|
|
|
"tun.bytes_read / TUN Interface\r\nВсего байт прочитано из TUN-интерфейса"); |
|
|
|
|
"tun.bytes_read / TUN Interface\r\nTotal bytes read from TUN interface"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunWriteBytes, |
|
|
|
|
"tun.bytes_written / TUN Interface\r\nВсего байт записано в TUN-интерфейс"); |
|
|
|
|
"tun.bytes_written / TUN Interface\r\nTotal bytes written to TUN interface"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunReadPkts, |
|
|
|
|
"tun.packets_read / TUN Interface\r\nВсего пакетов прочитано из TUN-интерфейса"); |
|
|
|
|
"tun.packets_read / TUN Interface\r\nTotal packets read from TUN interface"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunWritePkts, |
|
|
|
|
"tun.packets_written / TUN Interface\r\nВсего пакетов записано в TUN-интерфейс"); |
|
|
|
|
"tun.packets_written / TUN Interface\r\nTotal packets written to TUN interface"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunReadErrs, |
|
|
|
|
"tun.read_errors / TUN Interface\r\nОшибок чтения из TUN-интерфейса"); |
|
|
|
|
"tun.read_errors / TUN Interface\r\nRead errors from TUN interface"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTunWriteErrs, |
|
|
|
|
"tun.write_errors / TUN Interface\r\nОшибок записи в TUN-интерфейс"); |
|
|
|
|
"tun.write_errors / TUN Interface\r\nWrite errors to TUN interface"); |
|
|
|
|
|
|
|
|
|
/* Routing Metrics */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtRouted, |
|
|
|
|
"tun.routed_packets / Routing\r\nКоличество успешно маршрутизированных пакетов"); |
|
|
|
|
"tun.routed_packets / Routing\r\nNumber of successfully routed packets"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtDropped, |
|
|
|
|
"tun.dropped_packets / Routing\r\nКоличество отброшенных (не маршрутизированных) пакетов"); |
|
|
|
|
"tun.dropped_packets / Routing\r\nNumber of dropped (not routed) packets"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtTunInQPkts, |
|
|
|
|
"tun.tun_in_q_packets / Routing\r\nПакетов во входной очереди TUN"); |
|
|
|
|
"tun.tun_in_q_packets / Routing\r\nPackets in TUN input queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtTunInQBytes, |
|
|
|
|
"tun.tun_in_q_bytes / Routing\r\nБайт во входной очереди TUN"); |
|
|
|
|
"tun.tun_in_q_bytes / Routing\r\nBytes in TUN input queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtTunOutQPkts, |
|
|
|
|
"tun.tun_out_q_packets / Routing\r\nПакетов в выходной очереди TUN"); |
|
|
|
|
"tun.tun_out_q_packets / Routing\r\nPackets in TUN output queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtTunOutQBytes, |
|
|
|
|
"tun.tun_out_q_bytes / Routing\r\nБайт в выходной очереди TUN"); |
|
|
|
|
"tun.tun_out_q_bytes / Routing\r\nBytes in TUN output queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtCount, |
|
|
|
|
"tun.rt_count / Routing\r\nОбщее количество записей в таблице маршрутизации"); |
|
|
|
|
"tun.rt_count / Routing\r\nTotal entries in routing table"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtLocal, |
|
|
|
|
"tun.rt_local / Routing\r\nЛокальных (статических) маршрутов"); |
|
|
|
|
"tun.rt_local / Routing\r\nLocal (static) routes"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtLearned, |
|
|
|
|
"tun.rt_learned / Routing\r\nИзученных (динамических/BGP) маршрутов"); |
|
|
|
|
"tun.rt_learned / Routing\r\nLearned (dynamic/BGP) routes"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtBgpSenders, |
|
|
|
|
"tun.rt_bgp_senders / Routing BGP\r\nКоличество BGP-отправителей в списке"); |
|
|
|
|
"tun.rt_bgp_senders / Routing BGP\r\nNumber of BGP senders in list"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditRtBgpNodes, |
|
|
|
|
"tun.rt_bgp_nodes / Routing BGP\r\nКоличество BGP-узлов"); |
|
|
|
|
"tun.rt_bgp_nodes / Routing BGP\r\nNumber of BGP nodes"); |
|
|
|
|
|
|
|
|
|
/* Queue Metrics */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQInQBytes, |
|
|
|
|
"etcp.input_queue_bytes / ETCP Queue\r\nБайт во входной очереди (принято от TUN, ожидает отправки)"); |
|
|
|
|
"etcp.input_queue_bytes / ETCP Queue\r\nBytes in input queue (received from TUN, waiting to send)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQInQPkts, |
|
|
|
|
"etcp.input_queue_packets / ETCP Queue\r\nПакетов во входной очереди"); |
|
|
|
|
"etcp.input_queue_packets / ETCP Queue\r\nPackets in input queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQInSendBytes, |
|
|
|
|
"etcp.input_send_q_bytes / ETCP Queue\r\nБайт в очереди отправки (готовы к отправке по линкам)"); |
|
|
|
|
"etcp.input_send_q_bytes / ETCP Queue\r\nBytes in send queue (ready to send over links)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQInSendPkts, |
|
|
|
|
"etcp.input_send_q_packets / ETCP Queue\r\nПакетов в очереди отправки"); |
|
|
|
|
"etcp.input_send_q_packets / ETCP Queue\r\nPackets in send queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQWaitAckBytes, |
|
|
|
|
"etcp.input_wait_ack_bytes / ETCP Queue\r\nБайт в очереди ожидания ACK (отправлено, ждем подтверждения)"); |
|
|
|
|
"etcp.input_wait_ack_bytes / ETCP Queue\r\nBytes waiting for ACK (sent, awaiting confirmation)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQWaitAckPkts, |
|
|
|
|
"etcp.input_wait_ack_packets / ETCP Queue\r\nПакетов в очереди ожидания ACK"); |
|
|
|
|
"etcp.input_wait_ack_packets / ETCP Queue\r\nPackets waiting for ACK"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQWaitAckOptInfl, |
|
|
|
|
"etcp.optimal_inflight / ETCP Congestion Control\r\nЦелевое (оптимальное) окно перегрузки в байтах"); |
|
|
|
|
"etcp.optimal_inflight / ETCP Congestion Control\r\nTarget (optimal) congestion window in bytes"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQAckBytes, |
|
|
|
|
"etcp.ack_q_bytes / ETCP Queue\r\nБайт в очереди ACK (подтверждения, готовы к отправке)"); |
|
|
|
|
"etcp.ack_q_bytes / ETCP Queue\r\nBytes in ACK queue (acknowledgments ready to send)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQAckPkts, |
|
|
|
|
"etcp.ack_q_packets / ETCP Queue\r\nПакетов в очереди ACK"); |
|
|
|
|
"etcp.ack_q_packets / ETCP Queue\r\nPackets in ACK queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQRecvBytes, |
|
|
|
|
"etcp.recv_q_bytes / ETCP Queue\r\nБайт в очереди приема (принято, ожидает доставки в TUN)"); |
|
|
|
|
"etcp.recv_q_bytes / ETCP Queue\r\nBytes in receive queue (received, awaiting delivery to TUN)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQRecvPkts, |
|
|
|
|
"etcp.recv_q_packets / ETCP Queue\r\nПакетов в очереди приема"); |
|
|
|
|
"etcp.recv_q_packets / ETCP Queue\r\nPackets in receive queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQOutBytes, |
|
|
|
|
"etcp.output_queue_bytes / ETCP Queue\r\nБайт в выходной очереди (готовы к записи в TUN)"); |
|
|
|
|
"etcp.output_queue_bytes / ETCP Queue\r\nBytes in output queue (ready to write to TUN)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditQOutPkts, |
|
|
|
|
"etcp.output_queue_packets / ETCP Queue\r\nПакетов в выходной очереди"); |
|
|
|
|
"etcp.output_queue_packets / ETCP Queue\r\nPackets in output queue"); |
|
|
|
|
|
|
|
|
|
/* Error Counters */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditErrReinit, |
|
|
|
|
"etcp.reinit_count / ETCP Errors\r\nСчетчик реинициализаций соединения"); |
|
|
|
|
"etcp.reinit_count / ETCP Errors\r\nConnection reinitialization counter"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditErrReset, |
|
|
|
|
"etcp.reset_count / ETCP Errors\r\nСчетчик сбросов (reset) соединения"); |
|
|
|
|
"etcp.reset_count / ETCP Errors\r\nConnection reset counter"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditErrPktFmt, |
|
|
|
|
"etcp.pkt_format_errors / ETCP Errors\r\nОшибок формата пакета (невалидные заголовки)"); |
|
|
|
|
"etcp.pkt_format_errors / ETCP Errors\r\nPacket format errors (invalid headers)"); |
|
|
|
|
|
|
|
|
|
/* Timer Flags */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTimerRetrans, |
|
|
|
|
"etcp.retrans_timer_active / ETCP Timers\r\nАктивен ли таймер ретрансляции (ON/OFF)"); |
|
|
|
|
"etcp.retrans_timer_active / ETCP Timers\r\nRetransmission timer active (ON/OFF)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTimerAckResp, |
|
|
|
|
"etcp.ack_resp_timer_active / ETCP Timers\r\nАктивен ли таймер отложенных ACK"); |
|
|
|
|
"etcp.ack_resp_timer_active / ETCP Timers\r\nDelayed ACK response timer active"); |
|
|
|
|
|
|
|
|
|
/* WaitAck queue state */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditWaitAckSuspend, |
|
|
|
|
"etcp.wait_ack_cb_suspended / ETCP WaitAck\r\nCallback приостановлен (ожидание ACK блокирует передачу)"); |
|
|
|
|
"etcp.wait_ack_cb_suspended / ETCP WaitAck\r\nCallback suspended (waiting for ACK blocks transmission)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditWaitAckCb, |
|
|
|
|
"etcp.wait_ack_cb_set / ETCP WaitAck\r\nCallback установлен (есть обработчик ожидания ACK)"); |
|
|
|
|
"etcp.wait_ack_cb_set / ETCP WaitAck\r\nCallback set (waiting-for-ACK handler exists)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditWaitAckTimer, |
|
|
|
|
"etcp.wait_ack_resume_timeout / ETCP WaitAck\r\nТаймер возобновления передачи активен"); |
|
|
|
|
"etcp.wait_ack_resume_timeout / ETCP WaitAck\r\nResume transmission timer active"); |
|
|
|
|
|
|
|
|
|
/* ID Metrics */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditIdNextTx, |
|
|
|
|
"etcp.next_tx_id / ETCP Sequence\r\nСледующий ID для передачи (Sequence Number TX)"); |
|
|
|
|
"etcp.next_tx_id / ETCP Sequence\r\nNext transmit ID (TX Sequence Number)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditIdLastRx, |
|
|
|
|
"etcp.last_rx_id / ETCP Sequence\r\nПоследний принятый ID (Sequence Number RX)"); |
|
|
|
|
"etcp.last_rx_id / ETCP Sequence\r\nLast received ID (RX Sequence Number)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditIdLastDel, |
|
|
|
|
"etcp.last_delivered_id / ETCP Sequence\r\nПоследний доставленный ID (в TUN)"); |
|
|
|
|
"etcp.last_delivered_id / ETCP Sequence\r\nLast delivered ID (to TUN)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditIdRxAckTill, |
|
|
|
|
"etcp.rx_ack_till / ETCP Sequence\r\nДо какого ID подтвержден прием (ACK от получателя)"); |
|
|
|
|
"etcp.rx_ack_till / ETCP Sequence\r\nUp to which ID reception is confirmed (ACK from peer)"); |
|
|
|
|
|
|
|
|
|
/* Normalizer */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormInPkts, |
|
|
|
|
"etcp.norm_input_pkts / Packet Normalizer\r\nПакетов на входе нормализатора (текущие)"); |
|
|
|
|
"etcp.norm_input_pkts / Packet Normalizer\r\nPackets at normalizer input (current)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormInBytes, |
|
|
|
|
"etcp.norm_input_bytes / Packet Normalizer\r\nБайт на входе нормализатора (текущие)"); |
|
|
|
|
"etcp.norm_input_bytes / Packet Normalizer\r\nBytes at normalizer input (current)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormOutPkts, |
|
|
|
|
"etcp.norm_output_pkts / Packet Normalizer\r\nПакетов на выходе нормализатора (текущие)"); |
|
|
|
|
"etcp.norm_output_pkts / Packet Normalizer\r\nPackets at normalizer output (current)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormOutBytes, |
|
|
|
|
"etcp.norm_output_bytes / Packet Normalizer\r\nБайт на выходе нормализатора (текущие)"); |
|
|
|
|
"etcp.norm_output_bytes / Packet Normalizer\r\nBytes at normalizer output (current)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormAllocErr, |
|
|
|
|
"etcp.norm_alloc_errors / Packet Normalizer\r\nОшибок выделения памяти в нормализаторе"); |
|
|
|
|
"etcp.norm_alloc_errors / Packet Normalizer\r\nMemory allocation errors in normalizer"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormLogicErr, |
|
|
|
|
"etcp.norm_logic_errors / Packet Normalizer\r\nЛогических ошибок в нормализаторе"); |
|
|
|
|
"etcp.norm_logic_errors / Packet Normalizer\r\nLogic errors in normalizer"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormFragSize, |
|
|
|
|
"etcp.norm_frag_size / Packet Normalizer\r\nРазмер текущего фрагмента"); |
|
|
|
|
"etcp.norm_frag_size / Packet Normalizer\r\nCurrent fragment size"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormDataPtr, |
|
|
|
|
"etcp.norm_data_ptr / Packet Normalizer\r\nУказатель на данные в буфере"); |
|
|
|
|
"etcp.norm_data_ptr / Packet Normalizer\r\nData pointer in buffer"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormDataSize, |
|
|
|
|
"etcp.norm_data_size / Packet Normalizer\r\nРазмер данных в буфере"); |
|
|
|
|
"etcp.norm_data_size / Packet Normalizer\r\nData size in buffer"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormInTotPkts, |
|
|
|
|
"etcp.norm_in_total_pkts / Packet Normalizer\r\nВсего пакетов обработано на входе (накопительно)"); |
|
|
|
|
"etcp.norm_in_total_pkts / Packet Normalizer\r\nTotal packets processed at input (cumulative)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormInTotBytes, |
|
|
|
|
"etcp.norm_in_total_bytes / Packet Normalizer\r\nВсего байт обработано на входе (накопительно)"); |
|
|
|
|
"etcp.norm_in_total_bytes / Packet Normalizer\r\nTotal bytes processed at input (cumulative)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormOutTotPkts, |
|
|
|
|
"etcp.norm_out_total_pkts / Packet Normalizer\r\nВсего пакетов обработано на выходе (накопительно)"); |
|
|
|
|
"etcp.norm_out_total_pkts / Packet Normalizer\r\nTotal packets processed at output (cumulative)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditNormOutTotBytes, |
|
|
|
|
"etcp.norm_out_total_bytes / Packet Normalizer\r\nВсего байт обработано на выходе (накопительно)"); |
|
|
|
|
"etcp.norm_out_total_bytes / Packet Normalizer\r\nTotal bytes processed at output (cumulative)"); |
|
|
|
|
|
|
|
|
|
/* ACK Debug counters */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditAckHitInf, |
|
|
|
|
"etcp.cnt_ack_hit_inf / ETCP ACK Debug\r\nACK попал в inflight-окно (ожидаемый ACK)"); |
|
|
|
|
"etcp.cnt_ack_hit_inf / ETCP ACK Debug\r\nACK hit inflight window (expected ACK)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditAckHitSndq, |
|
|
|
|
"etcp.cnt_ack_hit_sndq / ETCP ACK Debug\r\nACK попал в send-очередь"); |
|
|
|
|
"etcp.cnt_ack_hit_sndq / ETCP ACK Debug\r\nACK hit send queue"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditAckMiss, |
|
|
|
|
"etcp.cnt_ack_miss / ETCP ACK Debug\r\nACK не найден (неожиданный ACK)"); |
|
|
|
|
"etcp.cnt_ack_miss / ETCP ACK Debug\r\nACK not found (unexpected ACK)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditCntLinkWait, |
|
|
|
|
"etcp.cnt_link_wait / ETCP ACK Debug\r\nСчетчик ожидания линка"); |
|
|
|
|
"etcp.cnt_link_wait / ETCP ACK Debug\r\nLink wait counter"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditTxState, |
|
|
|
|
"etcp.tx_state / ETCP ACK Debug\r\nСостояние передачи (битовая маска)"); |
|
|
|
|
"etcp.tx_state / ETCP ACK Debug\r\nTransmission state (bitmask)"); |
|
|
|
|
|
|
|
|
|
/* Debug counters */ |
|
|
|
|
for (int i = 0; i < 8; i++) { |
|
|
|
|
char buf[256]; |
|
|
|
|
snprintf(buf, sizeof(buf), |
|
|
|
|
"etcp.debug[%d] / ETCP Debug\r\nОтладочное поле (зависит от версии)", i); |
|
|
|
|
"etcp.debug[%d] / ETCP Debug\r\nDebug field (version dependent)", i); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditDebug[i], buf); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* System resources */ |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditActiveTimeouts, |
|
|
|
|
"etcp.active_timeouts / System Resources\r\nАктивных таймаутов в системе (async)"); |
|
|
|
|
"etcp.active_timeouts / System Resources\r\nActive timeouts in system (async)"); |
|
|
|
|
AddTooltip(app->hToolTip, app->hEditBusyMemory, |
|
|
|
|
"etcp.busy_memory_blocks / System Resources\r\nЗанятых блоков памяти (memory pool)"); |
|
|
|
|
"etcp.busy_memory_blocks / System Resources\r\nBusy memory blocks (memory pool)"); |
|
|
|
|
} |
|
|
|
|
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { |
|
|
|
|
struct etcpmon_app* app = NULL; |
|
|
|
|
|