#include "SocketHandle.hh"
//#include "ClientSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
template <class SPolicy> class ServerSocketHandle;
This class provides the client side policy interface of the socket
abstraction. ClientSocketHandle defines the complete policy interface. It does not implement
any functionality itself however. The following table shows, to which policy members each
- group of ClientSocketHandle members is forwardd. The last collumn shows, on which other
+ group of ClientSocketHandle members is forwarded. The last column shows, on which other
policies this member-group depends <em>in the default policy classes</em>. If you define
your own policy classes, the dependencies are up to you.
\idea Give SocketHandle (and therefore ClientSocketHandle and ServerSocketHandle) a \c
protocol() template member and an additional template arg \c Policies. This arg should be a
- typelist of Poclicy classes which can be accessed. You use protocol<ProtocolClass>() to
+ typelist of policy classes which can be accessed. You use protocol<ProtocolClass>() to
access a protocol class. \c Policies can of course be underspecified or even empty.
\see \ref policy_group \n
: public SocketHandle<SPolicy>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/// Address type from the addressing policy
/// 'Best' type for passing address as parameter
/** Depending on the type of \c Address, this will be either <tt>Address</tt> or <tt>Address
const &</tt>. See <a
- href="http://www.boost.org/libs/utility/call_traits.htm">call_traits documentation in
+ href="http://www.boost.org/doc/libs/release/libs/utility/call_traits.htm">call_traits documentation in
the Boost.Utility library.</a>
*/
typedef typename boost::call_traits<Address>::param_type AddressParam;
NoAddressingPolicy. */
typedef ServerSocketHandle<SPolicy> ServerHandle;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default default constructor
// default copy constructor
# else
template <class OtherPolicy>
ClientSocketHandle<OtherPolicy> const & operator=(ClientSocketHandle<OtherPolicy> other);
-# endif
+# endif
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Reading and Writing
- ///@{
+ //\{
/** \brief Read data from socket
the other end) and will block, if no data is available now. If you do not want to block,
you \e must make the socket non-blocking (using FileHandle::blocking()).
- \throws senf::SystemException
+ \throws senf::SystemException
This variant will read up to \c limit bytes from the
range. read returns a past-the-end iterator after the
last character read. This iterator will point to
somewhere within the input range.
- \param[in,out] range Range to store data in
+ \param[in,out] range Range to store data in
\returns past-the-end iterator pointer to after the
- last read character
+ last read character
\see \ref read() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
# endif
# ifndef DOXYGEN
template <class ForwardWritableRange>
///< Read data into range
/**< \see read(ForwardWritableRange const &) \n
read() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
# endif
template <class Sequence>
void read (Sequence & container, unsigned limit);
work, the container must be a model of 'Sequence' as
defined in the STL documentation
\param[out] container Container to write data to
- \param[in] limit Maximum number of characters to read
+ \param[in] limit Maximum number of characters to read
\see \ref read() */
char * read (char * start, char * end);
///< Read data into memory area
range. read returns a past-the-end iterator after the
last character read. This iterator will point to
somewhere within the input range.
- \param[in,out] range Range to store data in
+ \param[in,out] range Range to store data in
\param[out] from peers address from which the data was
received
\returns past-the-end iterator pointer to after the
- last read character
+ last read character
\see \ref readfrom() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
template <class ForwardWritableRange>
typename boost::range_iterator<ForwardWritableRange>::type
readfrom (ForwardWritableRange & range, Address & from);
///< Read data into range
/**< \see readfrom(ForwardWritableRange const&,Address&) \n
readfrom() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
template <class Sequence>
void readfrom (Sequence & container, Address & from, unsigned limit);
///< Read data into container
work, the container must be a model of 'Sequence' as
defined in the STL documentation
\param[out] container Container to write data to
- \param[in] limit Maximum number of characters to read
+ \param[in] limit Maximum number of characters to read
\param[out] from peers address from which the data was
received
\see \ref readfrom() */
\param[in] end past-the-end pointer to area to write
\returns past-the-end pointer after last byte written
\see \ref write() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
/** \brief Write data to unconnected socket
\param[in] end past-the-end pointer after data to write
\returns past-the-end iterator after last byte written
\see \ref writeto() \n
- <a href="http://www.boost.org/libs/range/index.html">Boost.Range</a> */
+ <a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Addressing
- ///@{
+ //\{
/** \brief Connect to remote peer
///< Query local address
/**< \see \ref local() */
- ///@}
+ //\}
static ClientSocketHandle cast_static(FileHandle handle);
static ClientSocketHandle cast_dynamic(FileHandle handle);
friend class senf::ServerSocketHandle<SPolicy>;
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ClientSocketHandle.cci"
#include "ClientSocketHandle.ct"
#include "ClientSocketHandle.cti"