#ifndef SRC_JS_STREAM_H_ #define SRC_JS_STREAM_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "async_wrap.h" #include "env.h" #include "stream_base.h" #include "v8.h" namespace node { class JSStream : public AsyncWrap, public StreamBase { public: static void Initialize(v8::Local target, v8::Local unused, v8::Local context); bool IsAlive() override; bool IsClosing() override; int ReadStart() override; int ReadStop() override; int DoShutdown(ShutdownWrap* req_wrap) override; int DoWrite(WriteWrap* w, uv_buf_t* bufs, size_t count, uv_stream_t* send_handle) override; void MemoryInfo(MemoryTracker* tracker) const override { tracker->TrackThis(this); } ADD_MEMORY_INFO_NAME(JSStream) protected: JSStream(Environment* env, v8::Local obj); AsyncWrap* GetAsyncWrap() override; static void New(const v8::FunctionCallbackInfo& args); static void ReadBuffer(const v8::FunctionCallbackInfo& args); static void EmitEOF(const v8::FunctionCallbackInfo& args); static void OnAllocImpl(size_t size, uv_buf_t* buf, void* ctx); static void OnReadImpl(ssize_t nread, const uv_buf_t* buf, uv_handle_type pending, void* ctx); template static void Finish(const v8::FunctionCallbackInfo& args); }; } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_JS_STREAM_H_