Blame view

qt/unixdomaindatagramsocket.h 1.32 KB
ac7ba427e   김태훈   Qt용 UnixDomainDat...
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