Skip to content

Commit a054f8e

Browse files
committed
stream_wrap: Add support to write binary strings
node::StringBytes::Write() has appropriate support to write strings with 'binary' encoding. So expose that API through StreamWrap and allow inheriting classes to use it. Signed-off-by: Trevor Norris <trev.norris@gmail.com>
1 parent 81a9739 commit a054f8e

6 files changed

Lines changed: 18 additions & 0 deletions

File tree

lib/net.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,9 @@ Socket.prototype._write = function(data, encoding, cb) {
684684

685685
function createWriteReq(req, handle, data, encoding) {
686686
switch (encoding) {
687+
case 'binary':
688+
return handle.writeBinaryString(req, data);
689+
687690
case 'buffer':
688691
return handle.writeBuffer(req, data);
689692

src/pipe_wrap.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ void PipeWrap::Initialize(Handle<Object> target,
104104
StreamWrap::WriteAsciiString);
105105
NODE_SET_PROTOTYPE_METHOD(t, "writeUtf8String", StreamWrap::WriteUtf8String);
106106
NODE_SET_PROTOTYPE_METHOD(t, "writeUcs2String", StreamWrap::WriteUcs2String);
107+
NODE_SET_PROTOTYPE_METHOD(t,
108+
"writeBinaryString",
109+
StreamWrap::WriteBinaryString);
107110

108111
NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind);
109112
NODE_SET_PROTOTYPE_METHOD(t, "listen", Listen);

src/stream_wrap.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,10 @@ void StreamWrap::WriteUcs2String(const FunctionCallbackInfo<Value>& args) {
499499
WriteStringImpl<UCS2>(args);
500500
}
501501

502+
void StreamWrap::WriteBinaryString(const FunctionCallbackInfo<Value>& args) {
503+
WriteStringImpl<BINARY>(args);
504+
}
505+
502506
void StreamWrap::SetBlocking(const FunctionCallbackInfo<Value>& args) {
503507
Environment* env = Environment::GetCurrent(args.GetIsolate());
504508
HandleScope scope(env->isolate());

src/stream_wrap.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ class StreamWrap : public HandleWrap {
125125
static void WriteAsciiString(const v8::FunctionCallbackInfo<v8::Value>& args);
126126
static void WriteUtf8String(const v8::FunctionCallbackInfo<v8::Value>& args);
127127
static void WriteUcs2String(const v8::FunctionCallbackInfo<v8::Value>& args);
128+
static void WriteBinaryString(
129+
const v8::FunctionCallbackInfo<v8::Value>& args);
128130

129131
static void SetBlocking(const v8::FunctionCallbackInfo<v8::Value>& args);
130132

src/tcp_wrap.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ void TCPWrap::Initialize(Handle<Object> target,
111111
StreamWrap::WriteAsciiString);
112112
NODE_SET_PROTOTYPE_METHOD(t, "writeUtf8String", StreamWrap::WriteUtf8String);
113113
NODE_SET_PROTOTYPE_METHOD(t, "writeUcs2String", StreamWrap::WriteUcs2String);
114+
NODE_SET_PROTOTYPE_METHOD(t,
115+
"writeBinaryString",
116+
StreamWrap::WriteBinaryString);
114117
NODE_SET_PROTOTYPE_METHOD(t, "writev", StreamWrap::Writev);
115118

116119
NODE_SET_PROTOTYPE_METHOD(t, "open", Open);

src/tty_wrap.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ void TTYWrap::Initialize(Handle<Object> target,
7878
StreamWrap::WriteAsciiString);
7979
NODE_SET_PROTOTYPE_METHOD(t, "writeUtf8String", StreamWrap::WriteUtf8String);
8080
NODE_SET_PROTOTYPE_METHOD(t, "writeUcs2String", StreamWrap::WriteUcs2String);
81+
NODE_SET_PROTOTYPE_METHOD(t,
82+
"writeBinaryString",
83+
StreamWrap::WriteBinaryString);
8184

8285
NODE_SET_PROTOTYPE_METHOD(t, "getWindowSize", TTYWrap::GetWindowSize);
8386
NODE_SET_PROTOTYPE_METHOD(t, "setRawMode", SetRawMode);

0 commit comments

Comments
 (0)