34 std::shared_ptr<folly::AsyncTransportWrapper>
socket)
43 auto evb =
socket_->getEventBase();
45 evb->runImmediatelyOrRunInEventBaseThreadAndWait(
64 ctx->fireTransportInactive();
69 if (eventBase && !
socket_->getEventBase()) {
70 socket_->attachEventBase(eventBase);
82 ctx->getPipeline()->setTransport(
socket_);
85 ctx->fireTransportActive();
92 ctx->getPipeline()->setTransport(
nullptr);
101 std::unique_ptr<folly::IOBuf> buf)
override {
108 VLOG(5) <<
"socket is closed in write()";
110 folly::AsyncSocketException::AsyncSocketExceptionType::NOT_OPEN,
111 "socket is closed in write()"));
115 auto future = cb->promise_.getFuture();
126 bool shutdownWriteOnly =
isSet(ctx->getWriteFlags(),
128 if (shutdownWriteOnly) {
145 readBufferSettings.first,
146 readBufferSettings.second);
147 *bufReturn = ret.first;
148 *lenReturn = ret.second;
164 folly::make_exception_wrapper<folly::AsyncSocketException>(ex));
178 if (closeWithReset) {
186 ctx->getPipeline()->deletePipeline();
210 std::shared_ptr<folly::AsyncTransportWrapper>
socket_{
nullptr};
folly::Promise< folly::Unit > promise_
void readEOF(Context *ctx) override
folly::Future< folly::Unit > close(Context *ctx) override
AsyncSocketHandler(std::shared_ptr< folly::AsyncTransportWrapper > socket)
virtual void fireReadEOF()=0
void transportInactive(Context *ctx) override
PipelineManager * getPipelineManager()
constexpr detail::Map< Move > move
folly::IOBufQueue bufQueue_
void setException(exception_wrapper ew)
requires E e noexcept(noexcept(s.error(std::move(e))))
folly::Future< folly::Unit > shutdown(Context *ctx, bool closeWithReset)
std::pair< void *, std::size_t > preallocate(std::size_t min, std::size_t newAllocationSize, std::size_t max=std::numeric_limits< std::size_t >::max())
HandlerContext< R, W > * getContext()
bool isSet(WriteFlags a, WriteFlags b)
void attachReadCallback()
void detachPipeline(Context *) override
void readErr(const folly::AsyncSocketException &ex) noexceptoverride
void getReadBuffer(void **bufReturn, size_t *lenReturn) override
static Options cacheChainLength()
void transportActive(Context *ctx) override
std::shared_ptr< folly::AsyncTransportWrapper > socket_
void writeErr(size_t, const folly::AsyncSocketException &ex) noexceptoverride
NetworkSocket socket(int af, int type, int protocol)
virtual void fireRead(In msg)=0
void readEOF() noexceptoverride
folly::Future< folly::Unit > write(Context *ctx, std::unique_ptr< folly::IOBuf > buf) override
virtual void refreshTimeout()
std::enable_if< std::is_same< Unit, B >::value, void >::type setValue()
void attachEventBase(folly::EventBase *eventBase)
void writeSuccess() noexceptoverride
virtual void fireReadException(folly::exception_wrapper e)=0
Handler< R, R, W, W >::Context Context
virtual std::pair< uint64_t, uint64_t > getReadBufferSettings()=0
void postallocate(std::size_t n)
void readDataAvailable(size_t len) noexceptoverride
Future< typename std::decay< T >::type > makeFuture(T &&t)
void detachReadCallback()
virtual PipelineBase * getPipeline()=0
folly::Future< folly::Unit > writeException(Context *ctx, folly::exception_wrapper) override
~AsyncSocketHandler() override