Refactor TransportFactory to RAII

* Remove explicit Initialize and Terminate states,
    map them onto ctor/dtor
  * Remove no longer needed Shutdown state
  * Remove deprecated SetTransport()
This commit is contained in:
Dennis Klein
2017-05-23 16:13:43 +02:00
committed by Mohammad Al-Turany
parent 733794657c
commit 8bc21675af
11 changed files with 24 additions and 136 deletions

View File

@@ -7,14 +7,13 @@
********************************************************************************/
#include "FairMQTransportFactoryZMQ.h"
#include "../options/FairMQProgOptions.h"
#include <zmq.h>
using namespace std;
FairMQ::Transport FairMQTransportFactoryZMQ::fTransportType = FairMQ::Transport::ZMQ;
FairMQTransportFactoryZMQ::FairMQTransportFactoryZMQ(const string& id)
FairMQTransportFactoryZMQ::FairMQTransportFactoryZMQ(const string& id, const FairMQProgOptions* config)
: FairMQTransportFactory(id)
, fContext(zmq_ctx_new())
{
@@ -32,10 +31,7 @@ FairMQTransportFactoryZMQ::FairMQTransportFactoryZMQ(const string& id)
{
LOG(ERROR) << "failed configuring context, reason: " << zmq_strerror(errno);
}
}
void FairMQTransportFactoryZMQ::Initialize(const FairMQProgOptions* config)
{
int numIoThreads = 1;
if (config)
{
@@ -50,6 +46,7 @@ void FairMQTransportFactoryZMQ::Initialize(const FairMQProgOptions* config)
{
LOG(ERROR) << "failed configuring context, reason: " << zmq_strerror(errno);
}
}
FairMQMessagePtr FairMQTransportFactoryZMQ::CreateMessage() const
@@ -98,15 +95,7 @@ FairMQ::Transport FairMQTransportFactoryZMQ::GetType() const
return fTransportType;
}
void FairMQTransportFactoryZMQ::Shutdown()
{
if (zmq_ctx_shutdown(fContext) != 0)
{
LOG(ERROR) << "zeromq: failed shutting down context, reason: " << zmq_strerror(errno);
}
}
void FairMQTransportFactoryZMQ::Terminate()
FairMQTransportFactoryZMQ::~FairMQTransportFactoryZMQ()
{
if (fContext)
{
@@ -128,8 +117,3 @@ void FairMQTransportFactoryZMQ::Terminate()
LOG(ERROR) << "shmem: Terminate(): context now available for shutdown";
}
}
FairMQTransportFactoryZMQ::~FairMQTransportFactoryZMQ()
{
Terminate();
}

View File

@@ -22,15 +22,14 @@
#include "FairMQMessageZMQ.h"
#include "FairMQSocketZMQ.h"
#include "FairMQPollerZMQ.h"
#include <options/FairMQProgOptions.h>
class FairMQTransportFactoryZMQ : public FairMQTransportFactory
{
public:
FairMQTransportFactoryZMQ(const std::string& id = "");
FairMQTransportFactoryZMQ(const std::string& id = "", const FairMQProgOptions* config = nullptr);
~FairMQTransportFactoryZMQ() override;
void Initialize(const FairMQProgOptions* config) override;
FairMQMessagePtr CreateMessage() const override;
FairMQMessagePtr CreateMessage(const size_t size) const override;
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
@@ -43,10 +42,6 @@ class FairMQTransportFactoryZMQ : public FairMQTransportFactory
FairMQPollerPtr CreatePoller(const FairMQSocket& cmdSocket, const FairMQSocket& dataSocket) const override;
FairMQ::Transport GetType() const override;
void Shutdown() override;
void Terminate() override;
private:
static FairMQ::Transport fTransportType;
void* fContext;