21 #ifndef BM_BM_SIM_TRANSPORT_H_
22 #define BM_BM_SIM_TRANSPORT_H_
24 #include <bm/config.h>
27 #include <initializer_list>
32 class TransportIface {
40 virtual ~TransportIface() { }
48 int send(
const std::string &msg)
const {
52 int send(
const char *msg,
int len)
const {
53 return send_(msg, len);
56 int send_msgs(
const std::initializer_list<std::string> &msgs)
const {
57 return send_msgs_(msgs);
60 int send_msgs(
const std::initializer_list<MsgBuf> &msgs)
const {
61 return send_msgs_(msgs);
65 static std::unique_ptr<TransportIface> make_nanomsg(
const std::string &addr);
67 static std::unique_ptr<TransportIface> make_dummy();
68 static std::unique_ptr<TransportIface> make_stdout();
71 virtual int open_() = 0;
73 virtual int send_(
const std::string &msg)
const = 0;
74 virtual int send_(
const char *msg,
int len)
const = 0;
76 virtual int send_msgs_(
77 const std::initializer_list<std::string> &msgs)
const = 0;
78 virtual int send_msgs_(
const std::initializer_list<MsgBuf> &msgs)
const = 0;
85 #endif // BM_BM_SIM_TRANSPORT_H_