1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 6 #define LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 7 8 #include "nacl_io/ossocket.h" 9 #include "nacl_io/pepper_interface.h" 10 #include "sdk_util/simple_lock.h" 11 12 #ifdef PROVIDES_SOCKET_API 13 14 namespace nacl_io { 15 16 class HostResolver { 17 public: 18 HostResolver(); 19 ~HostResolver(); 20 21 void Init(PepperInterface* ppapi); 22 23 void freeaddrinfo(struct addrinfo* res); 24 int getnameinfo(const struct sockaddr *sa, 25 socklen_t salen, 26 char *host, 27 size_t hostlen, 28 char *serv, 29 size_t servlen, 30 int flags); 31 int getaddrinfo(const char* node, 32 const char* service, 33 const struct addrinfo* hints, 34 struct addrinfo** res); 35 struct hostent* gethostbyname(const char* name); 36 37 private: 38 void hostent_initialize(); 39 void hostent_cleanup(); 40 41 struct hostent hostent_; 42 PepperInterface* ppapi_; 43 sdk_util::SimpleLock gethostbyname_lock_; 44 }; 45 46 } // namespace nacl_io 47 48 #endif // PROVIDES_SOCKET_API 49 #endif // LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 50