Dependents:   SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1

Committer:
donatien
Date:
Mon May 24 10:23:42 2010 +0000
Revision:
0:3717b703f76d
Child:
1:e52ec2a24c6a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:3717b703f76d 1 #ifndef DNSREQUEST_H
donatien 0:3717b703f76d 2 #define DNSREQUEST_H
donatien 0:3717b703f76d 3
donatien 0:3717b703f76d 4 #include "if/net/net.h"
donatien 0:3717b703f76d 5 //Essentially it is a safe interface to NetDnsRequest
donatien 0:3717b703f76d 6
donatien 0:3717b703f76d 7 enum DnsRequestErr
donatien 0:3717b703f76d 8 {
donatien 0:3717b703f76d 9 __DNS_MIN = -0xFFFF,
donatien 0:3717b703f76d 10 DNS_SETUP, //NetDnsRequest not properly configured
donatien 0:3717b703f76d 11 DNS_IF, //If has problems, does not exist or is not initialized
donatien 0:3717b703f76d 12 DNS_MEM, //Not enough mem
donatien 0:3717b703f76d 13 DNS_INUSE, //If/Port is in use
donatien 0:3717b703f76d 14 DNS_PROCESSING, //Req has not completed
donatien 0:3717b703f76d 15 //...
donatien 0:3717b703f76d 16 DNS_OK = 0
donatien 0:3717b703f76d 17 };
donatien 0:3717b703f76d 18
donatien 0:3717b703f76d 19 enum DnsReply
donatien 0:3717b703f76d 20 {
donatien 0:3717b703f76d 21 DNS_PRTCL,
donatien 0:3717b703f76d 22 DNS_NOTFOUND, //Hostname is unknown
donatien 0:3717b703f76d 23 DNS_ERROR, //Problem with DNS Service
donatien 0:3717b703f76d 24 //...
donatien 0:3717b703f76d 25 DNS_FOUND,
donatien 0:3717b703f76d 26 };
donatien 0:3717b703f76d 27
donatien 0:3717b703f76d 28 class DnsRequest
donatien 0:3717b703f76d 29 {
donatien 0:3717b703f76d 30 public:
donatien 0:3717b703f76d 31 DnsRequest();
donatien 0:3717b703f76d 32 ~DnsRequest();
donatien 0:3717b703f76d 33
donatien 0:3717b703f76d 34 DnsRequestErr resolve(const char* hostname);
donatien 0:3717b703f76d 35 DnsRequestErr resolve(Host* pHost);
donatien 0:3717b703f76d 36
donatien 0:3717b703f76d 37 class CDummy;
donatien 0:3717b703f76d 38 void setOnReply( void (*pMethod)(DnsReply) );
donatien 0:3717b703f76d 39 template<class T>
donatien 0:3717b703f76d 40 //Linker bug : Must be defined here :(
donatien 0:3717b703f76d 41 void setOnReply( T* pItem, void (T::*pMethod)(DnsReply) )
donatien 0:3717b703f76d 42 {
donatien 0:3717b703f76d 43 m_pCbItem = (CDummy*) pItem;
donatien 0:3717b703f76d 44 m_pCbMeth = (void (CDummy::*)(DnsReply)) pMethod;
donatien 0:3717b703f76d 45 }
donatien 0:3717b703f76d 46
donatien 0:3717b703f76d 47 DnsRequestErr getResult(IpAddr* pIp);
donatien 0:3717b703f76d 48
donatien 0:3717b703f76d 49 DnsRequestErr close();
donatien 0:3717b703f76d 50
donatien 0:3717b703f76d 51 protected:
donatien 0:3717b703f76d 52 void onNetDnsReply(NetDnsReply r);
donatien 0:3717b703f76d 53 DnsRequestErr checkInst();
donatien 0:3717b703f76d 54
donatien 0:3717b703f76d 55 private:
donatien 0:3717b703f76d 56 NetDnsRequest* m_pNetDnsRequest;
donatien 0:3717b703f76d 57
donatien 0:3717b703f76d 58 CDummy* m_pCbItem;
donatien 0:3717b703f76d 59 void (CDummy::*m_pCbMeth)(DnsReply);
donatien 0:3717b703f76d 60
donatien 0:3717b703f76d 61 void (*m_pCb)(DnsReply);
donatien 0:3717b703f76d 62
donatien 0:3717b703f76d 63 };
donatien 0:3717b703f76d 64
donatien 0:3717b703f76d 65 #endif