int main()

in tensorflow_serving/util/net_http/socket/testing/ev_print_req_server.cc [160:241]


int main(int argc, char **argv) {
  fprintf(stdout, "Start the http server ...\n");

  struct event_base *base;
  struct evhttp *http;
  struct evhttp_bound_socket *handle;

  ev_uint32_t port = 8080;

  if (argc < 2) {
    help();
    return 1;
  }

  bool port_parsed = absl::SimpleAtoi(argv[1], &port);
  if (!port_parsed) {
    fprintf(stderr, "Invalid port: %s\n", argv[1]);
  }

  base = event_base_new();
  if (!base) {
    fprintf(stderr, "Couldn't create an event_base: exiting\n");
    return 1;
  }

  http = evhttp_new(base);
  if (!http) {
    fprintf(stderr, "couldn't create evhttp. Exiting.\n");
    return 1;
  }

  // catch all
  evhttp_set_gencb(http, request_cb, NULL);

  // nullptr will bind to ipv4, which will fail to accept
  // requests from clients where getaddressinfo() defaults to AF_INET6
  handle = evhttp_bind_socket_with_handle(http, "::0", (ev_uint16_t)port);
  if (!handle) {
    fprintf(stderr, "couldn't bind to port %d. Exiting.\n", (int)port);
    return 1;
  }

  {
    /* Extract and display the address we're listening on. */
    struct sockaddr_storage ss = {};
    evutil_socket_t fd;
    ev_socklen_t socklen = sizeof(ss);
    char addrbuf[128];
    void *inaddr;
    const char *addr;
    int got_port = -1;
    fd = evhttp_bound_socket_get_fd(handle);
    memset(&ss, 0, sizeof(ss));
    if (getsockname(fd, (struct sockaddr *)&ss, &socklen)) {
      perror("getsockname() failed");
      return 1;
    }
    if (ss.ss_family == AF_INET) {
      got_port = ntohs(((struct sockaddr_in *)&ss)->sin_port);
      inaddr = &((struct sockaddr_in *)&ss)->sin_addr;
    } else if (ss.ss_family == AF_INET6) {
      got_port = ntohs(((struct sockaddr_in6 *)&ss)->sin6_port);
      inaddr = &((struct sockaddr_in6 *)&ss)->sin6_addr;
    } else {
      fprintf(stderr, "Weird address family %d\n", ss.ss_family);
      return 1;
    }
    addr = evutil_inet_ntop(ss.ss_family, inaddr, addrbuf, sizeof(addrbuf));
    if (addr) {
      printf("Listening on %s:%d\n", addr, got_port);
      evutil_snprintf(uri_root, sizeof(uri_root), "http://%s:%d", addr,
                      got_port);
    } else {
      fprintf(stderr, "evutil_inet_ntop failed\n");
      return 1;
    }
  }

  event_base_dispatch(base);

  return 0;
}