helics
3.3.0
src
helics
apps
zmqBrokerServer.hpp
1
/*
2
Copyright (c) 2017-2022,
3
Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4
Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5
SPDX-License-Identifier: BSD-3-Clause
6
*/
7
8
#pragma once
9
10
#include "TypedBrokerServer.hpp"
11
12
#include <atomic>
13
#include <memory>
14
#include <mutex>
15
#include <string>
16
#include <thread>
17
#include <utility>
18
19
#ifdef HELICS_ENABLE_ZMQ_CORE
20
namespace
zmq {
21
class
socket_t;
22
class
message_t;
23
class
context_t;
24
}
// namespace zmq
25
26
#endif
27
28
namespace
helics
{
29
class
Broker;
30
namespace
apps {
31
33
class
zmqBrokerServer
:
public
TypedBrokerServer
{
34
public
:
35
zmqBrokerServer
() =
default
;
36
explicit
zmqBrokerServer
(std::string_view server_name): name_(server_name) {}
38
virtual
void
startServer
(
const
Json::Value* val,
39
const
std::shared_ptr<TypedBrokerServer>& ptr)
override
;
41
virtual
void
stopServer
()
override
;
42
43
virtual
void
processArgs
(std::string_view args)
override
;
44
void
enableZmqServer(
bool
enabled) { zmq_enabled_ = enabled; }
45
void
enableZmqSsServer(
bool
enabled) { zmqss_enabled_ = enabled; }
46
47
private
:
48
struct
zmqServerData {
49
portData ports;
50
};
51
52
void
mainLoop();
53
#ifdef HELICS_ENABLE_ZMQ_CORE
54
std::pair<std::unique_ptr<zmq::socket_t>,
int
> loadZMQsocket(zmq::context_t& ctx);
55
std::pair<std::unique_ptr<zmq::socket_t>,
int
> loadZMQSSsocket(zmq::context_t& ctx);
56
57
static
zmqServerData generateServerData(
int
portNumber,
int
skip);
58
59
std::string generateResponseToMessage(zmq::message_t& msg, portData& pdata,
CoreType
ctype);
60
#endif
61
std::thread mainLoopThread;
62
std::mutex threadGuard;
63
const
Json::Value* config_{
nullptr
};
64
const
std::string name_;
65
bool
zmq_enabled_{
false
};
66
bool
zmqss_enabled_{
false
};
67
std::atomic_bool exitAll{
false
};
68
int
mZmqPort{0};
69
std::string mZmqInterface{
"tcp://127.0.0.1"
};
70
};
71
}
// namespace apps
72
}
// namespace helics
helics::apps::zmqBrokerServer::stopServer
virtual void stopServer() override
Definition:
zmqBrokerServer.cpp:65
helics::apps::zmqBrokerServer::processArgs
virtual void processArgs(std::string_view args) override
Definition:
zmqBrokerServer.cpp:30
HELICS_CORE_TYPE_ZMQ
@ HELICS_CORE_TYPE_ZMQ
Definition:
helics_enums.h:26
helics::CoreType
CoreType
Definition:
CoreTypes.hpp:36
helics::CoreType::ZMQ
@ ZMQ
use the Zero MQ networking protocol
helics::apps::TypedBrokerServer::generateMessageResponse
static ActionMessage generateMessageResponse(const ActionMessage &rxcmd, portData &pdata, CoreType ctype)
Definition:
TypedBrokerServer.cpp:65
HELICS_CORE_TYPE_ZMQ_SS
@ HELICS_CORE_TYPE_ZMQ_SS
Definition:
helics_enums.h:43
helics::apps::zmqBrokerServer::startServer
virtual void startServer(const Json::Value *val, const std::shared_ptr< TypedBrokerServer > &ptr) override
Definition:
zmqBrokerServer.cpp:49
helics::CoreType::ZMQ_SS
@ ZMQ_SS
ZmqContextManager::getContextPointer
static std::shared_ptr< ZmqContextManager > getContextPointer(const std::string &contextName=std::string{})
Definition:
ZmqContextManager.cpp:37
helics::apps::zmqBrokerServer
Definition:
zmqBrokerServer.hpp:33
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition:
AsyncFedCallInfo.hpp:14
helics::apps::TypedBrokerServer
Definition:
TypedBrokerServer.hpp:24
Generated by
1.8.17