Wraps the DNSRequest class from NetServices to be synchronous, which is easier to use.
Dependents: TwitPicExample SPIVFDclock RPC_mbed_client QRSS_Rx ... more
dnsresolve.h
- Committer:
- hlipka
- Date:
- 2011-01-11
- Revision:
- 1:3a3015287572
- Parent:
- 0:83c60912e03f
- Child:
- 2:097d4993dd1e
File content as of revision 1:3a3015287572:
#ifndef __DNSRESOLVE_H__ #define __DNSRESOLVE_H__ #include "Timer.h" #include "wait_api.h" #include "DNSRequest.h" class DNSResolver { public: DNSResolver() { _request=new DNSRequest(); _request->setOnReply(this, &DNSResolver::onReply); }; ~DNSResolver() { delete _request; }; IpAddr resolveName(const char* name) { _completed=0; IpAddr addr; DNSRequestErr r=_request->resolve(name); if (0!=r) { _request->close(); return addr; } mbed::Timer tmr; tmr.start(); while (0==_completed) { Net::poll(); wait(0.1); if (tmr.read()>5) break; } if (-1==_completed) { _request->close(); return addr; } _request->getResult(&addr); _request->close(); return addr; }; void onReply(DNSReply reply) { if (reply==DNS_FOUND) _completed=1; else _completed=-1; }; private: DNSRequest *_request; int _completed; // -1=err,0=running,1=ok }; #endif