Files
frelay/Server/Server.h

51 lines
1.1 KiB
C
Raw Normal View History

2025-06-20 10:33:03 +08:00
// Server.h
2025-06-14 09:27:50 +08:00
#ifndef SERVER_H
#define SERVER_H
#include <QMap>
#include <QReadWriteLock>
#include <QTcpServer>
#include <QTcpSocket>
#include <QTimer>
#include "Protocol.h"
class Server : public QTcpServer
{
Q_OBJECT
public:
explicit Server(QObject* parent = nullptr);
~Server();
bool startServer(quint16 port);
void stopServer();
private slots:
void onNewConnection();
void onClientDisconnected();
void onReadyRead();
void monitorClients();
private:
QByteArray getClients();
private:
struct ClientInfo {
QTcpSocket* socket;
QString id;
qint64 connectTime;
QByteArray buffer;
};
void processClientData(QSharedPointer<ClientInfo> client);
bool forwardData(QSharedPointer<ClientInfo> client, QSharedPointer<FrameBuffer> frame);
void replyRequest(QSharedPointer<ClientInfo> client, QSharedPointer<FrameBuffer> frame);
bool sendData(QTcpSocket* socket, QSharedPointer<FrameBuffer> frame);
QString id_;
2025-06-14 09:27:50 +08:00
QMap<QString, QSharedPointer<ClientInfo>> clients_;
QReadWriteLock rwLock_;
QTimer* monitorTimer_;
};
#endif // SERVER_H