Skip to content
Snippets Groups Projects
Commit 4c1f0fe5 authored by jkaeber's avatar jkaeber
Browse files

added address info to socket related SystemExceptions

parent d1031e53
No related branches found
No related tags found
No related merge requests found
...@@ -42,7 +42,12 @@ peer(SocketHandle<SPolicy> handle, Address & addr, ...@@ -42,7 +42,12 @@ peer(SocketHandle<SPolicy> handle, Address & addr,
typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *) typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *)
{ {
addr.clear(); addr.clear();
do_peer(handle,addr.sockaddr_p(),addr.sockaddr_len()); try {
do_peer(handle,addr.sockaddr_p(),addr.sockaddr_len());
} catch (SystemException & e) {
e << "; could not get peer for address \"" << addr << "\"";
throw;
}
} }
#else #else
template <class Address> template <class Address>
...@@ -59,7 +64,12 @@ prefix_ void senf::GenericAddressingPolicy<Address>:: ...@@ -59,7 +64,12 @@ prefix_ void senf::GenericAddressingPolicy<Address>::
connect(SocketHandle<SPolicy> handle, Address const & addr, connect(SocketHandle<SPolicy> handle, Address const & addr,
typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *) typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *)
{ {
do_connect(handle,addr.sockaddr_p(),addr.sockaddr_len()); try {
do_connect(handle,addr.sockaddr_p(),addr.sockaddr_len());
} catch (SystemException & e) {
e << "; could not connect to address \"" << addr << "\"";
throw;
}
} }
#else #else
template <class Address> template <class Address>
...@@ -74,14 +84,24 @@ prefix_ void senf::GenericAddressingPolicy<Address>::local(FileHandle handle, ...@@ -74,14 +84,24 @@ prefix_ void senf::GenericAddressingPolicy<Address>::local(FileHandle handle,
Address & addr) Address & addr)
{ {
addr.clear(); addr.clear();
do_local(handle,addr.sockaddr_p(),addr.sockaddr_len()); try {
do_local(handle,addr.sockaddr_p(),addr.sockaddr_len());
} catch (SystemException & e) {
e << "; could not get name for address \"" << addr << "\"";
throw;
}
} }
template <class Address> template <class Address>
prefix_ void senf::GenericAddressingPolicy<Address>::bind(FileHandle handle, prefix_ void senf::GenericAddressingPolicy<Address>::bind(FileHandle handle,
Address const & addr) Address const & addr)
{ {
do_bind(handle,addr.sockaddr_p(),addr.sockaddr_len()); try {
do_bind(handle,addr.sockaddr_p(),addr.sockaddr_len());
} catch (SystemException & e) {
e << "; could not bind to address \"" << addr << "\"";
throw;
}
} }
///////////////////////////////cti.e/////////////////////////////////////// ///////////////////////////////cti.e///////////////////////////////////////
......
...@@ -114,6 +114,13 @@ prefix_ unsigned senf::LLSocketAddress::sockaddr_len() ...@@ -114,6 +114,13 @@ prefix_ unsigned senf::LLSocketAddress::sockaddr_len()
return sizeof(addr_); return sizeof(addr_);
} }
prefix_ std::ostream & senf::operator<<(std::ostream & os, LLSocketAddress const & llAddr)
{
// TODO: expose more bytes from sockaddr_ll addr_
os << "[some LLSocketAddress]";
return os;
}
///////////////////////////////cci.e/////////////////////////////////////// ///////////////////////////////cci.e///////////////////////////////////////
#undef prefix_ #undef prefix_
......
...@@ -155,6 +155,11 @@ namespace senf { ...@@ -155,6 +155,11 @@ namespace senf {
}; };
/// @} /// @}
/** \brief Write link layer address
\related LLSocketAddress
*/
std::ostream & operator<<(std::ostream & os, LLSocketAddress const & llAddr);
} }
///////////////////////////////hh.e//////////////////////////////////////// ///////////////////////////////hh.e////////////////////////////////////////
......
...@@ -83,7 +83,7 @@ prefix_ unsigned senf::UNSocketAddress::sockaddr_len() ...@@ -83,7 +83,7 @@ prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
return sizeof(addr_); return sizeof(addr_);
} }
prefix_ std::ostream & operator<<(std::ostream & os, prefix_ std::ostream & senf::operator<<(std::ostream & os,
senf::UNSocketAddress::UNSocketAddress const & addr) senf::UNSocketAddress::UNSocketAddress const & addr)
{ {
os << addr.path(); os << addr.path();
......
...@@ -48,12 +48,7 @@ prefix_ void senf::UNDatagramSocketProtocol::init_client() const ...@@ -48,12 +48,7 @@ prefix_ void senf::UNDatagramSocketProtocol::init_client() const
prefix_ void senf::UNDatagramSocketProtocol::init_client(UNSocketAddress const & address) const prefix_ void senf::UNDatagramSocketProtocol::init_client(UNSocketAddress const & address) const
{ {
init_client(); init_client();
try { clientHandle().bind(address);
clientHandle().bind(address);
} catch (SystemException & e) {
e << "; could not bind to address \"" << address.path() << "\"";
throw;
}
} }
///////////////////////////////cc.e//////////////////////////////////////// ///////////////////////////////cc.e////////////////////////////////////////
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment