Skip to content

Commit

Permalink
Let TTransportException be constructible from AsyncSocketException
Browse files Browse the repository at this point in the history
Summary: [Thrift] Let `TTransportException` be constructible from `AsyncSocketException`.

Reviewed By: mingtaoy

Differential Revision: D19474266

fbshipit-source-id: cdf8b40db6e489a90b8f12d33a4d84040ed19b73
  • Loading branch information
yfeldblum authored and facebook-github-bot committed Feb 10, 2020
1 parent 954509a commit 4bc5213
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 30 deletions.
9 changes: 3 additions & 6 deletions thrift/lib/cpp/async/TAsyncSSLSocket.h
Expand Up @@ -132,12 +132,9 @@ class TAsyncSSLSocket : public folly::AsyncSSLSocket, public TAsyncSocket {
void handshakeErr(
folly::AsyncSSLSocket* sock,
const folly::AsyncSocketException& ex) noexcept override {
transport::TTransportException tex(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno());

handshakeError(static_cast<TAsyncSSLSocket*>(sock), tex);
handshakeError(
static_cast<TAsyncSSLSocket*>(sock),
transport::TTransportException(ex));
}
};

Expand Down
7 changes: 1 addition & 6 deletions thrift/lib/cpp/async/TAsyncSocket.h
Expand Up @@ -106,12 +106,7 @@ class TAsyncSocket : public virtual folly::AsyncSocket {

private:
void connectErr(const folly::AsyncSocketException& ex) noexcept override {
transport::TTransportException tex(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno());

connectError(tex);
connectError(transport::TTransportException(ex));
}
};
};
Expand Down
5 changes: 1 addition & 4 deletions thrift/lib/cpp/async/TStreamAsyncChannel-inl.h
Expand Up @@ -310,10 +310,7 @@ void TStreamAsyncChannel<WriteRequest_, ReadState_>::writeErr(
const folly::AsyncSocketException& ex) noexcept {
DestructorGuard dg(this);

transport::TTransportException tex(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno());
transport::TTransportException tex(ex);

// Set exception type
errorType_ = tex.getType();
Expand Down
7 changes: 7 additions & 0 deletions thrift/lib/cpp/transport/TTransportException.h
Expand Up @@ -18,6 +18,7 @@
#define _THRIFT_TRANSPORT_TTRANSPORTEXCEPTION_H_ 1

#include <folly/Conv.h>
#include <folly/io/async/AsyncSocketException.h>

#include <thrift/lib/cpp/Thrift.h>

Expand Down Expand Up @@ -97,6 +98,12 @@ class TTransportException : public apache::thrift::TLibraryException {
errno_(errno_copy),
options_(0) {}

explicit TTransportException(const folly::AsyncSocketException& ex)
: TTransportException(
TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno()) {}

~TTransportException() throw() override {}

/**
Expand Down
12 changes: 2 additions & 10 deletions thrift/lib/cpp2/async/TAsyncTransportHandler.h
Expand Up @@ -139,13 +139,9 @@ class TAsyncTransportHandler
}

void readErr(const folly::AsyncSocketException& ex) noexcept override {
transport::TTransportException tex(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno());
getContext()->fireReadException(
folly::make_exception_wrapper<transport::TTransportException>(
std::move(tex)));
transport::TTransportException(ex)));
}

private:
Expand All @@ -170,11 +166,7 @@ class TAsyncTransportHandler
void writeErr(
size_t /*bytesWritten*/,
const folly::AsyncSocketException& ex) noexcept override {
transport::TTransportException tex(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno());
promise_.setException(tex);
promise_.setException(transport::TTransportException(ex));
delete this;
}

Expand Down
5 changes: 1 addition & 4 deletions thrift/lib/cpp2/transport/rocket/framing/Parser-inl.h
Expand Up @@ -116,10 +116,7 @@ template <class T>
void Parser<T>::readErr(const folly::AsyncSocketException& ex) noexcept {
folly::DelayedDestruction::DestructorGuard dg(&this->owner_);

owner_.close(transport::TTransportException(
transport::TTransportException::TTransportExceptionType(ex.getType()),
ex.what(),
ex.getErrno()));
owner_.close(transport::TTransportException(ex));
}

template <class T>
Expand Down

0 comments on commit 4bc5213

Please sign in to comment.