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>
26 #include <sys/types.h>
27 #include <sys/socket.h>
32 SocketPair::SocketPair(Mode mode) {
33 if (socketpair(PF_UNIX, SOCK_STREAM, 0, fds_) != 0) {
34 throw std::runtime_error(
35 folly::to<std::string>("test::SocketPair: failed create socket pair",
39 if (mode == NONBLOCKING) {
40 if (fcntl(fds_[0], F_SETFL, O_NONBLOCK) != 0) {
41 throw std::runtime_error(
42 folly::to<std::string>("test::SocketPair: failed to set non-blocking "
45 if (fcntl(fds_[1], F_SETFL, O_NONBLOCK) != 0) {
46 throw std::runtime_error(
47 folly::to<std::string>("test::SocketPair: failed to set non-blocking "
48 "write mode", errno));
53 SocketPair::~SocketPair() {
58 void SocketPair::closeFD0() {
65 void SocketPair::closeFD1() {