Files
utun2/tools/chatgui/transport/utun_node.h
T
Evgeny 85a91a1320 chatgui: invite link connect flow + GUI_ERROR always-on diagnostics
- debug_ui.h: remove NDEBUG guard so GUI_ERROR works in Release builds
- invite_link.h/cpp: add error field to InviteData with specific failure reason
- joindialog: show exact decode error in QLabel instead of generic message
- chat_sync: implement invite connect flow (CHANNEL_INFO_REQ/RESP, JOIN, WELCOME)
- topo_node_sqlite: node/address table init and lookup
- utun_node: getInviteAddresses fallback from ETCP sockets
- minor fixes in mainwindow, chat_core, gui_bridge
2026-07-13 08:06:19 +03:00

58 lines
1.4 KiB
C++

// utun_node.h — C++ wrapper for embedded uTun node (runs in dedicated thread)
#ifndef UTUN_NODE_H
#define UTUN_NODE_H
#include <QObject>
#include <QByteArray>
#include <QString>
#include <QList>
#include <atomic>
#include <thread>
struct UTUN_INSTANCE;
class DbManager;
struct NodeAddr;
class UtunNode : public QObject {
Q_OBJECT
public:
explicit UtunNode(QObject* parent = nullptr);
~UtunNode();
bool start(const QString& configPath);
void stop();
bool isRunning() const { return m_running; }
void setDebugFile(const QString& path);
void setDbPath(const QString& path);
void setDebugLevel(const QString& level);
void setDebugCategories(const QString& categories);
void send(uint64_t dstNodeId, const QByteArray& data);
QString nodeIdHex() const;
QString pubKeyHex() const;
QList<NodeAddr> getInviteAddresses(DbManager* db);
signals:
void started();
void stopped();
void error(const QString& msg);
void messageReceived(uint64_t src, const QByteArray& data);
private:
void runLoop();
static void recvCallback(struct ETCP_CONN* conn, struct ll_entry* entry);
UTUN_INSTANCE* m_instance = nullptr;
std::thread m_thread;
std::atomic<bool> m_running{false};
std::atomic<bool> m_stop{false};
QString m_configPath;
QString m_debugFile;
QString m_dbPath;
QString m_debugLevel;
QString m_debugCategories;
};
#endif // UTUN_NODE_H