| Index: native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc b/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc
|
| index aeb54d5d37f6e5c7cebe95d9791a495360310a02..90c6e7586e63cf52eac693831379a394993529d2 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc
|
| @@ -20,9 +20,12 @@ const size_t kDefaultPipeSize = 512 * 1024;
|
| namespace nacl_io {
|
|
|
| PipeNode::PipeNode(Filesystem* fs)
|
| - : StreamNode(fs), pipe_(new PipeEventEmitter(kDefaultPipeSize)) {}
|
| + : StreamNode(fs), pipe_(new PipeEventEmitter(kDefaultPipeSize)) {
|
| +}
|
|
|
| -EventEmitter* PipeNode::GetEventEmitter() { return pipe_.get(); }
|
| +PipeEventEmitter* PipeNode::GetEventEmitter() {
|
| + return pipe_.get();
|
| +}
|
|
|
| Error PipeNode::Read(const HandleAttr& attr,
|
| void* buf,
|
| @@ -32,11 +35,13 @@ Error PipeNode::Read(const HandleAttr& attr,
|
|
|
| EventListenerLock wait(GetEventEmitter());
|
| Error err = wait.WaitOnEvent(POLLIN, ms);
|
| + if (err == ETIMEDOUT)
|
| + err = EWOULDBLOCK;
|
| if (err)
|
| return err;
|
|
|
| - *out_bytes = pipe_->Read_Locked(static_cast<char*>(buf), count);
|
| - return 0;
|
| + return GetEventEmitter()->Read_Locked(static_cast<char*>(buf), count,
|
| + out_bytes);
|
| }
|
|
|
| Error PipeNode::Write(const HandleAttr& attr,
|
| @@ -47,11 +52,13 @@ Error PipeNode::Write(const HandleAttr& attr,
|
|
|
| EventListenerLock wait(GetEventEmitter());
|
| Error err = wait.WaitOnEvent(POLLOUT, ms);
|
| + if (err == ETIMEDOUT)
|
| + err = EWOULDBLOCK;
|
| if (err)
|
| return err;
|
|
|
| - *out_bytes = pipe_->Write_Locked(static_cast<const char*>(buf), count);
|
| - return 0;
|
| + return GetEventEmitter()->Write_Locked(static_cast<const char*>(buf),
|
| + count, out_bytes);
|
| }
|
|
|
| } // namespace nacl_io
|
|
|