diff options
-rw-r--r-- | src/client/Client.hxx | 2 | ||||
-rw-r--r-- | src/client/ClientEvent.cxx | 4 | ||||
-rw-r--r-- | src/event/BufferedSocket.cxx | 11 | ||||
-rw-r--r-- | src/event/BufferedSocket.hxx | 5 | ||||
-rw-r--r-- | src/event/FullyBufferedSocket.cxx | 10 | ||||
-rw-r--r-- | src/output/plugins/httpd/HttpdClient.cxx | 4 | ||||
-rw-r--r-- | src/output/plugins/httpd/HttpdClient.hxx | 2 |
7 files changed, 13 insertions, 25 deletions
diff --git a/src/client/Client.hxx b/src/client/Client.hxx index 4de5ad8c6..f46a38155 100644 --- a/src/client/Client.hxx +++ b/src/client/Client.hxx @@ -200,7 +200,7 @@ public: private: /* virtual methods from class BufferedSocket */ virtual InputResult OnSocketInput(void *data, size_t length) override; - virtual void OnSocketError(Error &&error) override; + void OnSocketError(std::exception_ptr ep) override; virtual void OnSocketClosed() override; /* virtual methods from class TimeoutMonitor */ diff --git a/src/client/ClientEvent.cxx b/src/client/ClientEvent.cxx index 064b542b9..2d90b90cf 100644 --- a/src/client/ClientEvent.cxx +++ b/src/client/ClientEvent.cxx @@ -22,9 +22,9 @@ #include "Log.hxx" void -Client::OnSocketError(Error &&error) +Client::OnSocketError(std::exception_ptr ep) { - FormatError(error, "error on client %d", num); + FormatError(ep, "error on client %d", num); SetExpired(); } diff --git a/src/event/BufferedSocket.cxx b/src/event/BufferedSocket.cxx index f4a5ef287..dbdcf7f1d 100644 --- a/src/event/BufferedSocket.cxx +++ b/src/event/BufferedSocket.cxx @@ -20,8 +20,6 @@ #include "config.h" #include "BufferedSocket.hxx" #include "net/SocketError.hxx" -#include "util/Error.hxx" -#include "util/Domain.hxx" #include "Compiler.h" #include <algorithm> @@ -45,7 +43,7 @@ BufferedSocket::DirectRead(void *data, size_t length) if (IsSocketErrorClosed(code)) OnSocketClosed(); else - OnSocketError(NewSocketError(code)); + OnSocketError(std::make_exception_ptr(MakeSocketError(code, "Failed to receive from socket"))); return -1; } @@ -80,12 +78,7 @@ BufferedSocket::ResumeInput() switch (result) { case InputResult::MORE: if (input.IsFull()) { - // TODO - static constexpr Domain buffered_socket_domain("buffered_socket"); - Error error; - error.Set(buffered_socket_domain, - "Input buffer is full"); - OnSocketError(std::move(error)); + OnSocketError(std::make_exception_ptr(std::runtime_error("Input buffer is full"))); return false; } diff --git a/src/event/BufferedSocket.hxx b/src/event/BufferedSocket.hxx index 8700c7e42..6a2992057 100644 --- a/src/event/BufferedSocket.hxx +++ b/src/event/BufferedSocket.hxx @@ -24,10 +24,11 @@ #include "SocketMonitor.hxx" #include "util/StaticFifoBuffer.hxx" +#include <exception> + #include <assert.h> #include <stdint.h> -class Error; class EventLoop; /** @@ -109,7 +110,7 @@ protected: */ virtual InputResult OnSocketInput(void *data, size_t length) = 0; - virtual void OnSocketError(Error &&error) = 0; + virtual void OnSocketError(std::exception_ptr ep) = 0; virtual void OnSocketClosed() = 0; virtual bool OnSocketReady(unsigned flags) override; diff --git a/src/event/FullyBufferedSocket.cxx b/src/event/FullyBufferedSocket.cxx index 21a038044..b464e83b9 100644 --- a/src/event/FullyBufferedSocket.cxx +++ b/src/event/FullyBufferedSocket.cxx @@ -20,8 +20,6 @@ #include "config.h" #include "FullyBufferedSocket.hxx" #include "net/SocketError.hxx" -#include "util/Error.hxx" -#include "util/Domain.hxx" #include "Compiler.h" #include <assert.h> @@ -42,7 +40,7 @@ FullyBufferedSocket::DirectWrite(const void *data, size_t length) if (IsSocketErrorClosed(code)) OnSocketClosed(); else - OnSocketError(NewSocketError(code)); + OnSocketError(std::make_exception_ptr(MakeSocketError(code, "Failed to send to socket"))); } return nbytes; @@ -85,11 +83,7 @@ FullyBufferedSocket::Write(const void *data, size_t length) const bool was_empty = output.IsEmpty(); if (!output.Append(data, length)) { - // TODO - static constexpr Domain buffered_socket_domain("buffered_socket"); - Error error; - error.Set(buffered_socket_domain, "Output buffer is full"); - OnSocketError(std::move(error)); + OnSocketError(std::make_exception_ptr(std::runtime_error("Output buffer is full"))); return false; } diff --git a/src/output/plugins/httpd/HttpdClient.cxx b/src/output/plugins/httpd/HttpdClient.cxx index f12f833e2..e9cda85f0 100644 --- a/src/output/plugins/httpd/HttpdClient.cxx +++ b/src/output/plugins/httpd/HttpdClient.cxx @@ -474,9 +474,9 @@ HttpdClient::OnSocketInput(void *data, size_t length) } void -HttpdClient::OnSocketError(Error &&error) +HttpdClient::OnSocketError(std::exception_ptr ep) { - LogError(error); + LogError(ep); } void diff --git a/src/output/plugins/httpd/HttpdClient.hxx b/src/output/plugins/httpd/HttpdClient.hxx index 222b1da99..07806f4a0 100644 --- a/src/output/plugins/httpd/HttpdClient.hxx +++ b/src/output/plugins/httpd/HttpdClient.hxx @@ -191,7 +191,7 @@ private: protected: virtual bool OnSocketReady(unsigned flags) override; virtual InputResult OnSocketInput(void *data, size_t length) override; - virtual void OnSocketError(Error &&error) override; + void OnSocketError(std::exception_ptr ep) override; virtual void OnSocketClosed() override; }; |