From b18391330e316636796a9b78eff5c47eac6f04fa Mon Sep 17 00:00:00 2001 From: Samuel Debionne Date: Tue, 12 Feb 2019 16:23:55 +0100 Subject: [PATCH 1/2] Add slsReceiverUsers(int tcpip_port_no) overload Use std::unique_ptr<> instead of raw pointers --- slsReceiverSoftware/include/slsReceiver.h | 18 ++++++++++-------- slsReceiverSoftware/include/slsReceiverUsers.h | 18 +++++++++++------- slsReceiverSoftware/src/slsReceiver.cpp | 11 +++++++---- slsReceiverSoftware/src/slsReceiverUsers.cpp | 10 +++++----- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/slsReceiverSoftware/include/slsReceiver.h b/slsReceiverSoftware/include/slsReceiver.h index 9e9ca9780..7c5647d39 100644 --- a/slsReceiverSoftware/include/slsReceiver.h +++ b/slsReceiverSoftware/include/slsReceiver.h @@ -4,10 +4,9 @@ * @short creates the UDP and TCP class objects ***********************************************/ +#include - -class slsReceiverTCPIPInterface; - +#include "slsReceiverTCPIPInterface.h" #include "sls_detector_defs.h" @@ -27,11 +26,15 @@ class slsReceiver : private virtual slsDetectorDefs { * @param argv from command line */ slsReceiver(int argc, char *argv[]); - + /** - * Destructor + * Constructor + * Starts up a Receiver server. Reads configuration file, options, and + * assembles a Receiver using TCP and UDP detector interfaces + * throws an exception in case of failure + * @param tcpip_port_no TCP/IP port number */ - ~slsReceiver(); + slsReceiver(int tcpip_port_no = 1954); /** * starts listening on the TCP port for client comminication @@ -95,6 +98,5 @@ class slsReceiver : private virtual slsDetectorDefs { private: - slsReceiverTCPIPInterface* tcpipInterface; + std::unique_ptr tcpipInterface; }; - diff --git a/slsReceiverSoftware/include/slsReceiverUsers.h b/slsReceiverSoftware/include/slsReceiverUsers.h index 8b17796d2..39456bd94 100644 --- a/slsReceiverSoftware/include/slsReceiverUsers.h +++ b/slsReceiverSoftware/include/slsReceiverUsers.h @@ -3,8 +3,9 @@ #include #include +#include -class slsReceiver; +#include "slsReceiver.h" /** @short Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data @@ -23,10 +24,14 @@ public: * @param success socket creation was successfull */ slsReceiverUsers(int argc, char *argv[], int &success); - - - /** Destructor */ - ~slsReceiverUsers(); + + /** + * Constructor + * reads config file, creates socket, assigns function table + * @param tcpip_port_no TCP/IP port + * @throws + */ + slsReceiverUsers(int tcpip_port_no = 1954); /** * starts listening on the TCP port for client comminication @@ -83,6 +88,5 @@ public: char* datapointer, uint32_t &revDatasize, void*),void *arg); //receiver object - slsReceiver* receiver; + std::unique_ptr receiver; }; - diff --git a/slsReceiverSoftware/src/slsReceiver.cpp b/slsReceiverSoftware/src/slsReceiver.cpp index 4b0bb688e..c448f3710 100644 --- a/slsReceiverSoftware/src/slsReceiver.cpp +++ b/slsReceiverSoftware/src/slsReceiver.cpp @@ -78,14 +78,17 @@ slsReceiver::slsReceiver(int argc, char *argv[]): } // might throw an exception - tcpipInterface = new slsReceiverTCPIPInterface(tcpip_port_no); + //tcpipInterface = std::make_unique(tcpip_port_no); + tcpipInterface = std::unique_ptr(new slsReceiverTCPIPInterface(tcpip_port_no)); } -slsReceiver::~slsReceiver() { - if(tcpipInterface) - delete tcpipInterface; +slsReceiver::slsReceiver(int tcpip_port_no) +{ + // might throw an exception + //tcpipInterface = std::make_unique(tcpip_port_no); + tcpipInterface = std::unique_ptr(new slsReceiverTCPIPInterface(tcpip_port_no)); } diff --git a/slsReceiverSoftware/src/slsReceiverUsers.cpp b/slsReceiverSoftware/src/slsReceiverUsers.cpp index f2c2c359d..0aa97fb23 100644 --- a/slsReceiverSoftware/src/slsReceiverUsers.cpp +++ b/slsReceiverSoftware/src/slsReceiverUsers.cpp @@ -1,19 +1,19 @@ #include "slsReceiverUsers.h" -#include "slsReceiver.h" slsReceiverUsers::slsReceiverUsers(int argc, char *argv[], int &success) { // catch the exception here to limit it to within the library (for current version) try { - slsReceiver* r = new slsReceiver(argc, argv); - receiver = r; + //receiver = std::make_unique(argc, argv); + receiver = std::unique_ptr(new slsReceiver(argc, argv)); success = slsDetectorDefs::OK; } catch (...) { success = slsDetectorDefs::FAIL; } } -slsReceiverUsers::~slsReceiverUsers() { - delete receiver; +slsReceiverUsers::slsReceiverUsers(int tcpip_port_no) { + //receiver = std::make_unique(tcpip_port_no); + receiver = std::unique_ptr(new slsReceiver(tcpip_port_no)); } int slsReceiverUsers::start() { From f125b94a7dc9fce2282d21c0189fd6e4535be745 Mon Sep 17 00:00:00 2001 From: Samuel Debionne Date: Wed, 13 Feb 2019 08:59:26 +0100 Subject: [PATCH 2/2] Use sls::make_unique<> --- slsReceiverSoftware/src/slsReceiver.cpp | 8 +++----- slsReceiverSoftware/src/slsReceiverUsers.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/slsReceiverSoftware/src/slsReceiver.cpp b/slsReceiverSoftware/src/slsReceiver.cpp index c448f3710..112401dc6 100644 --- a/slsReceiverSoftware/src/slsReceiver.cpp +++ b/slsReceiverSoftware/src/slsReceiver.cpp @@ -11,6 +11,7 @@ #include #include +#include "container_utils.h" // For sls::make_unique<> #include "slsReceiver.h" #include "slsReceiverTCPIPInterface.h" @@ -78,17 +79,14 @@ slsReceiver::slsReceiver(int argc, char *argv[]): } // might throw an exception - //tcpipInterface = std::make_unique(tcpip_port_no); - tcpipInterface = std::unique_ptr(new slsReceiverTCPIPInterface(tcpip_port_no)); - + tcpipInterface = sls::make_unique(tcpip_port_no); } slsReceiver::slsReceiver(int tcpip_port_no) { // might throw an exception - //tcpipInterface = std::make_unique(tcpip_port_no); - tcpipInterface = std::unique_ptr(new slsReceiverTCPIPInterface(tcpip_port_no)); + tcpipInterface = sls::make_unique(tcpip_port_no); } diff --git a/slsReceiverSoftware/src/slsReceiverUsers.cpp b/slsReceiverSoftware/src/slsReceiverUsers.cpp index 0aa97fb23..572f5fe22 100644 --- a/slsReceiverSoftware/src/slsReceiverUsers.cpp +++ b/slsReceiverSoftware/src/slsReceiverUsers.cpp @@ -1,10 +1,11 @@ +#include "container_utils.h" // For sls::make_unique<> + #include "slsReceiverUsers.h" slsReceiverUsers::slsReceiverUsers(int argc, char *argv[], int &success) { // catch the exception here to limit it to within the library (for current version) try { - //receiver = std::make_unique(argc, argv); - receiver = std::unique_ptr(new slsReceiver(argc, argv)); + receiver = sls::make_unique(argc, argv); success = slsDetectorDefs::OK; } catch (...) { success = slsDetectorDefs::FAIL; @@ -12,8 +13,7 @@ slsReceiverUsers::slsReceiverUsers(int argc, char *argv[], int &success) { } slsReceiverUsers::slsReceiverUsers(int tcpip_port_no) { - //receiver = std::make_unique(tcpip_port_no); - receiver = std::unique_ptr(new slsReceiver(tcpip_port_no)); + receiver = sls::make_unique(tcpip_port_no); } int slsReceiverUsers::start() {