2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
19 #include <folly/io/async/test/SocketPair.h>
21 #include <folly/Conv.h>
22 #include <folly/portability/Fcntl.h>
23 #include <folly/portability/Sockets.h>
24 #include <folly/portability/Unistd.h>
31 SocketPair::SocketPair(Mode mode) {
32 if (socketpair(PF_UNIX, SOCK_STREAM, 0, fds_) != 0) {
33 throw std::runtime_error(
34 folly::to<std::string>("test::SocketPair: failed create socket pair",
38 if (mode == NONBLOCKING) {
39 if (fcntl(fds_[0], F_SETFL, O_NONBLOCK) != 0) {
40 throw std::runtime_error(
41 folly::to<std::string>("test::SocketPair: failed to set non-blocking "
44 if (fcntl(fds_[1], F_SETFL, O_NONBLOCK) != 0) {
45 throw std::runtime_error(
46 folly::to<std::string>("test::SocketPair: failed to set non-blocking "
47 "write mode", errno));
52 SocketPair::~SocketPair() {
57 void SocketPair::closeFD0() {
64 void SocketPair::closeFD1() {