summaryrefslogtreecommitdiffstats
path: root/kdecore/network/kresolver.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdecore/network/kresolver.h')
-rw-r--r--kdecore/network/kresolver.h946
1 files changed, 0 insertions, 946 deletions
diff --git a/kdecore/network/kresolver.h b/kdecore/network/kresolver.h
deleted file mode 100644
index 069428904..000000000
--- a/kdecore/network/kresolver.h
+++ /dev/null
@@ -1,946 +0,0 @@
-/* -*- mode: C++; coding: utf-8; -*-
- * Copyright (C) 2003,2005 Thiago Macieira <thiago.macieira@kdemail.net>
- *
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef KRESOLVER_H
-#define KRESOLVER_H
-
-//////////////////
-// Needed includes
-#include <tqvaluelist.h>
-#include <tqobject.h>
-#include "ksocketaddress.h"
-
-
-////////////////////////
-// Forward declarations
-struct sockaddr;
-class TQString;
-class TQCString;
-class TQStrList;
-
-//////////////////
-// Our definitions
-
-namespace KNetwork {
-
- namespace Internal { class KResolverManager; }
-
-class KResolverEntryPrivate;
-/** @class KResolverEntry kresolver.h kresolver.h
- * @brief One resolution entry.
- *
- * This class is one element in the resolution results list.
- * It contains the socket address for connecting, as well as
- * a bit more of information: the socket type, address family
- * and protocol numbers.
- *
- * This class contains all the information required for creating,
- * binding and connecting a socket.
- *
- * KResolverEntry objects implicitly share data, so copying them
- * is quite efficient.
- *
- * @author Thiago Macieira <thiago.macieira@kdemail.net>
- */
-class KDECORE_EXPORT KResolverEntry
-{
-public:
- /**
- * Default constructor
- *
- */
- KResolverEntry();
-
- /**
- * Constructs a new KResolverEntry from a KSocketAddress
- * and other data.
- *
- * The KSocketAddress @p addr parameter will be deep-copied.
- *
- * @param addr the address that was resolved
- * @param socktype the socket type of the resolved address
- * @param protocol the protocol of the resolved address
- * @param canonName the canonical name of the resolved hostname
- * @param encodedName the ASCII-compatible encoding of the hostname
- */
- KResolverEntry(const KSocketAddress& addr, int socktype, int protocol,
- const TQString& canonName = TQString::null,
- const TQCString& encodedName = TQCString());
-
- /**
- * Constructs a new KResolverEntry from raw forms of
- * socket addresses and other data.
- *
- * This constructor instead creates an internal KSocketAddress object.
- *
- * @param sa the sockaddr structure containing the raw address
- * @param salen the length of the sockaddr structure
- * @param socktype the socket type of the resolved address
- * @param protocol the protocol of the resolved address
- * @param canonName the canonical name of the resolved hostname
- * @param encodedName the ASCII-compatible encoding of the hostname
- */
- KResolverEntry(const struct sockaddr *sa, TQ_UINT16 salen, int socktype,
- int protocol, const TQString& canonName = TQString::null,
- const TQCString& encodedName = TQCString());
-
- /**
- * Copy constructor.
- *
- * This constructor performs a shallow-copy of the other object.
- */
- KResolverEntry(const KResolverEntry &other);
-
- /**
- * Destructor.
- *
- * The destructor frees associated resources with this object. It does
- * not destroy shared data.
- */
- ~KResolverEntry();
-
- /**
- * Retrieves the socket address associated with this entry.
- */
- KSocketAddress address() const;
-
- /**
- * Retrieves the length of the socket address structure.
- */
- TQ_UINT16 length() const;
-
- /**
- * Retrieves the family associated with this socket address.
- */
- int family() const;
-
- /**
- * Retrieves the canonical name associated with this entry, if there is any.
- * If the canonical name was not found, this function returns TQString::null.
- */
- TQString canonicalName() const;
-
- /**
- * Retrieves the encoded domain name associated with this entry, if there is
- * any. If this domain has been resolved through DNS, this will be the
- * the ACE-encoded hostname.
- *
- * Returns a null TQCString if such information is not available.
- *
- * Please note that this information is NOT to be presented to the user,
- * unless requested.
- */
- TQCString encodedName() const;
-
- /**
- * Retrieves the socket type associated with this entry.
- */
- int socketType() const;
-
- /**
- * Retrieves the protocol associated with this entry.
- */
- int protocol() const;
-
- /**
- * Assignment operator
- *
- * This function copies the contents of the other object into this one.
- * Data will be shared between the two of them.
- */
- KResolverEntry& operator=(const KResolverEntry& other);
-
-private:
- KResolverEntryPrivate* d;
-};
-
-class KResolverResultsPrivate;
-/**
- * @class KResolverResults kresolver.h kresolver.h
- * @brief Name and service resolution results.
- *
- * This object contains the results of a name and service resolution, as
- * those performed by @ref KResolver. It is also a descendant of TQValueList, so
- * you may use all its member functions here to access the elements.
- *
- * A KResolverResults object is associated with a resolution, so, in addition
- * to the resolved elements, you can also retrieve information about the
- * resolution process itself, like the nodename that was resolved or an error
- * code.
- *
- * Note Resolver also uses KResolverResults objects to indicate failure, so
- * you should test for failure.
- *
- * @author Thiago Macieira <thiago.macieira@kdemail.net>
- */
-class KDECORE_EXPORT KResolverResults: public TQValueList<KResolverEntry>
-{
-public:
- /**
- * Default constructor.
- *
- * Constructs an empty list.
- */
- KResolverResults();
-
- /**
- * Copy constructor
- *
- * Creates a new object with the contents of the other one. Data will be
- * shared by the two objects, like QValueList
- */
- KResolverResults(const KResolverResults& other);
-
- /**
- * Destructor
- *
- * Destroys the object and frees associated resources.
- */
- virtual ~KResolverResults();
-
- /**
- * Assignment operator
- *
- * Copies the contents of the other container into this one, discarding
- * our current values.
- */
- KResolverResults& operator=(const KResolverResults& other);
-
- /**
- * Retrieves the error code associated with this resolution. The values
- * here are the same as in @ref KResolver::ErrorCodes.
- */
- int error() const;
-
- /**
- * Retrieves the system error code, if any.
- * @see KResolver::systemError for more information
- */
- int systemError() const;
-
- /**
- * Sets the error codes
- *
- * @param errorcode the error code in @ref KResolver::ErrorCodes
- * @param systemerror the system error code associated, if any
- */
- void setError(int errorcode, int systemerror = 0);
-
- /**
- * The nodename to which the resolution was performed.
- */
- TQString nodeName() const;
-
- /**
- * The service name to which the resolution was performed.
- */
- TQString serviceName() const;
-
- /**
- * Sets the new nodename and service name
- */
- void setAddress(const TQString& host, const TQString& service);
-
-protected:
- virtual void virtual_hook( int id, void* data );
-private:
- KResolverResultsPrivate* d;
-};
-
-class KResolverPrivate;
-/**
- * @class KResolver kresolver.h kresolver.h
- * @brief Name and service resolution class.
- *
- * This class provides support for doing name-to-binary resolution
- * for nodenames and service ports. You should use this class if you
- * need specific resolution techniques when creating a socket or if you
- * want to inspect the results before calling the socket functions.
- *
- * You can either create an object and set the options you want in it
- * or you can simply call the static member functions, which will create
- * standard Resolver objects and dispatch the resolution for you. Normally,
- * the static functions will be used, except in cases where specific options
- * must be set.
- *
- * A Resolver object defaults to the following:
- * @li address family: any address family
- * @li socket type: streaming socket
- * @li protocol: implementation-defined. Generally, TCP
- * @li host and service: unset
- *
- * @author Thiago Macieira <thiago.macieira@kdemail.net>
- */
-class KDECORE_EXPORT KResolver: public TQObject
-{
- Q_OBJECT
- TQ_OBJECT
-
-public:
-
- /**
- * Address family selection types
- *
- * These values can be OR-ed together to form a composite family selection.
- *
- * @li UnknownFamily: a family that is unknown to the current implementation
- * @li KnownFamily: a family that is known to the implementation (the exact
- * opposite of UnknownFamily)
- * @li AnyFamilies: any address family is acceptable
- * @li InternetFamily: an address for connecting to the Internet
- * @li InetFamily: alias for InternetFamily
- * @li IPv6Family: an IPv6 address only
- * @li IPv4Family: an IPv4 address only
- * @li UnixFamily: an address for the local Unix namespace (i.e., Unix sockets)
- * @li LocalFamily: alias for UnixFamily
- */
- enum SocketFamilies
- {
- UnknownFamily = 0x0001,
-
- UnixFamily = 0x0002,
- LocalFamily = UnixFamily,
-
- IPv4Family = 0x0004,
- IPv6Family = 0x0008,
- InternetFamily = IPv4Family | IPv6Family,
- InetFamily = InternetFamily,
-
- KnownFamily = ~UnknownFamily,
- AnyFamily = KnownFamily | UnknownFamily
- };
-
- /**
- * Flags for the resolution.
- *
- * These flags are used for setting the resolution behaviour for this
- * object:
- * @li Passive: resolve to a passive socket (i.e., one that can be used for
- * binding to a local interface)
- * @li CanonName: request that the canonical name for the given nodename
- * be found and recorded
- * @li NoResolve: request that no external resolution be performed. The given
- * nodename and servicename will be resolved locally only.
- * @li NoSrv: don't try to use SRV-based name-resolution. (deprecated)
- * @li UseSrv: use SRV-based name resolution.
- * @li Multiport: the port/service argument is a list of port numbers and
- * ranges. (future extension)
- *
- * @note SRV-based lookup and Multiport are not implemented yet.
- */
- enum Flags
- {
- Passive = 0x01,
- CanonName = 0x02,
- NoResolve = 0x04,
- NoSrv = 0x08,
- Multiport = 0x10,
- UseSrv = 0x20
- };
-
- /**
- * Error codes
- *
- * These are the possible error values that objects of this class
- * may return. See \ref errorString() for getting a string representation
- * for these errors.
- *
- * @li AddrFamily: Address family for the given nodename is not supported.
- * @li TryAgain: Temporary failure in name resolution. You should try again.
- * @li NonRecoverable: Non-recoverable failure in name resolution.
- * @li BadFlags: Invalid flags were given.
- * @li Memory: Memory allocation failure.
- * @li NoName: The specified name or service doesn't exist.
- * @li UnsupportedFamily: The requested socket family is not supported.
- * @li UnsupportedService: The requested service is not supported for this
- * socket type (i.e., a datagram service in a streaming socket).
- * @li UnsupportedSocketType: The requested socket type is not supported.
- * @li UnknownError: An unknown, unexpected error occurred.
- * @li SystemError: A system error occurred. See @ref systemError.
- * @li Canceled: This request was cancelled by the user.
- */
- enum ErrorCodes
- {
- // note: if you change this enum, take a look at KResolver::errorString
- NoError = 0,
- AddrFamily = -1,
- TryAgain = -2,
- NonRecoverable = -3,
- BadFlags = -4,
- Memory = -5,
- NoName = -6,
- UnsupportedFamily = -7,
- UnsupportedService = -8,
- UnsupportedSocketType = -9,
- UnknownError = -10,
- SystemError = -11,
- Canceled = -100
- };
-
- /**
- * Status codes.
- *
- * These are the possible status for a Resolver object. A value
- * greater than zero indicates normal behaviour, while negative
- * values either indicate failure or error.
- *
- * @li Idle: resolution has not yet been started.
- * @li Queued: resolution is queued but not yet in progress.
- * @li InProgress: resolution is in progress.
- * @li PostProcessing: resolution is in progress.
- * @li Success: resolution is done; you can retrieve the results.
- * @li Canceled: request cancelled by the user.
- * @li Failed: resolution is done, but failed.
- *
- * Note: the status Canceled and the error code Canceled are the same.
- *
- * Note 2: the status Queued and InProgress might not be distinguishable.
- * Some implementations might not differentiate one from the other.
- */
- enum StatusCodes
- {
- Idle = 0,
- Queued = 1,
- InProgress = 5,
- PostProcessing = 6,
- Success = 10,
- //Canceled = -100, // already defined above
- Failed = -101
- };
-
- /**
- * Default constructor.
- *
- * Creates an empty Resolver object. You should set the wanted
- * names and flags using the member functions before starting
- * the name resolution.
- */
- KResolver(TQObject * = 0L, const char * = 0L);
-
- /**
- * Constructor with host and service names.
- *
- * Creates a Resolver object with the given host and
- * service names. Flags are initialised to 0 and any address family
- * will be accepted.
- *
- * @param nodename The host name we want resolved.
- * @param servicename The service name associated, like "http".
- */
- KResolver(const TQString& nodename, const TQString& servicename = TQString::null,
- TQObject * = 0L, const char * = 0L);
-
- /**
- * Destructor.
- *
- * When this object is deleted, it'll destroy all associated
- * resources. If the resolution is still in progress, it will be
- * cancelled and the signal will \b not be emitted.
- */
- virtual ~KResolver();
-
- /**
- * Retrieve the current status of this object.
- *
- * @see StatusCodes for the possible status codes.
- */
- int status() const;
-
- /**
- * Retrieve the error code in this object.
- *
- * This function will return NoError if we are not in
- * an error condition. See @ref status and @ref StatusCodes to
- * find out what the current status is.
- *
- * @see errorString for getting a textual representation of
- * this error
- */
- int error() const;
-
- /**
- * Retrieve the associated system error code in this object.
- *
- * Many resolution operations may generate an extra error code
- * as given by the C errno variable. That value is stored in the
- * object and can be retrieved by this function.
- */
- int systemError() const;
-
- /**
- * Returns the textual representation of the error in this object.
- */
- inline TQString errorString() const
- { return errorString(error(), systemError()); }
-
- /**
- * Returns true if this object is currently running
- */
- bool isRunning() const;
-
- /**
- * The nodename to which the resolution was/is to be performed.
- */
- TQString nodeName() const;
-
- /**
- * The service name to which the resolution was/is to be performed.
- */
- TQString serviceName() const;
-
- /**
- * Sets the nodename for the resolution.
- *
- * Set the nodename to TQString::null to unset it.
- * @param nodename The nodename to be resolved.
- */
- void setNodeName(const TQString& nodename);
-
- /**
- * Sets the service name to be resolved.
- *
- * Set it to TQString::null to unset it.
- * @param service The service to be resolved.
- */
- void setServiceName(const TQString& service);
-
- /**
- * Sets both the host and the service names.
- *
- * Setting either value to TQString::null will unset them.
- * @param node The nodename
- * @param service The service name
- */
- void setAddress(const TQString& node, const TQString& service);
-
- /**
- * Retrieves the flags set for the resolution.
- *
- * @see Flags for an explanation on what flags are possible
- */
- int flags() const;
-
- /**
- * Sets the flags.
- *
- * @param flags the new flags
- * @return the old flags
- * @see Flags for an explanation on the flags
- */
- int setFlags(int flags);
-
- /**
- * Sets the allowed socket families.
- *
- * @param families the families that we want/accept
- * @see SocketFamilies for possible values
- */
- void setFamily(int families);
-
- /**
- * Sets the socket type we want.
- *
- * The values for the @p type parameter are the SOCK_*
- * constants, defined in <sys/socket.h>. The most common
- * values are:
- * @li SOCK_STREAM streaming socket (= reliable, sequenced,
- * connection-based)
- * @li SOCK_DGRAM datagram socket (= unreliable, connectionless)
- * @li SOCK_RAW raw socket, with direct access to the
- * container protocol (such as IP)
- *
- * These three are the only values to which it is guaranteed that
- * resolution will work. Some systems may define other constants (such as
- * SOCK_RDM for reliable datagrams), but support is implementation-defined.
- *
- * @param type the wanted socket type (SOCK_* constants). Set
- * 0 to use the default.
- */
- void setSocketType(int type);
-
- /**
- * Sets the protocol we want.
- *
- * Protocols are dependant on the selected address family, so you should know
- * what you are doing if you use this function. Besides, protocols generally
- * are either stream-based or datagram-based, so the value of the socket
- * type is also important. The resolution will fail if these values don't match.
- *
- * When using an Internet socket, the values for the protocol are the
- * IPPROTO_* constants, defined in <netinet/in.h>.
- *
- * You may choose to set the protocol either by its number or by its name, or
- * by both. If you set:
- * @li the number and the name: both values will be stored internally; you
- * may set the name to an empty value, if wanted
- * @li the number only (name = NULL): the name will be searched in the
- * protocols database
- * @li the name only (number = 0): the number will be searched in the
- * database
- * @li neither name nor number: reset to default behaviour
- *
- * @param protonum the protocol number we want
- * @param name the protocol name
- */
- void setProtocol(int protonum, const char *name = 0L);
-
- /**
- * Starts the name resolution asynchronously.
- *
- * This function will queue this object for resolution
- * and will return immediately. The status upon exit will either be
- * Queued or InProgress or Failed.
- *
- * This function does nothing if the object is already queued. But if
- * it had already succeeded or failed, this function will re-start it.
- *
- * Note: if both the nodename and the servicename are unset, this function
- * will not queue, but will set a success state and emit the signal. Also
- * note that in this case and maybe others, the signal @ref finished might
- * be emitted before this function returns.
- *
- * @return true if this request was successfully queued for asynchronous
- * resolution
- */
- bool start();
-
- /**
- * Waits for a request to finish resolving.
- *
- * This function will wait on a running request for its termination. The
- * status upon exit will either be Success or Failed or Canceled.
- *
- * This function may be called from any thread, even one that is not the
- * GUI thread or the one that started the resolution process. But note this
- * function is not thread-safe nor reentrant: i.e., only one thread can be
- * waiting on one given object.
- *
- * Also note that this function ensures that the @ref finished signal is
- * emitted before it returns. That means that, as a side-effect, whenever
- * wait() is called, the signal is emitted on the thread calling wait().
- *
- * @param msec the time to wait, in milliseconds or 0 to
- * wait forever
- * @return true if the resolution has finished processing, even when it
- * failed or was canceled. False means the wait timed out and
- * the resolution is still running.
- */
- bool wait(int msec = 0);
-
- /**
- * Cancels a running request
- *
- * This function will cancel a running request. If the request is not
- * currently running or queued, this function does nothing.
- *
- * Note: if you tell the signal to be emitted, be aware that it might
- * or might not be emitted before this function returns.
- *
- * @param emitSignal whether to emit the @ref finished signal or not
- */
- void cancel(bool emitSignal = true);
-
- /**
- * Retrieves the results of this resolution
- *
- * Use this function to retrieve the results of the resolution. If no
- * data was resolved (yet) or if we failed, this function will return
- * an empty object.
- *
- * @return the resolved data
- * @see status for information on finding out if the resolution was successful
- */
- KResolverResults results() const;
-
- /**
- * Handles events. Reimplemented from TQObject.
- *
- * This function handles the events generated by the manager indicating that
- * this object has finished processing.
- *
- * Do not post events to this object.
- */
- virtual bool event(TQEvent*);
-
-signals:
- // signals
-
- /**
- * This signal is emitted whenever the resolution is finished, one
- * way or another (success or failure). The @p results parameter
- * will contain the resolved data.
- *
- * Note: if you are doing multiple resolutions, you can use the
- * TQObject::sender() function to distinguish one Resolver object from
- * another.
- *
- * @param results the resolved data; might be empty if the resolution
- * failed
- * @see results for information on what the results are
- *
- * @note This signal is @b always delivered in the GUI event thread, even for
- * resolutions that were started in secondary threads.
- */
- void finished(KResolverResults results);
-
-private:
- void emitFinished();
-
-public:
- // Static functions
-
- /**
- * Returns the string representation of this error code.
- *
- * @param errorcode the error code. See @ref ErrorCodes.
- * @param syserror the system error code associated.
- * @return the string representation. This is already
- * i18n'ed.
- */
- static TQString errorString(int errorcode, int syserror = 0);
-
- /**
- * Resolve the nodename and service name synchronously
- *
- * This static function is provided as convenience for simplifying
- * name resolution. It resolves the given host and service names synchronously
- * and returns the results it found. It is equivalent to the following code:
- *
- * \code
- * KResolver qres(host, service);
- * qres.setFlags(flags);
- * qres.setFamily(families)
- * qres.start();
- * qres.wait();
- * return qres.results();
- * \endcode
- *
- * @param host the nodename to resolve
- * @param service the service to resolve
- * @param flags flags to be used
- * @param families the families to be searched
- * @return a KResolverResults object containing the results
- * @see KResolverResults for information on how to obtain the error code
- */
- static KResolverResults resolve(const TQString& host, const TQString& service,
- int flags = 0, int families = KResolver::InternetFamily);
-
- /**
- * Start an asynchronous name resolution
- *
- * This function is provided as a convenience to simplify the resolution
- * process. It creates an internal KResolver object, connects the
- * @ref finished signal to the given slot and starts the resolution
- * asynchronously. It is more or less equivalent to the following code:
- *
- * \b Note: this function may trigger the signal before it returns, so
- * your code must be prepared for this situation.
- *
- * \code
- * KResolver* qres = new KResolver(host, service);
- * TQObject::connect(qres, TQT_SIGNAL(finished(KResolverResults)),
- * userObj, userSlot);
- * qres->setFlags(flags);
- * qres->setFamily(families);
- * return qres->start();
- * \endcode
- *
- * You should use it like this in your code:
- * \code
- * KResolver::resolveAsync(myObj, TQT_SLOT(mySlot(KResolverResults)), host, service);
- * \endcode
- *
- * @param userObj the object whose slot @p userSlot we will connect
- * @param userSlot the slot to which we'll connect
- * @param host the nodename to resolve
- * @param service the service to resolve
- * @param flags flags to be used
- * @param families families to be searcheed
- * @return true if the queueing was successful, false if not
- * @see KResolverResults for information on how to obtain the error code
- */
- static bool resolveAsync(TQObject* userObj, const char *userSlot,
- const TQString& host, const TQString& service,
- int flags = 0, int families = KResolver::InternetFamily);
-
- /**
- * Returns the domain name in an ASCII Compatible Encoding form, suitable
- * for DNS lookups. This is the base for International Domain Name support
- * over the Internet.
- *
- * Note this function may fail, in which case it'll return a null
- * TQCString. Reasons for failure include use of unknown code
- * points (Unicode characters).
- *
- * Note that the encoding is illegible and, thus, should not be presented
- * to the user, except if requested.
- *
- * @param tqunicodeDomain the domain name to be encoded
- * @return the ACE-encoded suitable for DNS queries if successful, a null
- * TQCString if failure.
- */
- static TQCString domainToAscii(const TQString& tqunicodeDomain);
-
- /**
- * Does the inverse of @ref domainToAscii and return an Unicode domain
- * name from the given ACE-encoded domain.
- *
- * This function may fail if the given domain cannot be successfully
- * converted back to Unicode. Reasons for failure include a malformed
- * domain name or good ones whose reencoding back to ACE don't match
- * the form given here (e.g., ACE-encoding of an already
- * ASCII-compatible domain).
- *
- * It is, however, guaranteed that domains returned
- * by @ref domainToAscii will work.
- *
- * @param asciiDomain the ACE-encoded domain name to be decoded
- * @return the Unicode representation of the given domain name
- * if successful, the original string if not
- * @note ACE = ASCII-Compatible Encoding, i.e., 7-bit
- */
- static TQString domainToUnicode(const TQCString& asciiDomain);
-
- /**
- * The same as above, but taking a TQString argument.
- *
- * @param asciiDomain the ACE-encoded domain name to be decoded
- * @return the Unicode representation of the given domain name
- * if successful, TQString::null if not.
- */
- static TQString domainToUnicode(const TQString& asciiDomain);
-
- /**
- * Normalise a domain name.
- *
- * In order to prevent simple mistakes in International Domain
- * Names (IDN), it has been decided that certain code points
- * (characters in Unicode) would be instead converted to others.
- * This includes turning them all to lower case, as well certain
- * other specific operations, as specified in the documents.
- *
- * For instance, the German 'ß' will be changed into 'ss', while
- * the micro symbol 'µ' will be changed to the Greek mu 'μ'.
- *
- * Two equivalent domains have the same normalised form. And the
- * normalised form of a normalised domain is itself (i.e., if
- * d is normalised, the following is true: d == normalizeDomain(d) )
- *
- * This operation is equivalent to encoding and the decoding a Unicode
- * hostname.
- *
- * @param domain a domain to be normalised
- * @return the normalised domain, or TQString::null if the domain is
- * invalid.
- */
- static TQString normalizeDomain(const TQString& domain);
-
- /**
- * Resolves a protocol number to its names
- *
- * Note: the returned TQStrList operates on deep-copies.
- *
- * @param protonum the protocol number to be looked for
- * @return all the protocol names in a list. The first is the "proper"
- * name.
- */
- static TQStrList protocolName(int protonum);
-
- /**
- * Finds all aliases for a given protocol name
- *
- * @param protoname the protocol name to be looked for
- * @return all the protocol names in a list. The first is the "proper"
- * name.
- */
- static TQStrList protocolName(const char *protoname);
-
- /**
- * Resolves a protocol name to its number
- *
- * @param protoname the protocol name to be looked for
- * @return the protocol number or -1 if we couldn't locate it
- */
- static int protocolNumber(const char *protoname);
-
- /**
- * Resolves a service name to its port number
- *
- * @param servname the service name to be looked for
- * @param protoname the protocol it is associated with
- * @return the port number in host byte-order or -1 in case of error
- */
- static int servicePort(const char *servname, const char *protoname);
-
- /**
- * Finds all the aliases for a given service name
- *
- * Note: the returned TQStrList operates on deep-copies.
- *
- * @param servname the service alias to be looked for
- * @param protoname the protocol it is associated with
- * @return all the service names in a list. The first is the "proper"
- * name.
- */
- static TQStrList serviceName(const char *servname, const char *protoname);
-
- /**
- * Resolves a port number to its names
- *
- * Note: the returned TQStrList operates on deep copies.
- *
- * @param port the port number, in host byte-order
- * @param protoname the protocol it is associated with
- * @return all the service names in a list. The first is the "proper"
- * name.
- */
- static TQStrList serviceName(int port, const char *protoname);
-
- /**
- * Returns this machine's local hostname.
- *
- * @return this machine's local hostname
- * @since 3.5
- */
- static TQString localHostName();
-
-protected:
-
- /**
- * Sets the error codes
- */
- void setError(int errorcode, int systemerror = 0);
-
- virtual void virtual_hook( int id, void* data );
-private:
- KResolverPrivate* d;
- friend class KResolverResults;
- friend class ::KNetwork::Internal::KResolverManager;
-
- static TQStringList *idnDomains;
-};
-
-} // namespace KNetwork
-
-#endif