Show
Ignore:
Timestamp:
08/27/08 22:02:39 (4 months ago)
Author:
frsyuki
Message:

lang/c/mpio: added mp::multiplex

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/c/mpio/trunk/mp/iothreads/listen.h

    r18311 r18340  
    3030 
    3131struct listener { 
    32         private: 
     32private: 
    3333        class listen_thread : public pthread_thread<listen_thread> { 
    3434        public: 
     
    4343                                        if(errno == EINTR || errno == EAGAIN) { continue; } 
    4444                                        // FIXME 
     45                                        throw std::runtime_error("socket broken"); 
     46                                } else if(sock == 0) { 
     47                                        // FIXME 
     48                                        throw std::runtime_error("socket broken"); 
    4549                                } 
    4650                                iothreads::submit(m_callback, m_obj, sock); 
     
    5660        }; 
    5761 
    58         public: 
     62public: 
    5963        template <typename T> 
    60         static void listen(int lsock, void (*callback)(T*, int fd), T* obj) 
     64        static void listen(int lsock, void (*callback)(void*, int fd), T* obj) 
    6165        { 
    6266                iothreads::manager::add_thread<listen_thread>(lsock, 
    63                                 reinterpret_cast<void (*)(void*,int)>(callback), 
    64                                 reinterpret_cast<void*>(obj)); 
     67                                callback, reinterpret_cast<void*>(obj)); 
    6568        } 
    6669 
    67         private: 
     70private: 
    6871        listener(); 
    6972}; 
     
    7174 
    7275template <typename T> 
    73 inline void listen(int lsock, void (*callback)(T*, int fd), T* obj) 
     76inline void listen(int lsock, void (*callback)(void*, int fd), T* obj) 
    7477{ 
    7578        listener::listen(lsock, callback, obj);