aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/DabMultiplexer.cpp6
-rw-r--r--src/input/Edi.cpp4
-rw-r--r--src/input/Edi.h2
-rw-r--r--src/input/File.cpp3
-rw-r--r--src/input/File.h2
-rw-r--r--src/input/Prbs.cpp4
-rw-r--r--src/input/Prbs.h2
-rw-r--r--src/input/Udp.cpp8
-rw-r--r--src/input/Udp.h4
-rw-r--r--src/input/Zmq.cpp4
-rw-r--r--src/input/Zmq.h2
-rw-r--r--src/input/inputs.h6
12 files changed, 18 insertions, 29 deletions
diff --git a/src/DabMultiplexer.cpp b/src/DabMultiplexer.cpp
index 0d68ac2..498e9e0 100644
--- a/src/DabMultiplexer.cpp
+++ b/src/DabMultiplexer.cpp
@@ -308,10 +308,8 @@ void DabMultiplexer::prepare_data_inputs()
(*subchannel)->startAddress = (*(subchannel - 1))->startAddress +
(*(subchannel - 1))->getSizeCu();
}
- if ((*subchannel)->input->open((*subchannel)->inputUri) == -1) {
- perror((*subchannel)->inputUri.c_str());
- throw MuxInitException();
- }
+
+ (*subchannel)->input->open((*subchannel)->inputUri);
// TODO Check errors
int subch_bitrate = (*subchannel)->input->setBitrate( (*subchannel)->bitrate);
diff --git a/src/input/Edi.cpp b/src/input/Edi.cpp
index 765a355..58ad38b 100644
--- a/src/input/Edi.cpp
+++ b/src/input/Edi.cpp
@@ -57,7 +57,7 @@ Edi::~Edi() {
}
}
-int Edi::open(const std::string& name)
+void Edi::open(const std::string& name)
{
const std::regex re_udp("udp://:([0-9]+)");
const std::regex re_tcp("tcp://(.*):([0-9]+)");
@@ -91,8 +91,6 @@ int Edi::open(const std::string& name)
m_running = true;
m_thread = std::thread(&Edi::m_run, this);
-
- return 0;
}
int Edi::readFrame(uint8_t* buffer, size_t size)
diff --git a/src/input/Edi.h b/src/input/Edi.h
index 66ff682..cd1167c 100644
--- a/src/input/Edi.h
+++ b/src/input/Edi.h
@@ -52,7 +52,7 @@ class Edi : public InputBase {
Edi& operator=(const Edi&) = delete;
~Edi();
- virtual int open(const std::string& name);
+ virtual void open(const std::string& name);
virtual int readFrame(uint8_t* buffer, size_t size);
virtual int setBitrate(int bitrate);
virtual int close();
diff --git a/src/input/File.cpp b/src/input/File.cpp
index 20036ae..3c2ef4c 100644
--- a/src/input/File.cpp
+++ b/src/input/File.cpp
@@ -58,7 +58,7 @@ __attribute((packed))
;
-int FileBase::open(const std::string& name)
+void FileBase::open(const std::string& name)
{
int flags = O_RDONLY | O_BINARY;
if (m_nonblock) {
@@ -70,7 +70,6 @@ int FileBase::open(const std::string& name)
throw std::runtime_error("Could not open input file " + name + ": " +
strerror(errno));
}
- return 0;
}
int FileBase::setBitrate(int bitrate)
diff --git a/src/input/File.h b/src/input/File.h
index b574c39..79b78b5 100644
--- a/src/input/File.h
+++ b/src/input/File.h
@@ -36,7 +36,7 @@ namespace Inputs {
class FileBase : public InputBase {
public:
- virtual int open(const std::string& name);
+ virtual void open(const std::string& name);
virtual int readFrame(uint8_t* buffer, size_t size) = 0;
virtual int setBitrate(int bitrate);
virtual int close();
diff --git a/src/input/Prbs.cpp b/src/input/Prbs.cpp
index 7856a46..821f7b1 100644
--- a/src/input/Prbs.cpp
+++ b/src/input/Prbs.cpp
@@ -44,7 +44,7 @@ namespace Inputs {
// Preferred polynomial is G(x) = x^20 + x^17 + 1
const uint32_t PRBS_DEFAULT_POLY = (1 << 20) | (1 << 17) | (1 << 0);
-int Prbs::open(const string& name)
+void Prbs::open(const string& name)
{
if (name.substr(0, 7) != "prbs://") {
throw logic_error("Invalid PRBS name");
@@ -73,8 +73,6 @@ int Prbs::open(const string& name)
m_prbs.setup(polynomial);
}
rewind();
-
- return 0;
}
int Prbs::readFrame(uint8_t* buffer, size_t size)
diff --git a/src/input/Prbs.h b/src/input/Prbs.h
index 51b7756..76fd6fa 100644
--- a/src/input/Prbs.h
+++ b/src/input/Prbs.h
@@ -37,7 +37,7 @@ namespace Inputs {
class Prbs : public InputBase {
public:
- virtual int open(const std::string& name);
+ virtual void open(const std::string& name);
virtual int readFrame(uint8_t* buffer, size_t size);
virtual int setBitrate(int bitrate);
virtual int close();
diff --git a/src/input/Udp.cpp b/src/input/Udp.cpp
index 5d4f964..b527530 100644
--- a/src/input/Udp.cpp
+++ b/src/input/Udp.cpp
@@ -38,7 +38,7 @@ using namespace std;
namespace Inputs {
-int Udp::open(const std::string& name)
+void Udp::open(const std::string& name)
{
// Skip the udp:// part if it is present
const string endpoint = (name.substr(0, 6) == "udp://") ?
@@ -57,8 +57,6 @@ int Udp::open(const std::string& name)
m_name = name;
openUdpSocket(endpoint);
-
- return 0;
}
void Udp::openUdpSocket(const std::string& endpoint)
@@ -149,7 +147,7 @@ static uint16_t unpack2(const uint8_t *buf)
return (((uint16_t)buf[0]) << 8) | buf[1];
}
-int Sti_d_Rtp::open(const std::string& name)
+void Sti_d_Rtp::open(const std::string& name)
{
// Skip the rtp:// part if it is present
const string endpoint = (name.substr(0, 10) == "rtp://") ?
@@ -168,8 +166,6 @@ int Sti_d_Rtp::open(const std::string& name)
m_name = name;
openUdpSocket(endpoint);
-
- return 0;
}
void Sti_d_Rtp::receive_packet()
diff --git a/src/input/Udp.h b/src/input/Udp.h
index dd637c6..d74e92f 100644
--- a/src/input/Udp.h
+++ b/src/input/Udp.h
@@ -40,7 +40,7 @@ namespace Inputs {
*/
class Udp : public InputBase {
public:
- virtual int open(const std::string& name);
+ virtual void open(const std::string& name);
virtual int readFrame(uint8_t* buffer, size_t size);
virtual int setBitrate(int bitrate);
virtual int close();
@@ -67,7 +67,7 @@ class Sti_d_Rtp : public Udp {
using vec_u8 = std::vector<uint8_t>;
public:
- virtual int open(const std::string& name);
+ virtual void open(const std::string& name);
virtual int readFrame(uint8_t* buffer, size_t size);
private:
diff --git a/src/input/Zmq.cpp b/src/input/Zmq.cpp
index 2e35907..ce7f439 100644
--- a/src/input/Zmq.cpp
+++ b/src/input/Zmq.cpp
@@ -220,7 +220,7 @@ void ZmqBase::rebind()
}
}
-int ZmqBase::open(const std::string& inputUri)
+void ZmqBase::open(const std::string& inputUri)
{
m_inputUri = inputUri;
@@ -229,8 +229,6 @@ int ZmqBase::open(const std::string& inputUri)
// We want to appear in the statistics !
m_stats.registerAtServer();
-
- return 0;
}
int ZmqBase::close()
diff --git a/src/input/Zmq.h b/src/input/Zmq.h
index eb67fe5..bf2d5ae 100644
--- a/src/input/Zmq.h
+++ b/src/input/Zmq.h
@@ -180,7 +180,7 @@ class ZmqBase : public InputBase, public RemoteControllable {
INVALIDATE_KEY(m_curve_encoder_key);
}
- virtual int open(const std::string& inputUri);
+ virtual void open(const std::string& inputUri);
virtual int readFrame(uint8_t* buffer, size_t size);
virtual int setBitrate(int bitrate);
virtual int close();
diff --git a/src/input/inputs.h b/src/input/inputs.h
index bfb1fb6..b823998 100644
--- a/src/input/inputs.h
+++ b/src/input/inputs.h
@@ -2,7 +2,7 @@
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Her Majesty the Queen in
Right of Canada (Communications Research Center Canada)
- Copyright (C) 2016
+ Copyright (C) 2019
Matthias P. Braendli, matthias.braendli@mpb.li
http://www.opendigitalradio.org
@@ -38,7 +38,9 @@ namespace Inputs {
/* New input object base */
class InputBase {
public:
- virtual int open(const std::string& name) = 0;
+ /* Throws runtime_error or invalid_argument on failure */
+ virtual void open(const std::string& name) = 0;
+
virtual int readFrame(uint8_t* buffer, size_t size) = 0;
virtual int setBitrate(int bitrate) = 0;
virtual int close() = 0;