set_events(P_NONE);
signal_flush_required.emit();
-#ifdef WIN32
- CloseHandle(*handle[0]);
- CloseHandle(*handle[1]);
-#else
- ::close(*handle[0]);
- ::close(*handle[1]);
+ sys_close(handle[0]);
+ sys_close(handle[1]);
signal_closed.emit();
-#endif
}
void Pipe::set_block(bool b)
if(size==0)
return 0;
-#ifdef WIN32
- DWORD ret;
- if(!WriteFile(*handle[1], buf, size, &ret, 0))
- throw system_error("WriteFile");
-#else
- int ret = ::write(*handle[1], buf, size);
- if(ret==-1)
- {
- if(errno==EAGAIN)
- return 0;
- else
- throw system_error("write");
- }
-#endif
-
- return ret;
+ return sys_write(handle[1], buf, size);
}
unsigned Pipe::do_read(char *buf, unsigned size)
// Initiate another overlapped read in case someone is polling us
get_event_handle();
#else
- int ret = ::read(*handle[0], buf, size);
- if(ret==-1)
- {
- if(errno==EAGAIN)
- return 0;
- else
- throw system_error("read");
- }
+ unsigned ret = sys_read(handle[0], buf, size);
#endif
if(ret==0)