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
14namespace nacl_io {
15
16class 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