Chromium Code Reviews| 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..ec25f2744c2038315142b7a1d1e0701195683874 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,10 +35,12 @@ Error PipeNode::Read(const HandleAttr& attr, |
| EventListenerLock wait(GetEventEmitter()); |
| Error err = wait.WaitOnEvent(POLLIN, ms); |
| + if (err == ETIMEDOUT) |
|
binji
2014/05/01 20:22:31
Do we want to do this everywhere?
If not, it stil
Sam Clegg
2014/05/01 22:16:55
There may be test code that expects otherwise but
|
| + err = EWOULDBLOCK; |
| if (err) |
| return err; |
| - *out_bytes = pipe_->Read_Locked(static_cast<char*>(buf), count); |
| + *out_bytes = GetEventEmitter()->Read_Locked(static_cast<char*>(buf), count); |
| return 0; |
| } |
| @@ -47,10 +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); |
| + *out_bytes = GetEventEmitter()->Write_Locked(static_cast<const char*>(buf), |
| + count); |
| return 0; |
| } |