node/test
Fedor Indutny b9686233fc stream_base: introduce StreamBase
StreamBase is an improved way to write C++ streams. The class itself is
for separting `StreamWrap` (with the methods like `.writeAsciiString`,
`.writeBuffer`, `.writev`, etc) from the `HandleWrap` class, making
possible to write abstract C++ streams that are not bound to any uv
socket.

The following methods are important part of the abstraction (which
mimics libuv's stream API):

* Events:
  * `OnAlloc(size_t size, uv_buf_t*)`
  * `OnRead(ssize_t nread, const uv_buf_t*, uv_handle_type pending)`
  * `OnAfterWrite(WriteWrap*)`
* Wrappers:
  * `DoShutdown(ShutdownWrap*)`
  * `DoTryWrite(uv_buf_t** bufs, size_t* count)`
  * `DoWrite(WriteWrap*, uv_buf_t*, size_t count, uv_stream_t* handle)`
  * `Error()`
  * `ClearError()`

The implementation should provide all of these methods, thus providing
the access to the underlying resource (be it uv handle, TLS socket, or
anything else).

A C++ stream may consume the input of another stream by replacing the
event callbacks and proxying the writes. This kind of API is actually
used now for the TLSWrap implementation, making it possible to wrap TLS
stream into another TLS stream. Thus legacy API calls are no longer
required in `_tls_wrap.js`.

PR-URL: https://github.com/iojs/io.js/pull/840
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
2015-02-22 22:31:57 +03:00
..
addons smalloc: extend user API 2015-02-20 11:02:33 -07:00
debugger Remove excessive copyright/license boilerplate 2015-01-12 15:30:28 -08:00
disabled Remove excessive copyright/license boilerplate 2015-01-12 15:30:28 -08:00
fixtures Remove excessive copyright/license boilerplate 2015-01-12 15:30:28 -08:00
gc test: update our branched weakref to v8 3.24 2014-03-17 10:19:47 -07:00
internet test: remove flaky test functionality 2015-02-16 15:27:33 +11:00
message events: optimize various functions 2015-02-09 17:47:49 +01:00
parallel stream_base: introduce StreamBase 2015-02-22 22:31:57 +03:00
pummel test: remove flaky test functionality 2015-02-16 15:27:33 +11:00
sequential tracing: add lttng support for tracing on linux 2015-02-09 18:06:57 +01:00
testpy test: fix `make test-addons` target 2015-01-12 23:21:51 +01:00
timers test: make test runner multi-arch/mode compatible 2014-10-16 22:39:34 +02:00
common.js tracing: add lttng support for tracing on linux 2015-02-09 18:06:57 +01:00