// 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/forwarder2/pipe_notifier.h"

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

#include "base/check_op.h"
#include "base/logging.h"
#include "base/posix/eintr_wrapper.h"

namespace forwarder2 {

PipeNotifier::PipeNotifier() {
  int pipe_fd[2];
  int ret = pipe(pipe_fd);
  CHECK_EQ(0, ret);
  receiver_fd_ = pipe_fd[0];
  sender_fd_ = pipe_fd[1];
  fcntl(sender_fd_, F_SETFL, O_NONBLOCK);
}

PipeNotifier::~PipeNotifier() {
  close(receiver_fd_);
  close(sender_fd_);
}

bool PipeNotifier::Notify() {
  CHECK_NE(-1, sender_fd_);
  errno = 0;
  int ret = HANDLE_EINTR(write(sender_fd_, "1", 1));
  if (ret < 0) {
    PLOG(ERROR) << "write";
    return false;
  }
  return true;
}

void PipeNotifier::Reset() {
  char c;
  int ret = HANDLE_EINTR(read(receiver_fd_, &c, 1));
  if (ret < 0) {
    PLOG(ERROR) << "read";
    return;
  }
  DCHECK_EQ(1, ret);
  DCHECK_EQ('1', c);
}

}  // namespace forwarder
