JDNS
Loading...
Searching...
No Matches
qjdnsshared.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2006,2007 Justin Karneges
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included
13 * in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 */
23
27
28#ifndef QJDNSSHARED_H
29#define QJDNSSHARED_H
30
31#include "qjdns.h"
32
33class QJDnsShared;
34class QJDnsSharedPrivate;
35class QJDnsSharedRequestPrivate;
36class QJDnsSharedDebugPrivate;
37
76class JDNS_EXPORT QJDnsSharedDebug : public QObject
77{
78 Q_OBJECT
79public:
83 QJDnsSharedDebug(QObject *parent = 0);
84
89
99 QStringList readDebugLines();
100
101signals:
107 void readyRead();
108
109private:
110 friend class QJDnsShared;
111 friend class QJDnsSharedPrivate;
112 friend class QJDnsSharedDebugPrivate;
113 QJDnsSharedDebugPrivate *d;
114};
115
235class JDNS_EXPORT QJDnsSharedRequest : public QObject
236{
237 Q_OBJECT
238public:
242 enum Type
243 {
246 };
247
260
264 QJDnsSharedRequest(QJDnsShared *jdnsShared, QObject *parent = 0);
265
272
277
281 void query(const QByteArray &name, int type);
282
286 void publish(QJDns::PublishMode m, const QJDns::Record &record);
287
291 void publishUpdate(const QJDns::Record &record);
292
296 void cancel();
297
301 bool success() const;
302
306 Error error() const;
307
311 QList<QJDns::Record> results() const;
312
313signals:
321
322private:
323 friend class QJDnsShared;
324 friend class QJDnsSharedPrivate;
325 friend class QJDnsSharedRequestPrivate;
326 QJDnsSharedRequestPrivate *d;
327};
328
524class JDNS_EXPORT QJDnsShared : public QObject
525{
526 Q_OBJECT
527public:
554
558 QJDnsShared(Mode mode, QObject *parent = 0);
559
564
571 void setDebug(QJDnsSharedDebug *db, const QString &name);
572
584 bool addInterface(const QHostAddress &addr);
585
589 void removeInterface(const QHostAddress &addr);
590
600 void shutdown();
601
607 static QList<QByteArray> domains();
608
631 static void waitForShutdown(const QList<QJDnsShared*> &instances);
632
633signals:
638
639private:
640 friend class QJDnsSharedRequest;
641 friend class QJDnsSharedPrivate;
642 QJDnsSharedPrivate *d;
643};
644
645#endif
Collects debugging information from QJDnsShared.
Definition qjdnsshared.h:77
QStringList readDebugLines()
Read the available debug information.
void readyRead()
Emitted when there is debug information to report.
~QJDnsSharedDebug()
Destroys the object.
QJDnsSharedDebug(QObject *parent=0)
Constructs a new object with the given parent.
Type type()
The type of operation being performed.
Error
Request error.
Definition qjdnsshared.h:252
@ ErrorNoNet
There are no available network interfaces to operate on.
Definition qjdnsshared.h:253
@ ErrorTimeout
The operation timed out.
Definition qjdnsshared.h:257
@ ErrorNXDomain
The name looked up does not exist.
Definition qjdnsshared.h:256
@ ErrorConflict
Attempt to publish an already published unique record.
Definition qjdnsshared.h:258
@ ErrorGeneric
Generic error during the operation.
Definition qjdnsshared.h:255
Type
Operation type.
Definition qjdnsshared.h:243
@ Query
Query operation, initiated by query()
Definition qjdnsshared.h:244
@ Publish
Publish operation, initiated by publish() or publishUpdate()
Definition qjdnsshared.h:245
void query(const QByteArray &name, int type)
Perform a query operation.
void cancel()
Cancels the current operation.
void resultsReady()
Indicates that the operation has something to report.
void publishUpdate(const QJDns::Record &record)
Update a record that is currently published.
QList< QJDns::Record > results() const
Returns the results of the operation.
~QJDnsSharedRequest()
Destroys the object.
QJDnsSharedRequest(QJDnsShared *jdnsShared, QObject *parent=0)
Constructs a new object with the given jdnsShared and parent.
Error error() const
Returns the reason for error.
void publish(QJDns::PublishMode m, const QJDns::Record &record)
Perform a publish operation.
bool success() const
Indicates whether or not the operation was successful.
Abstraction layer on top of QJDns.
Definition qjdnsshared.h:525
void setDebug(QJDnsSharedDebug *db, const QString &name)
Sets the debug object to report to.
QJDnsShared(Mode mode, QObject *parent=0)
Constructs a new object with the given mode and parent.
void shutdownFinished()
Indicates the object has been shut down.
Mode
The mode to operate in.
Definition qjdnsshared.h:532
@ UnicastInternet
For regular DNS resolution.
Definition qjdnsshared.h:537
@ Multicast
Multicast DNS querying and publishing.
Definition qjdnsshared.h:552
@ UnicastLocal
Perform regular DNS resolution using the Multicast DNS address.
Definition qjdnsshared.h:543
static QList< QByteArray > domains()
The domains to search in.
bool addInterface(const QHostAddress &addr)
Adds an interface to operate on.
void removeInterface(const QHostAddress &addr)
Removes a previously-added interface.
~QJDnsShared()
Destroys the object.
static void waitForShutdown(const QList< QJDnsShared * > &instances)
Performs a blocking shutdown of many QJDnsShared instances.
void shutdown()
Shuts down the object.
Definition qjdns.h:100
The Qt wrapper to jdns.