// UnixDomainDatagramSocket은 UDS를 데이터그램 형식으로 사용하는 소켓 구현체다. QUdpSocket처럼 사용하도록 구현했다. // // 주의: 자동 변수 대신 new로 할당하라. 소멸자에서 열린 소켓을 닫고 만든 파일을 지우기 때문에 문제가 생길 수 있다. #ifndef UNIXDOMAINDATAGRAMSOCKET_H #define UNIXDOMAINDATAGRAMSOCKET_H #include #include 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