AmrRT
Dependents: LPC1768_AppBoard_Internet_LCD_Clock
Fork of EthernetNetIf by
Diff: LPC2368/api/DNSRequest.h
- Revision:
- 5:bc7df6da7589
- Parent:
- 0:422060928e37
--- a/LPC2368/api/DNSRequest.h Fri Jul 09 14:34:26 2010 +0000 +++ b/LPC2368/api/DNSRequest.h Thu Aug 05 15:09:22 2010 +0000 @@ -21,44 +21,83 @@ THE SOFTWARE. */ +/** \file +DNS Request header file +*/ + #ifndef DNSREQUEST_H #define DNSREQUEST_H -#include "if/net/net.h" +#include "core/net.h" +#include "core/ipaddr.h" +#include "core/host.h" //Essentially it is a safe interface to NetDnsRequest +///DNS Request error codes enum DNSRequestErr { __DNS_MIN = -0xFFFF, - DNS_SETUP, //NetDnsRequest not properly configured - DNS_IF, //If has problems, does not exist or is not initialized - DNS_MEM, //Not enough mem - DNS_INUSE, //If/Port is in use - DNS_PROCESSING, //Req has not completed + DNS_SETUP, ///<DNSRequest not properly configured + DNS_IF, ///<Interface has problems, does not exist or is not initialized + DNS_MEM, ///<Not enough mem + DNS_INUSE, ///<Interface / Port is in use + DNS_PROCESSING, ///<Request has not completed //... - DNS_OK = 0 + DNS_OK = 0 ///<Success }; +///DNS Request Result Events enum DNSReply { DNS_PRTCL, - DNS_NOTFOUND, //Hostname is unknown - DNS_ERROR, //Problem with DNS Service + DNS_NOTFOUND, ///Hostname is unknown + DNS_ERROR, ///Problem with DNS Service //... DNS_FOUND, }; +class NetDnsRequest; +enum NetDnsReply; + +///This is a simple DNS Request class +/** + This class exposes an API to deal with DNS Requests +*/ class DNSRequest { public: + ///Creates a new request DNSRequest(); + + ///Terminates and closes request ~DNSRequest(); + ///Resolves an hostname + /** + @param hostname : hostname to resolve + */ DNSRequestErr resolve(const char* hostname); + + ///Resolves an hostname + /** + @param host : hostname to resolve, the result will be stored in the IpAddr field of this object + */ DNSRequestErr resolve(Host* pHost); + ///Setups callback + /** + The callback function will be called on result. + @param pMethod : callback function + */ + void setOnReply( void (*pMethod)(DNSReply) ); + class CDummy; - void setOnReply( void (*pMethod)(DNSReply) ); + ///Setups callback + /** + The callback function will be called on result. + @param pItem : instance of class on which to execute the callback method + @param pMethod : callback method + */ template<class T> void setOnReply( T* pItem, void (T::*pMethod)(DNSReply) ) { @@ -66,8 +105,13 @@ m_pCbMeth = (void (CDummy::*)(DNSReply)) pMethod; } + ///Gets IP address once it has been resolved + /** + @param pIp : pointer to an IpAddr instance in which to store the resolved IP address + */ DNSRequestErr getResult(IpAddr* pIp); + ///Closes DNS Request before completion DNSRequestErr close(); protected: