/*
- * Copyright 2015 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
typedef std::unique_ptr<AsyncPipeReader,
folly::DelayedDestruction::Destructor> UniquePtr;
+ template <typename... Args>
+ static UniquePtr newReader(Args&&... args) {
+ return UniquePtr(new AsyncPipeReader(std::forward<Args>(args)...));
+ }
+
AsyncPipeReader(folly::EventBase* eventBase, int pipeFd)
: EventHandler(eventBase, pipeFd),
fd_(pipeFd) {}
}
private:
- ~AsyncPipeReader();
+ ~AsyncPipeReader() override;
void handlerReady(uint16_t events) noexcept override;
void failRead(const AsyncSocketException& ex);
typedef std::unique_ptr<AsyncPipeWriter,
folly::DelayedDestruction::Destructor> UniquePtr;
+ template <typename... Args>
+ static UniquePtr newWriter(Args&&... args) {
+ return UniquePtr(new AsyncPipeWriter(std::forward<Args>(args)...));
+ }
+
AsyncPipeWriter(folly::EventBase* eventBase, int pipeFd)
: EventHandler(eventBase, pipeFd),
fd_(pipeFd) {}
}
// AsyncWriter methods
- void write(folly::AsyncWriter::WriteCallback* callback, const void* buf,
- size_t bytes, WriteFlags flags = WriteFlags::NONE) override {
+ void write(folly::AsyncWriter::WriteCallback* callback,
+ const void* buf,
+ size_t bytes,
+ WriteFlags flags = WriteFlags::NONE) override {
writeChain(callback, IOBuf::wrapBuffer(buf, bytes), flags);
}
- void writev(folly::AsyncWriter::WriteCallback*, const iovec*,
- size_t, WriteFlags = WriteFlags::NONE) override {
+ void writev(folly::AsyncWriter::WriteCallback*,
+ const iovec*,
+ size_t,
+ WriteFlags = WriteFlags::NONE) override {
throw std::runtime_error("writev is not supported. Please use writeChain.");
}
void writeChain(folly::AsyncWriter::WriteCallback* callback,
bool closeOnEmpty_{false};
std::function<void(int)> closeCb_;
- ~AsyncPipeWriter() {
+ ~AsyncPipeWriter() override {
closeNow();
}
};