--- /dev/null
+#ifndef __FCGI_H__
+#define __FCGI_H__
+
+namespace aeb {
+namespace fcgi {
+
+
+/**
+ *
+ */
+template <typename Descriptor,typename InternetProtocol>
+class acceptor : public basic_socket_acceptor<Descriptor,InternetProtocol>
+{
+ public:
+ typedef Descriptor socket_type;
+ acceptor(const ip::basic_endpoint<InternetProtocol> &e) :
+ basic_socket_acceptor<Descriptor,InternetProtcol>(e)
+ {
+ int val = 1;
+ m_socket.set_option(SO_REUSEADDR,val);
+ };
+ // Acceptor main entry
+ void on_accept()
+ {
+ endpoint_type tmp;
+ int len = tmp.size();
+ detail::socket_type s;
+ aeb::sys::error ec;
+
+ s = aeb::net::accept<socklen_t>(this->m_descriptor,tmp.data(),&len,ec);
+ std::cout<<"fcgi::acceptor ("<<this->m_descriptor<<"):"<<" Error="<<ec.code()<<" socket="<<std::endl;
+
+ if (s != aeb::net::detail::invalid_socket)
+ {
+ m_r = request_handler::ptr(new request_handler(s)) ;
+ m_r->add_ref(); //because request_handler will kill himself
+ }
+ };
+ protected:
+ request_handler::ptr m_r;
+};
+
+
+
+}; // End fcgi
+}; // End aeb
+
+#endif