Eneboo - Documentación para desarrolladores
|
00001 /**************************************************************************** 00002 ** $Id: qt/qdns.h 3.3.8 edited Jan 11 14:46 $ 00003 ** 00004 ** Definition of QDns class. 00005 ** 00006 ** Created : 991122 00007 ** 00008 ** Copyright (C) 1999-2007 Trolltech ASA. All rights reserved. 00009 ** 00010 ** This file is part of the network module of the Qt GUI Toolkit. 00011 ** 00012 ** This file may be distributed under the terms of the Q Public License 00013 ** as defined by Trolltech ASA of Norway and appearing in the file 00014 ** LICENSE.QPL included in the packaging of this file. 00015 ** 00016 ** This file may be distributed and/or modified under the terms of the 00017 ** GNU General Public License version 2 as published by the Free Software 00018 ** Foundation and appearing in the file LICENSE.GPL included in the 00019 ** packaging of this file. 00020 ** 00021 ** Licensees holding valid Qt Enterprise Edition licenses may use this 00022 ** file in accordance with the Qt Commercial License Agreement provided 00023 ** with the Software. 00024 ** 00025 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00026 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00027 ** 00028 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 00029 ** information about Qt Commercial License Agreements. 00030 ** See http://www.trolltech.com/qpl/ for QPL licensing information. 00031 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 00032 ** 00033 ** Contact info@trolltech.com if any conditions of this licensing are 00034 ** not clear to you. 00035 ** 00036 **********************************************************************/ 00037 00038 #ifndef QDNS_H 00039 #define QDNS_H 00040 00041 #ifndef QT_H 00042 #include "qobject.h" 00043 #include "qhostaddress.h" 00044 #include "qsocketnotifier.h" 00045 #include "qstringlist.h" 00046 #endif // QT_H 00047 00048 #if !defined( QT_MODULE_NETWORK ) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_NETWORK ) 00049 #define QM_EXPORT_DNS 00050 #else 00051 #define QM_EXPORT_DNS Q_EXPORT 00052 #endif 00053 00054 #ifndef QT_NO_DNS 00055 00056 //#define Q_DNS_SYNCHRONOUS 00057 00058 class QDnsPrivate; 00059 00060 class QM_EXPORT_DNS QDns: public QObject { 00061 Q_OBJECT 00062 public: 00063 enum RecordType { 00064 None, 00065 A, Aaaa, 00066 Mx, Srv, 00067 Cname, 00068 Ptr, 00069 Txt 00070 }; 00071 00072 QDns(); 00073 QDns( const QString & label, RecordType rr = A ); 00074 QDns( const QHostAddress & address, RecordType rr = Ptr ); 00075 virtual ~QDns(); 00076 00077 // to set/change the query 00078 virtual void setLabel( const QString & label ); 00079 virtual void setLabel( const QHostAddress & address ); 00080 QString label() const { return l; } 00081 00082 virtual void setRecordType( RecordType rr = A ); 00083 RecordType recordType() const { return t; } 00084 00085 // whether something is happening behind the scenes 00086 bool isWorking() const; 00087 00088 // to query for replies 00089 QValueList<QHostAddress> addresses() const; 00090 00091 class QM_EXPORT_DNS MailServer { 00092 public: 00093 MailServer( const QString & n=QString::null, Q_UINT16 p=0 ) 00094 :name(n), priority(p) {} 00095 QString name; 00096 Q_UINT16 priority; 00097 Q_DUMMY_COMPARISON_OPERATOR(MailServer) 00098 }; 00099 QValueList<MailServer> mailServers() const; 00100 00101 class QM_EXPORT_DNS Server { 00102 public: 00103 Server(const QString & n=QString::null, Q_UINT16 p=0, Q_UINT16 w=0, Q_UINT16 po=0 ) 00104 : name(n), priority(p), weight(w), port(po) {} 00105 QString name; 00106 Q_UINT16 priority; 00107 Q_UINT16 weight; 00108 Q_UINT16 port; 00109 Q_DUMMY_COMPARISON_OPERATOR(Server) 00110 }; 00111 QValueList<Server> servers() const; 00112 00113 QStringList hostNames() const; 00114 00115 QStringList texts() const; 00116 00117 QString canonicalName() const; // ### real-world but uncommon: QStringList 00118 00119 QStringList qualifiedNames() const { return n; } 00120 00121 #if defined(Q_DNS_SYNCHRONOUS) 00122 protected: 00123 void connectNotify( const char *signal ); 00124 #endif 00125 00126 signals: 00127 void resultsReady(); 00128 00129 private slots: 00130 void startQuery(); 00131 00132 private: 00133 static void doResInit(); 00134 void setStartQueryTimer(); 00135 static QString toInAddrArpaDomain( const QHostAddress &address ); 00136 #if defined(Q_DNS_SYNCHRONOUS) 00137 void doSynchronousLookup(); 00138 #endif 00139 00140 QString l; 00141 QStringList n; 00142 RecordType t; 00143 QDnsPrivate * d; 00144 00145 friend class QDnsAnswer; 00146 friend class QDnsManager; 00147 }; 00148 00149 00150 // QDnsSocket are sockets that are used for DNS lookup 00151 00152 class QDnsSocket: public QObject { 00153 Q_OBJECT 00154 // note: Private not public. This class contains NO public API. 00155 protected: 00156 QDnsSocket( QObject *, const char * ); 00157 virtual ~QDnsSocket(); 00158 00159 private slots: 00160 virtual void cleanCache(); 00161 virtual void retransmit(); 00162 virtual void answer(); 00163 }; 00164 00165 #endif // QT_NO_DNS 00166 00167 #endif // QDNS_H