X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fnanomsg.cc;h=8061e2f8462c2b101f01e9ea71e48ca5724c71a1;hb=HEAD;hp=b66d966afb7cc4bd02ed5b42142b6f7cc736f9fe;hpb=33e13c4053138930f4b2f59349e441c76111059d;p=dcpomatic.git diff --git a/src/lib/nanomsg.cc b/src/lib/nanomsg.cc index b66d966af..8061e2f84 100644 --- a/src/lib/nanomsg.cc +++ b/src/lib/nanomsg.cc @@ -19,17 +19,17 @@ */ -#include "nanomsg.h" #include "dcpomatic_log.h" #include "exceptions.h" +#include "nanomsg.h" #include #include -#include #include +#include -using std::string; using std::runtime_error; +using std::string; using boost::optional; @@ -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) { @@ -99,6 +106,7 @@ Nanomsg::recv_and_parse (int flags) return; } + LOG_DISK_NC("nn_recv failed"); throw CommunicationFailedError (); }