#ifndef SRC_JS_STREAM_H_ #define SRC_JS_STREAM_H_ #include "async-wrap.h" #include "env.h" #include "stream_base.h" #include "v8.h" namespace node { class JSStream : public StreamBase, public AsyncWrap { public: static void Initialize(v8::Handle target, v8::Handle unused, v8::Handle context); ~JSStream(); void* Cast() override; 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; protected: JSStream(Environment* env, v8::Handle obj, AsyncWrap* parent); AsyncWrap* GetAsyncWrap() override; static void New(const v8::FunctionCallbackInfo& args); static void DoAlloc(const v8::FunctionCallbackInfo& args); static void DoRead(const v8::FunctionCallbackInfo& args); static void DoAfterWrite(const v8::FunctionCallbackInfo& args); static void ReadBuffer(const v8::FunctionCallbackInfo& args); static void EmitEOF(const v8::FunctionCallbackInfo& args); template static void Finish(const v8::FunctionCallbackInfo& args); }; } // namespace node #endif // SRC_JS_STREAM_H_