Dependents: SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1
if/net/netdnsrequest.h@0:3717b703f76d, 2010-05-24 (annotated)
- Committer:
- donatien
- Date:
- Mon May 24 10:23:42 2010 +0000
- Revision:
- 0:3717b703f76d
- Child:
- 1:e52ec2a24c6a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
donatien | 0:3717b703f76d | 1 | #ifndef NETDNSREQUEST_H |
donatien | 0:3717b703f76d | 2 | #define NETDNSREQUEST_H |
donatien | 0:3717b703f76d | 3 | |
donatien | 0:3717b703f76d | 4 | //class Socket; |
donatien | 0:3717b703f76d | 5 | class Host; |
donatien | 0:3717b703f76d | 6 | //class NetService; |
donatien | 0:3717b703f76d | 7 | class NetDnsRequest; |
donatien | 0:3717b703f76d | 8 | |
donatien | 0:3717b703f76d | 9 | #include "netservice.h" |
donatien | 0:3717b703f76d | 10 | #include "ipaddr.h" |
donatien | 0:3717b703f76d | 11 | #include "host.h" |
donatien | 0:3717b703f76d | 12 | |
donatien | 0:3717b703f76d | 13 | enum NetDnsReply |
donatien | 0:3717b703f76d | 14 | { |
donatien | 0:3717b703f76d | 15 | NETDNS_PRTCL, |
donatien | 0:3717b703f76d | 16 | NETDNS_NOTFOUND, //Hostname is unknown |
donatien | 0:3717b703f76d | 17 | NETDNS_ERROR, //Problem with DNS Service |
donatien | 0:3717b703f76d | 18 | //... |
donatien | 0:3717b703f76d | 19 | NETDNS_FOUND, |
donatien | 0:3717b703f76d | 20 | }; |
donatien | 0:3717b703f76d | 21 | |
donatien | 0:3717b703f76d | 22 | class NetDnsRequest : public NetService |
donatien | 0:3717b703f76d | 23 | { |
donatien | 0:3717b703f76d | 24 | public: |
donatien | 0:3717b703f76d | 25 | NetDnsRequest(const char* hostname); |
donatien | 0:3717b703f76d | 26 | NetDnsRequest(Host* pHost); |
donatien | 0:3717b703f76d | 27 | virtual ~NetDnsRequest(); |
donatien | 0:3717b703f76d | 28 | |
donatien | 0:3717b703f76d | 29 | class CDummy; |
donatien | 0:3717b703f76d | 30 | template<class T> |
donatien | 0:3717b703f76d | 31 | //Linker bug : Must be defined here :( |
donatien | 0:3717b703f76d | 32 | void setOnReply( T* pItem, void (T::*pMethod)(NetDnsReply) ) |
donatien | 0:3717b703f76d | 33 | { |
donatien | 0:3717b703f76d | 34 | m_pCbItem = (CDummy*) pItem; |
donatien | 0:3717b703f76d | 35 | m_pCbMeth = (void (CDummy::*)(NetDnsReply)) pMethod; |
donatien | 0:3717b703f76d | 36 | } |
donatien | 0:3717b703f76d | 37 | |
donatien | 0:3717b703f76d | 38 | //Execute request & return OK if found, NOTFOUND or ERROR on error, or PROCESSING if the request has not completed yet |
donatien | 0:3717b703f76d | 39 | // virtual DnsErr pollState() = 0; |
donatien | 0:3717b703f76d | 40 | virtual void poll() = 0; //NetService fn |
donatien | 0:3717b703f76d | 41 | |
donatien | 0:3717b703f76d | 42 | void getResult(IpAddr* pIp); |
donatien | 0:3717b703f76d | 43 | |
donatien | 0:3717b703f76d | 44 | virtual void close(); |
donatien | 0:3717b703f76d | 45 | |
donatien | 0:3717b703f76d | 46 | protected: |
donatien | 0:3717b703f76d | 47 | void onReply(NetDnsReply reply); //Must be called by impl when the request completes |
donatien | 0:3717b703f76d | 48 | |
donatien | 0:3717b703f76d | 49 | IpAddr m_ip; |
donatien | 0:3717b703f76d | 50 | char* m_hostname; |
donatien | 0:3717b703f76d | 51 | |
donatien | 0:3717b703f76d | 52 | private: |
donatien | 0:3717b703f76d | 53 | CDummy* m_pCbItem; |
donatien | 0:3717b703f76d | 54 | void (CDummy::*m_pCbMeth)(NetDnsReply); |
donatien | 0:3717b703f76d | 55 | |
donatien | 0:3717b703f76d | 56 | Host* m_pHost; |
donatien | 0:3717b703f76d | 57 | |
donatien | 0:3717b703f76d | 58 | bool m_closed; |
donatien | 0:3717b703f76d | 59 | }; |
donatien | 0:3717b703f76d | 60 | |
donatien | 0:3717b703f76d | 61 | #endif |