1bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// found in the LICENSE file. 4bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 5bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#ifndef LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 6bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#define LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 7bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 8bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "nacl_io/ossocket.h" 9bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "nacl_io/pepper_interface.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "sdk_util/simple_lock.h" 11bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 12bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#ifdef PROVIDES_SOCKET_API 13bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 14bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochnamespace nacl_io { 15bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 16bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochclass HostResolver { 17bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch public: 18bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch HostResolver(); 19bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch ~HostResolver(); 20bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 21bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch void Init(PepperInterface* ppapi); 22bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void freeaddrinfo(struct addrinfo* res); 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int getnameinfo(const struct sockaddr *sa, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci socklen_t salen, 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci char *host, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t hostlen, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci char *serv, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t servlen, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int flags); 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) int getaddrinfo(const char* node, 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const char* service, 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const struct addrinfo* hints, 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) struct addrinfo** res); 35bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch struct hostent* gethostbyname(const char* name); 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 37bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch private: 38bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch void hostent_initialize(); 39bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch void hostent_cleanup(); 40bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 41bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch struct hostent hostent_; 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PepperInterface* ppapi_; 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sdk_util::SimpleLock gethostbyname_lock_; 44bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}; 45bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 46bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch} // namespace nacl_io 47bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 48bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif // PROVIDES_SOCKET_API 49bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif // LIBRARIES_NACL_IO_HOST_RESOLVER_H_ 50