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,
typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *)
{
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
template <class Address>
......@@ -59,7 +64,12 @@ prefix_ void senf::GenericAddressingPolicy<Address>::
connect(SocketHandle<SPolicy> handle, Address const & addr,
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
template <class Address>
......@@ -74,14 +84,24 @@ prefix_ void senf::GenericAddressingPolicy<Address>::local(FileHandle handle,
Address & addr)
{
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>
prefix_ void senf::GenericAddressingPolicy<Address>::bind(FileHandle handle,
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///////////////////////////////////////
......
......@@ -114,6 +114,13 @@ prefix_ unsigned senf::LLSocketAddress::sockaddr_len()
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///////////////////////////////////////
#undef prefix_
......
......@@ -155,6 +155,11 @@ namespace senf {
};
/// @}
/** \brief Write link layer address
\related LLSocketAddress
*/
std::ostream & operator<<(std::ostream & os, LLSocketAddress const & llAddr);
}
///////////////////////////////hh.e////////////////////////////////////////
......
......@@ -83,7 +83,7 @@ prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
return sizeof(addr_);
}
prefix_ std::ostream & operator<<(std::ostream & os,
prefix_ std::ostream & senf::operator<<(std::ostream & os,
senf::UNSocketAddress::UNSocketAddress const & addr)
{
os << addr.path();
......
......@@ -48,12 +48,7 @@ prefix_ void senf::UNDatagramSocketProtocol::init_client() const
prefix_ void senf::UNDatagramSocketProtocol::init_client(UNSocketAddress const & address) const
{
init_client();
try {
clientHandle().bind(address);
} catch (SystemException & e) {
e << "; could not bind to address \"" << address.path() << "\"";
throw;
}
clientHandle().bind(address);
}
///////////////////////////////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