> > Introduces an exception hierarchy up to a ReadError class, which is > thrown from read_all(). > > Signed-off-by: Lukáš Hrázký <lhrazky@xxxxxxxxxx> > --- > src/Makefile.am | 2 ++ > src/error.cpp | 22 ++++++++++++++++++++++ > src/error.hpp | 37 +++++++++++++++++++++++++++++++++++++ > src/spice-streaming-agent.cpp | 2 +- > src/stream-port.cpp | 4 ++-- > 5 files changed, 64 insertions(+), 3 deletions(-) > create mode 100644 src/error.cpp > create mode 100644 src/error.hpp > > diff --git a/src/Makefile.am b/src/Makefile.am > index 604c1e5..18ed22c 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -52,6 +52,8 @@ spice_streaming_agent_SOURCES = \ > spice-streaming-agent.cpp \ > concrete-agent.cpp \ > concrete-agent.hpp \ > + error.cpp \ > + error.hpp \ > mjpeg-fallback.cpp \ > mjpeg-fallback.hpp \ > jpeg.cpp \ > diff --git a/src/error.cpp b/src/error.cpp > new file mode 100644 > index 0000000..7d38033 > --- /dev/null > +++ b/src/error.cpp > @@ -0,0 +1,22 @@ > +/* The errors module. > + * > + * \copyright > + * Copyright 2018 Red Hat Inc. All rights reserved. > + */ > + > +#include "error.hpp" > + > +#include <string.h> > +#include <syslog.h> > + You can remove syslog.h include from this patch > + > +namespace spice { > +namespace streaming_agent { > + > +Error::Error(const std::string &message) : std::runtime_error(message) {} > + > +IOError::IOError(const std::string &msg, int sys_errno) : > + Error(msg + ": " + std::to_string(sys_errno) + " - " + > strerror(sys_errno)) > +{} > + > +}} // namespace spice::streaming_agent > diff --git a/src/error.hpp b/src/error.hpp > new file mode 100644 > index 0000000..54ae527 > --- /dev/null > +++ b/src/error.hpp > @@ -0,0 +1,37 @@ > +/* The errors module. > + * > + * \copyright > + * Copyright 2018 Red Hat Inc. All rights reserved. > + */ > + > +#ifndef SPICE_STREAMING_AGENT_ERROR_HPP > +#define SPICE_STREAMING_AGENT_ERROR_HPP > + > +#include <stdexcept> > +#include <string> > + > + > +namespace spice { > +namespace streaming_agent { > + > +class Error : public std::runtime_error > +{ > +public: > + Error(const std::string &message); > +}; > + > +class IOError : public Error > +{ > +public: > + IOError(const std::string &msg, int sys_errno); > +}; > + > +class ReadError : public IOError > +{ > +public: > + using IOError::IOError; > +}; > + > +}} // namespace spice::streaming_agent > + > +#endif // SPICE_STREAMING_AGENT_ERROR_HPP > diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp > index 7b166d3..2c0340d 100644 > --- a/src/spice-streaming-agent.cpp > +++ b/src/spice-streaming-agent.cpp > @@ -535,7 +535,7 @@ int main(int argc, char* argv[]) > try { > do_capture(streamport, f_log); > } > - catch (std::runtime_error &err) { > + catch (std::exception &err) { > syslog(LOG_ERR, "%s\n", err.what()); > ret = EXIT_FAILURE; > } > diff --git a/src/stream-port.cpp b/src/stream-port.cpp > index 3699d92..f256698 100644 > --- a/src/stream-port.cpp > +++ b/src/stream-port.cpp > @@ -5,6 +5,7 @@ > */ > > #include "stream-port.hpp" > +#include "error.hpp" > > #include <errno.h> > #include <string.h> > @@ -25,8 +26,7 @@ void read_all(int fd, void *msg, size_t len) > if (errno == EINTR) { > continue; > } > - throw std::runtime_error("Reading message from device failed: " > + > - std::string(strerror(errno))); > + throw ReadError("Reading message from device failed", errno); > } > > len -= n; Otherwise, Ackded-by: Frediano Ziglio <fziglio@xxxxxxxxxx> Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel