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

#include <brillo/unittest_utils.h>

#include <fcntl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>

#include <base/logging.h>
#include <gtest/gtest.h>

namespace brillo {

const int ScopedPipe::kPipeSize = 4096;

ScopedPipe::ScopedPipe() {
  int fds[2];
  if (pipe(fds) != 0) {
    PLOG(FATAL) << "Creating a pipe()";
  }
  reader = fds[0];
  writer = fds[1];
  EXPECT_EQ(kPipeSize, fcntl(writer, F_SETPIPE_SZ, kPipeSize));
}

ScopedPipe::~ScopedPipe() {
  if (reader != -1)
    close(reader);
  if (writer != -1)
    close(writer);
}

ScopedSocketPair::ScopedSocketPair() {
  int fds[2];
  if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) != 0) {
    PLOG(FATAL) << "Creating a socketpair()";
  }
  left = fds[0];
  right = fds[1];
}

ScopedSocketPair::~ScopedSocketPair() {
  if (left != -1)
    close(left);
  if (right != -1)
    close(right);
}

}  // namespace brillo
