// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "tools/android/common/net.h"

#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/socket.h>
#include <sys/types.h>

#include "base/strings/stringprintf.h"

namespace tools {

int DisableNagle(int socket) {
  int on = 1;
  return setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
}

int DeferAccept(int socket) {
  int on = 1;
  return setsockopt(socket, IPPROTO_TCP, TCP_DEFER_ACCEPT, &on, sizeof(on));
}

std::string DumpBinary(const char* buffer, size_t length) {
  std::string result = "[";
  for (size_t i = 0; i < length; ++i) {
    base::StringAppendF(&result, "%02x,",
                        static_cast<unsigned char>(buffer[i]));
  }

  if (length)
    result.erase(result.length() - 1);

  return result + "]";
}

}  // namespace tools

