[complement-svn] SF.net SVN: complement: [1842] branches/complement-sockios/explore/include/ sockio
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2008-04-03 06:12:53
|
Revision: 1842 http://complement.svn.sourceforge.net/complement/?rev=1842&view=rev Author: complement Date: 2008-04-02 23:12:50 -0700 (Wed, 02 Apr 2008) Log Message: ----------- throw from loop, if stop cmd detected; under construction Modified Paths: -------------- branches/complement-sockios/explore/include/sockios/sp.h Modified: branches/complement-sockios/explore/include/sockios/sp.h =================================================================== --- branches/complement-sockios/explore/include/sockios/sp.h 2008-04-02 18:44:21 UTC (rev 1841) +++ branches/complement-sockios/explore/include/sockios/sp.h 2008-04-03 06:12:50 UTC (rev 1842) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <08/04/02 22:22:19 yeti> +// -*- C++ -*- Time-stamp: <08/04/03 01:05:05 ptr> /* * Copyright (c) 2008 @@ -778,40 +778,40 @@ */ try { - for ( ; ; ) { - int n = epoll_wait( efd, &ev[0], /* n_ret */ 512, -1 ); - if ( n < 0 ) { - if ( errno == EINTR ) { - continue; + for ( ; ; ) { + int n = epoll_wait( efd, &ev[0], /* n_ret */ 512, -1 ); + if ( n < 0 ) { + if ( errno == EINTR ) { + continue; + } + // throw system_error } - // throw system_error - } - // std::cerr << "epoll see " << n << std::endl; - for ( int i = 0; i < n; ++i ) { - // std::cerr << "epoll i = " << i << std::endl; - if ( ev[i].data.fd == pipefd[0] ) { - // std::cerr << "on pipe\n"; - cmd_from_pipe(); - } else { - // std::cerr << "#\n"; + // std::cerr << "epoll see " << n << std::endl; + for ( int i = 0; i < n; ++i ) { + // std::cerr << "epoll i = " << i << std::endl; + if ( ev[i].data.fd == pipefd[0] ) { + // std::cerr << "on pipe\n"; + cmd_from_pipe(); + } else { + // std::cerr << "#\n"; - typename fd_container_type::iterator ifd = descr.find( ev[i].data.fd ); - if ( ifd == descr.end() ) { - throw std::logic_error( "file descriptor in epoll, but not in descr[]" ); - } + typename fd_container_type::iterator ifd = descr.find( ev[i].data.fd ); + if ( ifd == descr.end() ) { + throw std::logic_error( "file descriptor in epoll, but not in descr[]" ); + } - fd_info& info = ifd->second; - if ( info.flags & fd_info::listener ) { - // std::cerr << "%\n"; - process_listener( ev[i], ifd ); - } else { - // std::cerr << "not listener\n"; - process_regular( ev[i], ifd ); + fd_info& info = ifd->second; + if ( info.flags & fd_info::listener ) { + // std::cerr << "%\n"; + process_listener( ev[i], ifd ); + } else { + // std::cerr << "not listener\n"; + process_regular( ev[i], ifd ); + } } } } } - } catch ( std::exception& e ) { std::cerr << e.what() << std::endl; } @@ -828,8 +828,8 @@ // throw system_error // std::cerr << "Read pipe\n"; } else if ( r == 0 ) { - std::cerr << "Read pipe 0\n"; - return; + // std::cerr << "Read pipe 0\n"; + throw runtime_error( "Read pipe return 0" ); } switch ( _ctl.cmd ) { @@ -877,7 +877,7 @@ break; case rqstop: // std::cerr << "Stop request\n"; - return; + throw runtime_error( "Stop request (normal flow)" ); break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |