X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FClientSocketHandle.cti;h=76e6d73f0c27f3e9df14bab0ed8b170e790247ee;hb=d5a72d0b3f6fee56dba6de1c54cafb448ebe3457;hp=116a0608d147c63ec712406aa02967a4f309088c;hpb=f73fa16ed5abdce272ac77f8b8b9ef2b9922c266;p=senf.git diff --git a/Socket/ClientSocketHandle.cti b/Socket/ClientSocketHandle.cti index 116a060..76e6d73 100644 --- a/Socket/ClientSocketHandle.cti +++ b/Socket/ClientSocketHandle.cti @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -42,7 +42,7 @@ senf::detail::ReadRange::read(Handle & handle, { typename boost::range_iterator::type const i (boost::begin(range)); char * const ic (reinterpret_cast(storage_iterator(i))); - return i + (handle.read( ic, + return i + (handle.read( ic, reinterpret_cast(storage_iterator(boost::end(range))) ) - ic); } @@ -54,7 +54,7 @@ readfrom(Handle & handle, ForwardWritableRange & range, typename Handle::Address { typename boost::range_iterator::type const i (boost::begin(range)); char * const ic (reinterpret_cast(storage_iterator(i))); - return i + (handle.readfrom( ic, + return i + (handle.readfrom( ic, reinterpret_cast(storage_iterator(boost::end(range))), addr ) - ic); @@ -68,7 +68,7 @@ prefix_ typename boost::range_const_iterator::type senf::detail::WriteRange:: write(Handle & handle, ForwardReadableRange & range) { - typename boost::range_const_iterator::type i + typename boost::range_const_iterator::type i (boost::const_begin(range)); char const * const ic (reinterpret_cast(storage_iterator(i))); std::advance(i, handle.write(ic, @@ -82,7 +82,7 @@ prefix_ typename boost::range_const_iterator::type senf::detail::WriteRange:: writeto(Handle & handle, ForwardReadableRange & range, typename Handle::Address const & addr) { - typename boost::range_const_iterator::type i + typename boost::range_const_iterator::type i (boost::const_begin(range)); char const * const ic (reinterpret_cast(storage_iterator(i))); std::advance(i, handle.writeto(addr, ic, @@ -97,164 +97,161 @@ writeto(Handle & handle, ForwardReadableRange & range, typename Handle::Address //////////////////////////////////////// // structors -template -prefix_ senf::ClientSocketHandle::ClientSocketHandle() +template +prefix_ senf::ClientSocketHandle::ClientSocketHandle() {} #ifndef DOXYGEN -template +template template -prefix_ senf::ClientSocketHandle:: +prefix_ senf::ClientSocketHandle:: ClientSocketHandle(ClientSocketHandle other, - typename SocketHandle::template IsCompatible::type *) - : SocketHandle(other,true) + typename SocketHandle::template IsCompatible::type *) + : SocketHandle(other,true) {} #else -template +template template -prefix_ senf::ClientSocketHandle:: +prefix_ senf::ClientSocketHandle:: ClientSocketHandle(ClientSocketHandle other) {} #endif -template -prefix_ senf::ClientSocketHandle::ClientSocketHandle(FileHandle other, bool isChecked) - : SocketHandle(other, isChecked) +template +prefix_ senf::ClientSocketHandle::ClientSocketHandle(FileHandle other, bool isChecked) + : SocketHandle(other, isChecked) {} -template +template prefix_ -senf::ClientSocketHandle::ClientSocketHandle(std::auto_ptr protocol, - int fd) - : SocketHandle(protocol,false) -{ - this->body().fd(fd); -} +senf::ClientSocketHandle::ClientSocketHandle(std::auto_ptr body) + : SocketHandle(body) +{} #ifndef DOXYGEN -template +template template -prefix_ typename senf::SocketHandle::template IsCompatible::type const & -senf::ClientSocketHandle::operator=(ClientSocketHandle other) +prefix_ typename senf::SocketHandle::template IsCompatible::type const & +senf::ClientSocketHandle::operator=(ClientSocketHandle other) { assign(other); return *this; } -#else -template +#else +template template prefix_ OtherPolicy const & -senf::ClientSocketHandle::operator=(ClientSocketHandle other) +senf::ClientSocketHandle::operator=(ClientSocketHandle other) {} #endif //////////////////////////////////////// // reading and writing -// senf::ClientSocketHandle::read +// senf::ClientSocketHandle::read #ifndef DOXYGEN -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle:: +senf::ClientSocketHandle:: read(ForwardWritableRange const & range, typename boost::disable_if< boost::is_convertible >::type *) { - return detail::ReadRange< - ClientSocketHandle, - ForwardWritableRange const, + return detail::ReadRange< + ClientSocketHandle, + ForwardWritableRange const, contiguous_storage_iterator< typename boost::range_iterator::type >::value && sizeof(typename boost::range_value::type)==sizeof(char) >::read(*this, range); } #else -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle:: +senf::ClientSocketHandle:: read(ForwardWritableRange const & range) {} #endif #ifndef DOXYGEN -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle:: +senf::ClientSocketHandle:: read(ForwardWritableRange & range, typename boost::disable_if< boost::is_convertible >::type *) { - return detail::ReadRange< - ClientSocketHandle, - ForwardWritableRange, + return detail::ReadRange< + ClientSocketHandle, + ForwardWritableRange, contiguous_storage_iterator< typename boost::range_iterator::type >::value && sizeof(typename boost::range_value::type)==sizeof(char) >::read(*this, range); } #else -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle:: +senf::ClientSocketHandle:: read(ForwardWritableRange & range) {} #endif -template -prefix_ char * senf::ClientSocketHandle::read(char * start, char * end) +template +prefix_ char * senf::ClientSocketHandle::read(char * start, char * end) { - return start + Policy::ReadPolicy::read(*this, start, end-start); + return start + SPolicy::ReadPolicy::read(*this, start, end-start); } -// senf::ClientSocketHandle::readfrom +// senf::ClientSocketHandle::readfrom -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle::readfrom(ForwardWritableRange const & range, Address & from) +senf::ClientSocketHandle::readfrom(ForwardWritableRange const & range, Address & from) { - return detail::ReadRange< - ClientSocketHandle, - ForwardWritableRange const, + return detail::ReadRange< + ClientSocketHandle, + ForwardWritableRange const, contiguous_storage_iterator< typename boost::range_iterator::type >::value && sizeof(typename boost::range_value::type)==sizeof(char) >::readfrom(*this, range, from); } -template +template template prefix_ typename boost::range_iterator::type -senf::ClientSocketHandle::readfrom(ForwardWritableRange & range, Address & from) +senf::ClientSocketHandle::readfrom(ForwardWritableRange & range, Address & from) { - return detail::ReadRange< - ClientSocketHandle, - ForwardWritableRange, + return detail::ReadRange< + ClientSocketHandle, + ForwardWritableRange, contiguous_storage_iterator< typename boost::range_iterator::type >::value && sizeof(typename boost::range_value::type)==sizeof(char) >::readfrom(*this, range, from); } -template -prefix_ char * senf::ClientSocketHandle::readfrom(char * start, char * end, +template +prefix_ char * senf::ClientSocketHandle::readfrom(char * start, char * end, Address & from) { - return start + Policy::ReadPolicy::readfrom(*this, start, end-start, from); + return start + SPolicy::ReadPolicy::readfrom(*this, start, end-start, from); } -// senf::ClientSocketHandle::write +// senf::ClientSocketHandle::write -template +template template prefix_ typename boost::range_const_iterator::type -senf::ClientSocketHandle::write(ForwardReadableRange const & range) +senf::ClientSocketHandle::write(ForwardReadableRange const & range) { return detail::WriteRange< - ClientSocketHandle, + ClientSocketHandle, ForwardReadableRange const, contiguous_storage_iterator< typename boost::range_iterator::type @@ -262,21 +259,21 @@ senf::ClientSocketHandle::write(ForwardReadableRange const & range) >::write(*this, range); } -template -prefix_ char const * senf::ClientSocketHandle::write(char const * start, char const * end) +template +prefix_ char const * senf::ClientSocketHandle::write(char const * start, char const * end) { - return start + Policy::WritePolicy::write(*this, start, end-start); + return start + SPolicy::WritePolicy::write(*this, start, end-start); } -// senf::ClientSocketHandle::writeto +// senf::ClientSocketHandle::writeto -template +template template prefix_ typename boost::range_const_iterator::type -senf::ClientSocketHandle::writeto(AddressParam addr, ForwardReadableRange const & range) +senf::ClientSocketHandle::writeto(AddressParam addr, ForwardReadableRange const & range) { return detail::WriteRange< - ClientSocketHandle, + ClientSocketHandle, ForwardReadableRange const, contiguous_storage_iterator< typename boost::range_iterator::type @@ -284,116 +281,90 @@ senf::ClientSocketHandle::writeto(AddressParam addr, ForwardReadableRang >::writeto(*this, range, addr); } -template -prefix_ char const * senf::ClientSocketHandle::writeto(AddressParam addr, +template +prefix_ char const * senf::ClientSocketHandle::writeto(AddressParam addr, char const * start, char const * end) { - return start + Policy::WritePolicy::writeto(*this, addr, start, end-start); + return start + SPolicy::WritePolicy::writeto(*this, addr, start, end-start); } //////////////////////////////////////// // addressing -// senf::ClientSocketHandle::peer +// senf::ClientSocketHandle::peer -template -prefix_ typename Policy::AddressingPolicy::Address -senf::ClientSocketHandle::peer() +template +prefix_ typename SPolicy::AddressingPolicy::Address +senf::ClientSocketHandle::peer() + const { - typename Policy::AddressingPolicy::Address addr; + typename SPolicy::AddressingPolicy::Address addr; this->peer(addr); return addr; } -template -prefix_ void senf::ClientSocketHandle:: -peer(typename Policy::AddressingPolicy::Address & addr) +template +prefix_ void senf::ClientSocketHandle:: +peer(typename SPolicy::AddressingPolicy::Address & addr) + const { - Policy::AddressingPolicy::peer(*this,addr); + SPolicy::AddressingPolicy::peer(*this, addr); } -// senf::ClientSocketHandle::local +// senf::ClientSocketHandle::local -template -prefix_ typename Policy::AddressingPolicy::Address -senf::ClientSocketHandle::local() +template +prefix_ typename SPolicy::AddressingPolicy::Address +senf::ClientSocketHandle::local() + const { - typename Policy::AddressingPolicy::Address addr; + typename SPolicy::AddressingPolicy::Address addr; this->local(addr); return addr; } -template -prefix_ void senf::ClientSocketHandle:: -local(typename Policy::AddressingPolicy::Address & addr) -{ - Policy::AddressingPolicy::local(*this,addr); -} - -// senf::ClientSocketHandle::connect - -template -prefix_ void senf::ClientSocketHandle::connect(AddressParam addr) -{ - Policy::AddressingPolicy::connect(*this,addr); -} - -// senf::ClientSocketHandle::bind - -template -prefix_ void senf::ClientSocketHandle:: -bind(typename boost::call_traits::param_type addr) +template +prefix_ void senf::ClientSocketHandle:: +local(typename SPolicy::AddressingPolicy::Address & addr) + const { - Policy::AddressingPolicy::bind(*this,addr); + SPolicy::AddressingPolicy::local(*this,addr); } -//////////////////////////////////////// -// Buffering - -// senf::ClientSocketHandle::rcvbuf - -template -prefix_ unsigned senf::ClientSocketHandle::rcvbuf() -{ - return Policy::BufferingPolicy::rcvbuf(*this); -} +// senf::ClientSocketHandle::connect -template -prefix_ void senf::ClientSocketHandle::rcvbuf(unsigned size) +template +prefix_ void senf::ClientSocketHandle::connect(AddressParam addr) + const { - Policy::BufferingPolicy::rcvbuf(*this,size); + SPolicy::AddressingPolicy::connect(*this, addr); } -// senf::ClientSocketHandle::sndbuf - -template -prefix_ unsigned senf::ClientSocketHandle::sndbuf() -{ - return Policy::BufferingPolicy::sndbuf(*this); -} +// senf::ClientSocketHandle::bind -template -prefix_ void senf::ClientSocketHandle::sndbuf(unsigned size) +template +prefix_ void senf::ClientSocketHandle::bind(AddressParam addr) + const { - Policy::BufferingPolicy::sndbuf(*this,size); + SPolicy::AddressingPolicy::bind(*this, addr); } //////////////////////////////////////// // Casting -template -prefix_ senf::ClientSocketHandle -senf::ClientSocketHandle::cast_static(FileHandle handle) +template +prefix_ senf::ClientSocketHandle +senf::ClientSocketHandle::cast_static(FileHandle handle) { return ClientSocketHandle(handle, true); } -template -prefix_ senf::ClientSocketHandle -senf::ClientSocketHandle::cast_dynamic(FileHandle handle) +template +prefix_ senf::ClientSocketHandle +senf::ClientSocketHandle::cast_dynamic(FileHandle handle) { - SocketHandle h (SocketHandle::cast_dynamic(handle)); + SocketHandle h (SocketHandle::cast_dynamic(handle)); if (static_cast(FileHandle::body(h)).isServer()) throw std::bad_cast(); return cast_static(handle); @@ -402,15 +373,19 @@ senf::ClientSocketHandle::cast_dynamic(FileHandle handle) //////////////////////////////////////// // State information -template -prefix_ void senf::ClientSocketHandle::state(SocketStateMap & map, unsigned lod) +template +prefix_ void senf::ClientSocketHandle::state(SocketStateMap & map, unsigned lod) { map["handle"] = prettyName(typeid(*this)); - this->body().state(map,lod); + if (this->valid()) { + map["valid"] << "true"; + this->body().state(map,lod); + } else + map["valid"] << "false"; } -template -prefix_ std::string senf::ClientSocketHandle::dumpState(unsigned lod) +template +prefix_ std::string senf::ClientSocketHandle::dumpState(unsigned lod) { SocketStateMap map; state(map,lod);