95 BESDEBUG(MODULE, prolog <<
"START" << endl);
101 for (Socket_citer i = _socket_list.begin(), e = _socket_list.end(); i != e; i++) {
102 Socket *s_ptr = (*i).second;
103 if (s_ptr->getSocketDescriptor() > maxfd) maxfd = s_ptr->getSocketDescriptor();
104 FD_SET(s_ptr->getSocketDescriptor(), &read_fd);
107 struct timeval timeout;
108 timeout.tv_sec = 120;
110 int status = select(maxfd + 1, &read_fd, (fd_set*) NULL, (fd_set*) NULL, &timeout);
116 BESDEBUG(MODULE, prolog <<
"select() encountered EAGAIN" << endl);
123 BESDEBUG(MODULE, prolog <<
"select() encountered EINTR" << endl);
127 throw BESInternalError(
string(
"select(): ") + strerror(errno), __FILE__, __LINE__);
131 BESDEBUG(MODULE, prolog <<
"select() completed without error." << endl);
133 for (Socket_citer i = _socket_list.begin(), e = _socket_list.end(); i != e; i++) {
134 Socket *s_ptr = (*i).second;
135 if (FD_ISSET( s_ptr->getSocketDescriptor(), &read_fd )) {
136 struct sockaddr from;
137 socklen_t len_from =
sizeof(from);
139 BESDEBUG(MODULE, prolog <<
"Attempting to accept on "<< s_ptr->getIp() <<
":"
140 << s_ptr->getPort() << endl);
143 while ((msgsock =
::accept(s_ptr->getSocketDescriptor(), &from, &len_from)) < 0) {
144 if (errno == EINTR) {
148 throw BESInternalError(
string(
"accept: ") + strerror(errno), __FILE__, __LINE__);
152 BESDEBUG(MODULE, prolog <<
"END (returning new Socket)" << endl);
153 return s_ptr->newSocket(msgsock, (
struct sockaddr *) &from);
157 BESDEBUG(MODULE, prolog <<
"END (returning 0)" << endl);
169 strm << BESIndent::LMarg <<
"SocketListener::dump - (" << (
void *)
this <<
")" << endl;
171 if (_socket_list.size()) {
172 strm << BESIndent::LMarg <<
"registered sockets:" << endl;
173 Socket_citer i = _socket_list.begin();
174 Socket_citer ie = _socket_list.end();
175 for (; i != ie; i++) {
176 strm << BESIndent::LMarg <<
"socket: " << (*i).first;
177 Socket *s_ptr = (*i).second;
182 strm << BESIndent::LMarg <<
"registered sockets: none" << endl;
184 BESIndent::UnIndent();