summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-05-26 23:06:42 +0200
committerCarl Hetherington <cth@carlh.net>2021-05-26 23:06:42 +0200
commit6a458c24f4ebf1d654e036fbb839790080a25eff (patch)
tree337b68a3f2450cd60c3e647c61410265e7867558 /src/lib
parent0ede9dccbebd6a95b18cb747d73c1dcefd859373 (diff)
Tidy up Nanomsg more correctly.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/nanomsg.cc11
-rw-r--r--src/lib/nanomsg.h2
2 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/nanomsg.cc b/src/lib/nanomsg.cc
index 1180f6936..61e6c08ce 100644
--- a/src/lib/nanomsg.cc
+++ b/src/lib/nanomsg.cc
@@ -43,17 +43,24 @@ Nanomsg::Nanomsg (bool server)
throw runtime_error("Could not set up nanomsg socket");
}
if (server) {
- if (nn_bind(_socket, NANOMSG_URL) < 0) {
+ if ((_endpoint = nn_bind(_socket, NANOMSG_URL)) < 0) {
throw runtime_error(String::compose("Could not bind nanomsg socket (%1)", errno));
}
} else {
- if (nn_connect(_socket, NANOMSG_URL) < 0) {
+ if ((_endpoint = nn_connect(_socket, NANOMSG_URL)) < 0) {
throw runtime_error(String::compose("Could not connect nanomsg socket (%1)", errno));
}
}
}
+Nanomsg::~Nanomsg ()
+{
+ nn_shutdown (_socket, _endpoint);
+ nn_close (_socket);
+}
+
+
bool
Nanomsg::send (string s, int timeout)
{
diff --git a/src/lib/nanomsg.h b/src/lib/nanomsg.h
index 64ce4ea06..8d89d6d99 100644
--- a/src/lib/nanomsg.h
+++ b/src/lib/nanomsg.h
@@ -28,6 +28,7 @@ class Nanomsg
{
public:
explicit Nanomsg (bool server);
+ ~Nanomsg ();
Nanomsg (Nanomsg const&) = delete;
Nanomsg& operator= (Nanomsg const&) = delete;
@@ -49,6 +50,7 @@ private:
void recv_and_parse (int flags);
int _socket;
+ int _endpoint;
std::list<std::string> _pending;
std::string _current;
};