Quark  0.1
MDNSServiceBrowser.h++
Go to the documentation of this file.
1 #ifndef __libquark_mdns_MDNSServiceBrowser_hxx
2 #define __libquark_mdns_MDNSServiceBrowser_hxx
3 
4 #include <QByteArray>
5 #include <QHostAddress>
6 #include <QList>
7 #include <QMap>
8 #include <QScopedPointer>
9 #include <QSharedPointer>
10 #include <QStringList>
11 #include <QTimer>
12 #include <QUdpSocket>
13 
14 namespace quark {
15 namespace mdns {
16 
17 class MDNSResolveInfo;
18 class MDNSService;
19 
20 class MDNSServiceBrowserPrivateData;
21 
22 class MDNSServiceBrowser : public QObject
23 {
24  Q_OBJECT;
25 
26  public:
27 
28  MDNSServiceBrowser(QString serviceType,
29  QStringList subtypes = QStringList());
30  virtual ~MDNSServiceBrowser();
31 
32  public slots:
33 
34  void startDiscovery();
35  void stopDiscovery();
36 
37  void resolveServiceInstance(QString instanceName);
38 
39  signals:
40 
41  void serviceInstancePublished(QString instanceName);
42  void serviceInstanceUnpublished(QString instanceName);
43  void serviceInstanceResolveFinished(QSharedPointer<MDNSService> service);
44  void serviceInstanceResolveFailed(QString instanceName);
45 
46  private slots:
47 
48  void readDatagrams();
49  void timerFired();
50 
51  private:
52 
53  struct ServiceEntry;
54 
55  void publishEntry(ServiceEntry *entry);
56  void updateAddressForHost(QStringList hostName,
57  const QHostAddress &address);
58  void sendBrowseQuery();
59 
60  QScopedPointer<MDNSServiceBrowserPrivateData> _privateData;
61  QStringList _serviceType;
62  QStringList _subtypes;
63  QUdpSocket _socket;
64  QHostAddress _multicastAddress;
65  QMap<QString, ServiceEntry *> _services;
66  QByteArray _browseQuery;
67  QTimer _timer;
68  bool _discovering;
69 
70  Q_DISABLE_COPY(MDNSServiceBrowser);
71 };
72 
73 } // namespace mdns
74 } // namespace quark
75 
76 #endif // __libquark_mdns_MDNSServiceBrowser_hxx
void serviceInstanceResolveFailed(QString instanceName)
Definition: MDNSServiceBrowser.h++:22
MDNSServiceBrowser(QString serviceType, QStringList subtypes=QStringList())
void serviceInstancePublished(QString instanceName)
void serviceInstanceResolveFinished(QSharedPointer< MDNSService > service)
Definition: BarChartView.h++:6
void resolveServiceInstance(QString instanceName)
void serviceInstanceUnpublished(QString instanceName)