unixdomaindatagramsocket.h
1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// UnixDomainDatagramSocket은 UDS를 데이터그램 형식으로 사용하는 소켓 구현체다. QUdpSocket처럼 사용하도록 구현했다.
//
// 주의: 자동 변수 대신 new로 할당하라. 소멸자에서 열린 소켓을 닫고 만든 파일을 지우기 때문에 문제가 생길 수 있다.
#ifndef UNIXDOMAINDATAGRAMSOCKET_H
#define UNIXDOMAINDATAGRAMSOCKET_H
#include <QObject>
#include <QSocketNotifier>
class UnixDomainDatagramSocket : public QObject
{
Q_OBJECT
public:
explicit UnixDomainDatagramSocket(QObject *parent = Q_NULLPTR);
~UnixDomainDatagramSocket();
bool open();
bool bind(const QString &path);
bool bind(const char *path);
bool hasPendingDatagrams();
qint64 pendingDatagramSize();
qint64 readDatagram(QByteArray *datagram, QString *path = Q_NULLPTR);
qint64 readDatagram(char *data, qint64 maxSize, QString *path = Q_NULLPTR);
qint64 writeDatagram(const QByteArray &datagram, const QString &path);
qint64 writeDatagram(const char *data, qint64 size, const QString &path);
qint64 writeDatagram(const char *data, qint64 size, const char *path);
signals:
void readyRead();
public slots:
private:
int sockfd;
QString boundPath;
QSocketNotifier *notifier;
private slots:
void emitReadyRead();
};
#endif // UNIXDOMAINDATAGRAMSOCKET_H