summaryrefslogtreecommitdiff
path: root/src/tls_wrap.h
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-01-08 01:14:06 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-01 10:53:26 +0100
commit7c4b09b24bbe7d6a8cbad256f47b30a101a909ea (patch)
tree1aef41b1fd1cc0aad300b178e0a19e6da29615c8 /src/tls_wrap.h
parent1b6cb947611de5865641d1a6780ee6930a4e1d69 (diff)
downloadandroid-node-v8-7c4b09b24bbe7d6a8cbad256f47b30a101a909ea.tar.gz
android-node-v8-7c4b09b24bbe7d6a8cbad256f47b30a101a909ea.tar.bz2
android-node-v8-7c4b09b24bbe7d6a8cbad256f47b30a101a909ea.zip
src: refactor stream callbacks and ownership
Instead of setting individual callbacks on streams and tracking stream ownership through a boolean `consume_` flag, always have one specific listener object in charge of a stream, and call methods on that object rather than generic C-style callbacks. PR-URL: https://github.com/nodejs/node/pull/18334 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'src/tls_wrap.h')
-rw-r--r--src/tls_wrap.h24
1 files changed, 5 insertions, 19 deletions
diff --git a/src/tls_wrap.h b/src/tls_wrap.h
index ae83c82c32..a1f0b99e86 100644
--- a/src/tls_wrap.h
+++ b/src/tls_wrap.h
@@ -48,7 +48,8 @@ class NodeBIO;
class TLSWrap : public AsyncWrap,
public crypto::SSLWrap<TLSWrap>,
- public StreamBase {
+ public StreamBase,
+ public StreamListener {
public:
~TLSWrap() override;
@@ -76,8 +77,6 @@ class TLSWrap : public AsyncWrap,
size_t self_size() const override { return sizeof(*this); }
- void clear_stream() { stream_ = nullptr; }
-
protected:
static const int kClearOutChunkSize = 16384;
@@ -98,7 +97,6 @@ class TLSWrap : public AsyncWrap,
static void SSLInfoCallback(const SSL* ssl_, int where, int ret);
void InitSSL();
void EncOut();
- void EncOutAfterWrite(WriteWrap* req_wrap, int status);
bool ClearIn();
void ClearOut();
bool InvokeQueued(int status, const char* error_str = nullptr);
@@ -119,20 +117,9 @@ class TLSWrap : public AsyncWrap,
bool IsIPCPipe() override;
// Resource implementation
- static void OnAfterWriteImpl(WriteWrap* w, int status, void* ctx);
- 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);
- static void OnAllocSelf(size_t size, uv_buf_t* buf, void* ctx);
- static void OnReadSelf(ssize_t nread,
- const uv_buf_t* buf,
- uv_handle_type pending,
- void* ctx);
- static void OnDestructImpl(void* ctx);
-
- void DoRead(ssize_t nread, const uv_buf_t* buf, uv_handle_type pending);
+ void OnStreamAfterWrite(WriteWrap* w, int status) override;
+ uv_buf_t OnStreamAlloc(size_t size) override;
+ void OnStreamRead(ssize_t nread, const uv_buf_t& buf) override;
v8::Local<v8::Value> GetSSLError(int status, int* err, std::string* msg);
@@ -154,7 +141,6 @@ class TLSWrap : public AsyncWrap,
#endif // SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
crypto::SecureContext* sc_;
- StreamBase* stream_;
BIO* enc_in_;
BIO* enc_out_;
std::vector<uv_buf_t> pending_cleartext_input_;