|
14 | 14 | namespace node { |
15 | 15 |
|
16 | 16 | using v8::Array; |
| 17 | +using v8::Boolean; |
17 | 18 | using v8::Context; |
18 | 19 | using v8::FunctionCallbackInfo; |
19 | 20 | using v8::HandleScope; |
@@ -56,6 +57,20 @@ int StreamBase::Shutdown(const FunctionCallbackInfo<Value>& args) { |
56 | 57 | return Shutdown(req_wrap_obj); |
57 | 58 | } |
58 | 59 |
|
| 60 | +inline void SetWriteResultPropertiesOnWrapObject( |
| 61 | + Environment* env, |
| 62 | + Local<Object> req_wrap_obj, |
| 63 | + const StreamWriteResult& res, |
| 64 | + size_t bytes) { |
| 65 | + req_wrap_obj->Set( |
| 66 | + env->context(), |
| 67 | + env->bytes_string(), |
| 68 | + Number::New(env->isolate(), bytes)).FromJust(); |
| 69 | + req_wrap_obj->Set( |
| 70 | + env->context(), |
| 71 | + env->async(), |
| 72 | + Boolean::New(env->isolate(), res.async)).FromJust(); |
| 73 | +} |
59 | 74 |
|
60 | 75 | int StreamBase::Writev(const FunctionCallbackInfo<Value>& args) { |
61 | 76 | Environment* env = Environment::GetCurrent(args); |
@@ -150,7 +165,7 @@ int StreamBase::Writev(const FunctionCallbackInfo<Value>& args) { |
150 | 165 | } |
151 | 166 |
|
152 | 167 | StreamWriteResult res = Write(*bufs, count, nullptr, req_wrap_obj); |
153 | | - req_wrap_obj->Set(env->bytes_string(), Number::New(env->isolate(), bytes)); |
| 168 | + SetWriteResultPropertiesOnWrapObject(env, req_wrap_obj, res, bytes); |
154 | 169 | if (res.wrap != nullptr && storage) { |
155 | 170 | res.wrap->SetAllocatedStorage(storage.release(), storage_size); |
156 | 171 | } |
@@ -178,9 +193,7 @@ int StreamBase::WriteBuffer(const FunctionCallbackInfo<Value>& args) { |
178 | 193 |
|
179 | 194 | if (res.async) |
180 | 195 | req_wrap_obj->Set(env->context(), env->buffer_string(), args[1]).FromJust(); |
181 | | - req_wrap_obj->Set(env->context(), env->bytes_string(), |
182 | | - Integer::NewFromUnsigned(env->isolate(), buf.len)) |
183 | | - .FromJust(); |
| 196 | + SetWriteResultPropertiesOnWrapObject(env, req_wrap_obj, res, buf.len); |
184 | 197 |
|
185 | 198 | return res.err; |
186 | 199 | } |
@@ -286,10 +299,7 @@ int StreamBase::WriteString(const FunctionCallbackInfo<Value>& args) { |
286 | 299 |
|
287 | 300 | StreamWriteResult res = Write(&buf, 1, send_handle, req_wrap_obj); |
288 | 301 |
|
289 | | - req_wrap_obj->Set(env->context(), env->bytes_string(), |
290 | | - Integer::NewFromUnsigned(env->isolate(), data_size)) |
291 | | - .FromJust(); |
292 | | - |
| 302 | + SetWriteResultPropertiesOnWrapObject(env, req_wrap_obj, res, data_size); |
293 | 303 | if (res.wrap != nullptr) { |
294 | 304 | res.wrap->SetAllocatedStorage(data.release(), data_size); |
295 | 305 | } |
|
0 commit comments