// Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY // AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. #include #include #include namespace isc { namespace util { namespace test { unsigned char parentReadState(int fd) { unsigned char result = 0xff; fd_set rfds; FD_ZERO(&rfds); FD_SET(fd, &rfds); struct timeval tv = {5, 0}; const int nfds = select(fd + 1, &rfds, NULL, NULL, &tv); EXPECT_EQ(1, nfds); if (nfds == 1) { // Read status const ssize_t bytes_read = read(fd, &result, sizeof(result)); EXPECT_EQ(sizeof(result), bytes_read); } return (result); } } } }