00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BOOSTER_AIO_ACCEPTOR_H
00009 #define BOOSTER_AIO_ACCEPTOR_H
00010
00011 #include <booster/aio/types.h>
00012 #include <booster/callback.h>
00013 #include <booster/hold_ptr.h>
00014 #include <booster/noncopyable.h>
00015 #include <booster/aio/endpoint.h>
00016 #include <booster/aio/basic_socket.h>
00017
00018 namespace booster {
00019 namespace aio {
00020 class io_service;
00021 class stream_socket;
00022
00026 class BOOSTER_API acceptor : public basic_socket {
00027 public:
00028
00032 acceptor();
00036 acceptor(io_service &srv);
00037 ~acceptor();
00038
00044 void open(family_type d);
00050 void open(family_type d,system::error_code &e);
00051
00057 void accept(stream_socket &s);
00063 void accept(stream_socket &s,system::error_code &e);
00064
00070 void bind(endpoint const &ep);
00076 void bind(endpoint const &ep,system::error_code &e);
00082 void listen(int backlog);
00088 void listen(int backlog,system::error_code &e);
00089
00096 void async_accept(stream_socket &s,event_handler const &h);
00097
00098 private:
00099 struct data;
00100 hold_ptr<data> d;
00101 };
00102
00103 }
00104 }
00105
00106 #endif