From 6a458c24f4ebf1d654e036fbb839790080a25eff Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 26 May 2021 23:06:42 +0200 Subject: [PATCH] Tidy up Nanomsg more correctly. --- src/lib/nanomsg.cc | 11 +++++++++-- src/lib/nanomsg.h | 2 ++ 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 _pending; std::string _current; }; -- 2.30.2