Skip to content
Snippets Groups Projects
Commit 47f6da2a authored by g0dil's avatar g0dil
Browse files

Utils: Implement helper macros to add file/line information to SystemException's

Socket: Fix NetDeviceController.test.cc (use 'lo' interface instead of 'wlan0'
Socket/Protocols/MPEGDVBbundle: Fix TransportPacket.test.cc (add 0 to constant to fix link error)
parent e0139e03
No related branches found
No related tags found
No related merge requests found
Showing
with 66 additions and 66 deletions
......@@ -69,14 +69,14 @@ BOOST_AUTO_UNIT_TEST(transportPacket_packet)
senf::TransportPacket p (senf::TransportPacket::create(data));
BOOST_CHECK_EQUAL( p->sync_byte(), TransportPacketType::SYNC_BYTE );
BOOST_CHECK( ! p->transport_error_indicator() );
BOOST_CHECK( p->pusi() );
BOOST_CHECK( ! p->transport_priority() );
BOOST_CHECK_EQUAL( p->pid(), 0x010fu );
BOOST_CHECK_EQUAL( p->transport_scrmbl_ctrl(), 0x0u );
BOOST_CHECK_EQUAL( p->adaptation_field_ctrl(), 0x1u );
BOOST_CHECK_EQUAL( p->continuity_counter(), 0x0eu );
BOOST_CHECK_EQUAL( p->sync_byte(), TransportPacketType::SYNC_BYTE+0 );
BOOST_CHECK( ! p->transport_error_indicator() );
BOOST_CHECK( p->pusi() );
BOOST_CHECK( ! p->transport_priority() );
BOOST_CHECK_EQUAL( p->pid(), 0x010fu );
BOOST_CHECK_EQUAL( p->transport_scrmbl_ctrl(), 0x0u );
BOOST_CHECK_EQUAL( p->adaptation_field_ctrl(), 0x1u );
BOOST_CHECK_EQUAL( p->continuity_counter(), 0x0eu );
}
///////////////////////////////cc.e////////////////////////////////////////
......
......@@ -37,7 +37,7 @@
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
#define CheckError(op,args) if (op args < 0) throw SystemException(# op, errno)
#define CheckError(op,args) if (op args < 0) SENF_THROW_SYSTEM_EXCEPTION(# op)
///////////////////////////////////////////////////////////////////////////
// senf::ClockService::Impl
......
......@@ -71,7 +71,7 @@ prefix_ void senf::ReadHelper<Handle>::process(Handle handle,
{
try {
if (event != senf::Scheduler::EV_READ)
throw SystemException(EPIPE);
throw SystemException(EPIPE SENF_EXC_DEBUGINFO);
std::string rcv;
handle.read(rcv, maxSize_ - data_.size());
data_.append(rcv);
......
......@@ -94,7 +94,7 @@ template <class Handle>
prefix_ void senf::ReadHelper<Handle>::throw_error()
const
{
if (errno_ != 0) throw SystemException(errno_);
if (errno_ != 0) throw SystemException(errno_ SENF_EXC_DEBUGINFO);
}
///////////////////////////////cti.e///////////////////////////////////////
......
......@@ -56,24 +56,24 @@ prefix_ senf::Scheduler::Scheduler()
eventTime_(0), eventEarly_(ClockService::milliseconds(11)), eventAdjust_(0)
{
if (epollFd_<0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
if (::pipe(sigpipe_) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
int flags (::fcntl(sigpipe_[1],F_GETFL));
if (flags < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
flags |= O_NONBLOCK;
if (::fcntl(sigpipe_[1], F_SETFL, flags) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
::epoll_event ev;
::memset(&ev, 0, sizeof(ev));
ev.events = EV_READ;
ev.data.fd = sigpipe_[0];
if (::epoll_ctl(epollFd_, EPOLL_CTL_ADD, sigpipe_[0], &ev) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ void senf::Scheduler::registerSignal(unsigned signal, SimpleCallback const & cb)
......@@ -133,7 +133,7 @@ prefix_ void senf::Scheduler::do_add(int fd, FdCallback const & cb, int eventMas
++ files_;
}
else
throw SystemException("::epoll_ctl()");
SENF_THROW_SYSTEM_EXCEPTION("::epoll_ctl()");
}
}
......@@ -163,7 +163,7 @@ prefix_ void senf::Scheduler::do_remove(int fd, int eventMask)
}
if (! file && epoll_ctl(epollFd_, action, fd, &ev) < 0)
throw SystemException("::epoll_ctl()");
SENF_THROW_SYSTEM_EXCEPTION("::epoll_ctl()");
if (file)
-- files_;
}
......@@ -179,7 +179,7 @@ prefix_ void senf::Scheduler::registerSigHandlers()
if (signal == SIGCHLD)
sa.sa_flags |= SA_NOCLDSTOP;
if (::sigaction(signal, &sa, 0) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
}
}
......@@ -252,7 +252,7 @@ prefix_ void senf::Scheduler::process()
if (events<0)
if (errno != EINTR)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
eventTime_ = ClockService::now();
......
......@@ -78,7 +78,7 @@ prefix_ void senf::WriteHelper<Handle>::process(Handle handle,
bool complete_ (false);
try {
if (event != senf::Scheduler::EV_WRITE)
throw SystemException(EPIPE);
throw SystemException(EPIPE SENF_EXC_DEBUGINFO);
offset_ = handle.write(std::make_pair(offset_,data_.end()));
if (offset_ == data_.end()) {
data_.erase();
......
......@@ -62,7 +62,7 @@ prefix_ void senf::WriteHelper<Handle>::throw_error()
const
{
if (errno_ != 0)
throw SystemException(errno_);
throw SystemException(errno_ SENF_EXC_DEBUGINFO);
}
......
......@@ -58,7 +58,7 @@ prefix_ int senf::ConnectedCommunicationPolicy::do_accept(FileHandle handle,
case EINTR:
break;
default:
throw SystemException("ConnectedCommunicationPolicy::do_accept failed.");
SENF_THROW_SYSTEM_EXCEPTION("ConnectedCommunicationPolicy::do_accept failed.");
}
} while (rv<0);
return rv;
......
......@@ -44,7 +44,7 @@
prefix_ void senf::FileBody::close()
{
if (!valid())
throw SystemException(EBADF);
throw SystemException(EBADF SENF_EXC_DEBUGINFO);
v_close();
fd_ = -1;
}
......@@ -71,7 +71,7 @@ prefix_ void senf::FileBody::destroyClose()
prefix_ void senf::FileBody::v_close()
{
if (::close(fd_) != 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ void senf::FileBody::v_terminate()
......@@ -95,17 +95,17 @@ prefix_ bool senf::FileBody::blocking()
const
{
int flags = ::fcntl(fd(),F_GETFL);
if (flags < 0) throw SystemException();
if (flags < 0) SENF_THROW_SYSTEM_EXCEPTION("");
return ! (flags & O_NONBLOCK);
}
prefix_ void senf::FileBody::blocking(bool status)
{
int flags = ::fcntl(fd(),F_GETFL);
if (flags < 0) throw SystemException();
if (flags < 0) SENF_THROW_SYSTEM_EXCEPTION("");
if (status) flags &= ~O_NONBLOCK;
else flags |= O_NONBLOCK;
if (::fcntl(fd(), F_SETFL, flags) < 0) throw SystemException();
if (::fcntl(fd(), F_SETFL, flags) < 0) SENF_THROW_SYSTEM_EXCEPTION("");
}
/* We don't take POLLIN/POLLOUT as argument to avoid having to include
......@@ -126,7 +126,7 @@ prefix_ bool senf::FileBody::pollCheck(int fd, bool incoming, bool block)
case EINTR:
break;
default:
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
} while (rv<0);
return rv>0;
......
......@@ -109,7 +109,7 @@ prefix_ void senf::NetdeviceController::openSocket()
{
sockfd_ = ::socket( PF_INET, SOCK_DGRAM, 0);
if ( sockfd_ < 0)
throw SystemException("Could not open socket for NetdeviceController.");
SENF_THROW_SYSTEM_EXCEPTION("Could not open socket for NetdeviceController.");
}
prefix_ void senf::NetdeviceController::ifrName(ifreq& ifr)
......@@ -118,7 +118,7 @@ prefix_ void senf::NetdeviceController::ifrName(ifreq& ifr)
::memset( &ifr, 0, sizeof(ifr));
ifr.ifr_ifindex = ifindex_;
if ( ::ioctl( sockfd_, SIOCGIFNAME, &ifr ) < 0 )
throw SystemException("NetdeviceController")
SENF_THROW_SYSTEM_EXCEPTION("NetdeviceController")
<< " could not discover the name of the interface with index " << ifindex_ << ".";
}
......@@ -126,7 +126,7 @@ prefix_ void senf::NetdeviceController::doIoctl(ifreq& ifr, int request)
const
{
if ( ::ioctl( sockfd_, request, &ifr ) < 0 )
throw SystemException("NetdeviceController::doIoctl failed.");
SENF_THROW_SYSTEM_EXCEPTION("NetdeviceController::doIoctl failed.");
}
///////////////////////////////cc.e////////////////////////////////////////
......
......@@ -37,7 +37,7 @@
BOOST_AUTO_UNIT_TEST(NetdeviceController) {
senf::NetdeviceController ctrl ("wlan0");
senf::NetdeviceController ctrl ("lo");
std::cout << "name: " << ctrl.interfaceName() << "\n";
senf::MACAddress oldAddr(ctrl.hardwareAddress());
......
......@@ -43,7 +43,7 @@ prefix_ std::pair<bool,unsigned> senf::BSDSocketProtocol::linger()
socklen_t len = sizeof(ling);
::memset(&ling,sizeof(ling),0);
if (::getsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
return std::make_pair(ling.l_onoff, ling.l_linger);
}
......@@ -54,7 +54,7 @@ prefix_ void senf::BSDSocketProtocol::linger(bool enable, unsigned timeout)
ling.l_onoff = enable;
ling.l_linger = timeout;
if (::setsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,sizeof(ling)) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ boost::uint8_t senf::BSDSocketProtocol::priority()
......@@ -63,7 +63,7 @@ prefix_ boost::uint8_t senf::BSDSocketProtocol::priority()
int value;
socklen_t len (sizeof(value));
if (::getsockopt(fd(),SOL_SOCKET,SO_PRIORITY,&value,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
return value;
}
......@@ -72,7 +72,7 @@ prefix_ void senf::BSDSocketProtocol::priority(boost::uint8_t value)
{
int ivalue (value);
if (::setsockopt(fd(),SOL_SOCKET,SO_PRIORITY,&ivalue,sizeof(ivalue)) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ unsigned senf::BSDSocketProtocol::rcvbuf()
......@@ -81,7 +81,7 @@ prefix_ unsigned senf::BSDSocketProtocol::rcvbuf()
unsigned size;
socklen_t len (sizeof(size));
if (::getsockopt(fd(),SOL_SOCKET,SO_RCVBUF,&size,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
// Linux doubles the bufer size on setting the RCVBUF to cater for internal
// headers. We fix this up here .. (see lkml FAQ)
return size/2;
......@@ -91,7 +91,7 @@ prefix_ void senf::BSDSocketProtocol::rcvbuf(unsigned size)
const
{
if (::setsockopt(fd(),SOL_SOCKET,SO_RCVBUF,&size,sizeof(size)) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ unsigned senf::BSDSocketProtocol::sndbuf()
......@@ -100,7 +100,7 @@ prefix_ unsigned senf::BSDSocketProtocol::sndbuf()
unsigned size;
socklen_t len (sizeof(size));
if (::getsockopt(fd(),SOL_SOCKET,SO_SNDBUF,&size,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
// Linux doubles the bufer size on setting the SNDBUF to cater for internal
// headers. We fix this up here .. (see lkml FAQ)
return size/2;
......@@ -110,7 +110,7 @@ prefix_ void senf::BSDSocketProtocol::sndbuf(unsigned size)
const
{
if (::setsockopt(fd(),SOL_SOCKET,SO_SNDBUF,&size,sizeof(size)) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
///////////////////////////////////////////////////////////////////////////
......@@ -121,7 +121,7 @@ prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr()
int value;
socklen_t len (sizeof(value));
if (::getsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&value,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
return value;
}
......@@ -130,7 +130,7 @@ prefix_ void senf::AddressableBSDSocketProtocol::reuseaddr(bool value)
{
int ivalue (value);
if (::setsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&ivalue,sizeof(ivalue)) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
/////////////////////////////cc.e////////////////////////////////////////
......
......@@ -47,7 +47,7 @@ prefix_ void senf::DVBDemuxSectionSocketProtocol::init_client(unsigned short ada
"/dev/dvb/adapter%d/demux%d") % adapter % device);
int f = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK);
if (f < 0){
throw SystemException("Could not open demux device of DVB adapter ") << devDemux << ".";
SENF_THROW_SYSTEM_EXCEPTION("Could not open demux device of DVB adapter ") << devDemux << ".";
}
fd(f);
}
......@@ -62,7 +62,7 @@ prefix_ void senf::DVBDemuxSectionSocketProtocol::setSectionFilter(struct dmx_sc
const
{
if (::ioctl(fd(), DMX_SET_FILTER, filter) < 0)
throw SystemException("Could not set section filter of DVB adapter.");
SENF_THROW_SYSTEM_EXCEPTION("Could not set section filter of DVB adapter.");
}
// ----------------------------------------------------------------
......@@ -74,7 +74,7 @@ prefix_ void senf::DVBDemuxPESSocketProtocol::init_client(unsigned short adapter
"/dev/dvb/adapter%d/demux%d") % adapter % device);
int f = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK);
if (f < 0)
throw SystemException( "Could not open demux device of DVB adapter ") << devDemux << ".";
SENF_THROW_SYSTEM_EXCEPTION("Could not open demux device of DVB adapter ") << devDemux << ".";
fd(f);
}
......@@ -88,7 +88,7 @@ prefix_ void senf::DVBDemuxPESSocketProtocol::setPESFilter(struct dmx_pes_filter
const
{
if (::ioctl(fd(), DMX_SET_PES_FILTER, filter) < 0)
throw SystemException("Could not set PES filter of DVB adapter.");
SENF_THROW_SYSTEM_EXCEPTION("Could not set PES filter of DVB adapter.");
}
// ----------------------------------------------------------------
......@@ -100,7 +100,7 @@ prefix_ void senf::DVBDvrSocketProtocol::init_client(unsigned short adapter, uns
"/dev/dvb/adapter%d/dvr%d") % adapter % device);
int f = open(devDvr.c_str(), O_RDONLY | O_NONBLOCK);
if (f < 0)
throw SystemException( "Could not open dvr device of DVB adapter ") << devDvr << ".";
SENF_THROW_SYSTEM_EXCEPTION("Could not open dvr device of DVB adapter ") << devDvr << ".";
fd(f);
}
......
......@@ -42,7 +42,7 @@ prefix_ void senf::DVBDemuxSocketProtocol::setBufferSize(unsigned long size)
const
{
if (::ioctl(fd(), DMX_SET_BUFFER_SIZE, size) < 0)
throw SystemException()
SENF_THROW_SYSTEM_EXCEPTION("")
<< "Could not set the size of the buffer on DVB adapter. requested size: "
<< size << ".";
}
......@@ -51,14 +51,14 @@ prefix_ void senf::DVBDemuxSocketProtocol::startFiltering()
const
{
if (::ioctl(fd(), DMX_START) < 0)
throw SystemException("Could not start filtering operation on DVB adapter.");
SENF_THROW_SYSTEM_EXCEPTION("Could not start filtering operation on DVB adapter.");
}
prefix_ void senf::DVBDemuxSocketProtocol::stopFiltering()
const
{
if (::ioctl(fd(), DMX_STOP) < 0)
throw SystemException("Could not stop filtering operation on DVB adapter.");
SENF_THROW_SYSTEM_EXCEPTION("Could not stop filtering operation on DVB adapter.");
}
prefix_ bool senf::DVBDemuxSocketProtocol::eof()
......
......@@ -47,7 +47,7 @@ prefix_ void senf::DVBFrontendSocketProtocol::init_client(uint8_t adapter, boost
"/dev/dvb/adapter%d/frontend%d") % adapter % device);
int f = open(devFrontend.c_str(), O_RDONLY | O_NONBLOCK);
if (f < 0)
throw SystemException() << "Could not open frontend device of DVB adapter " << devFrontend << ".";
SENF_THROW_SYSTEM_EXCEPTION("") << "Could not open frontend device of DVB adapter " << devFrontend << ".";
fd(f);
}
......@@ -68,7 +68,7 @@ prefix_ void senf::DVBFrontendSocketProtocol::signalStrength(int16_t *strength)
const
{
if (::ioctl(fd(), FE_READ_SIGNAL_STRENGTH, strength) < 0)
throw SystemException( "Could not get signal strength of DVB adapter.");
SENF_THROW_SYSTEM_EXCEPTION("Could not get signal strength of DVB adapter.");
}
///////////////////////////////cc.e////////////////////////////////////////
......
......@@ -40,7 +40,7 @@ prefix_ struct timeval senf::DatagramSocketProtocol::timestamp()
{
struct timeval tv;
if (::ioctl(fd(), SIOCGSTAMP, &tv) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
return tv;
}
......
......@@ -41,7 +41,7 @@ prefix_ void senf::GenericAddressingPolicy_Base::do_local(FileHandle handle,
unsigned len)
{
if (::getsockname(handle.fd(),addr,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ void senf::GenericAddressingPolicy_Base::do_peer(FileHandle handle,
......@@ -49,7 +49,7 @@ prefix_ void senf::GenericAddressingPolicy_Base::do_peer(FileHandle handle,
unsigned len)
{
if (::getpeername(handle.fd(),addr,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ void senf::GenericAddressingPolicy_Base::do_bind(FileHandle handle,
......@@ -57,7 +57,7 @@ prefix_ void senf::GenericAddressingPolicy_Base::do_bind(FileHandle handle,
unsigned len)
{
if (::bind(handle.fd(),addr,len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
prefix_ void senf::GenericAddressingPolicy_Base::do_connect(FileHandle handle,
......@@ -72,15 +72,15 @@ prefix_ void senf::GenericAddressingPolicy_Base::do_connect(FileHandle handle,
int err = 0;
socklen_t len = sizeof(err);
if (::getsockopt(handle.fd(),SOL_SOCKET,SO_ERROR,&err,&len) < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
if (err != 0)
throw SystemException(err);
throw SystemException(err SENF_EXC_DEBUGINFO);
return;
}
case EINTR:
break;
default:
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
}
else
return;
......
......@@ -48,7 +48,7 @@ senf::ConnectedRawV4SocketProtocol::init_client(int const & protocol)
{
int sock = ::socket(PF_INET, SOCK_RAW, protocol);
if (sock < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
fd(sock);
}
......@@ -74,7 +74,7 @@ prefix_ void senf::ConnectedRawV6SocketProtocol::init_client(int const & protoco
{
int sock = ::socket(PF_INET6,SOCK_RAW,protocol);
if (sock < 0)
throw SystemException();
SENF_THROW_SYSTEM_EXCEPTION("");
fd(sock);
}
......
......@@ -46,7 +46,7 @@ prefix_ void senf::ConnectedUDPv4SocketProtocol::init_client()
{
int sock = ::socket(PF_INET,SOCK_DGRAM,0);
if (sock < 0)
throw SystemException("::socket(PF_INET,SOCK_DGRAM,0) failed.");
SENF_THROW_SYSTEM_EXCEPTION("::socket(PF_INET,SOCK_DGRAM,0) failed.");
fd(sock);
}
......@@ -66,7 +66,7 @@ prefix_ void senf::ConnectedUDPv6SocketProtocol::init_client()
{
int sock = ::socket(PF_INET6,SOCK_DGRAM,0);
if (sock < 0)
throw SystemException("::socket(PF_INET6,SOCK_DGRAM,0) failed.");
SENF_THROW_SYSTEM_EXCEPTION("::socket(PF_INET6,SOCK_DGRAM,0) failed.");
fd(sock);
}
......
......@@ -43,7 +43,7 @@ prefix_ void senf::INetSocketProtocol::bindInterface(std::string const & iface)
const
{
if (::setsockopt(fd(), SOL_SOCKET, SO_BINDTODEVICE, iface.c_str(), iface.size()) < 0)
throw SystemException("::setsockopt(SO_BINDTODEVICE)");
SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(SO_BINDTODEVICE)");
}
prefix_ std::string senf::INetSocketProtocol::bindInterface()
......@@ -52,7 +52,7 @@ prefix_ std::string senf::INetSocketProtocol::bindInterface()
socklen_t size (sizeof(iface));
::memset(iface, 0, sizeof(iface));
if (::getsockopt(fd(), SOL_SOCKET, SO_BINDTODEVICE, iface, &size) < 0)
throw SystemException("::getsockopt(SO_BINDTODEVICE)");
SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(SO_BINDTODEVICE)");
iface[size < IFNAMSIZ ? size : IFNAMSIZ-1] = 0;
return iface;
}
......
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