Bytemaster's Boost Libraries
/Users/dlarimer/dev/libs/cmt/include/boost/cmt/asio/tcp/socket.hpp
00001 #ifndef _BOOST_CMT_ASIO_TCP_SOCKET_HPP
00002 #define _BOOST_CMT_ASIO_TCP_SOCKET_HPP
00003 #include <boost/asio.hpp>
00004 
00005 namespace boost { namespace cmt { namespace asio { namespace tcp {
00006     namespace detail { struct socket; }
00007 
00011     class socket  : public boost::asio::ip::tcp::socket {
00012         public:
00013             typedef boost::shared_ptr<socket> ptr;
00014 
00015             socket();
00016             ~socket();
00017 
00018             boost::system::error_code connect( const boost::asio::ip::tcp::endpoint& ep );
00019 
00023             struct iterator : public std::iterator<std::input_iterator_tag,char,void> {
00024                 iterator( boost::cmt::asio::tcp::socket* _s = NULL)
00025                 :s(_s){ if(_s){++*this;}  }
00026 
00027                 inline const char& operator*()const  { return value;  }
00028                 inline const char* operator->()const { return &value; }
00029                 inline char& operator*() { return value;  }
00030                 inline char* operator->(){ return &value; }
00031 
00032                 iterator& operator++();
00033                 iterator operator++(int);
00034 
00035                 bool operator == ( const iterator& i )const { return s == i.s; }
00036                 bool operator != ( const iterator& i )const { return s != i.s; }
00037 
00038                 private:
00039                     char                           value;
00040                     boost::cmt::asio::tcp::socket* s;
00041             };
00042 
00043             size_t read_some( char* buffer, size_t size );
00044             size_t read( char* buffer, size_t size );
00045             size_t write( const char* buffer, size_t size );
00046 
00047             void flush();
00048         private:
00049             detail::socket* my;
00050     };
00051 
00052 } } } } // namespace boost::cmt::asio::tcp
00053 
00054 #endif
 All Classes Namespaces Files Functions Variables Typedefs Defines