if(!handle[0])
throw system_error("CreateNamedPipe");
- *handle[1] = CreateFile(name.c_str(), GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
+ *handle[1] = CreateFile(name.c_str(), GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
if(!handle[1])
{
unsigned err = GetLastError();
}
Pipe::~Pipe()
-{
- close();
-}
-
-void Pipe::close()
{
set_events(P_NONE);
signal_flush_required.emit();
sys_close(handle[0]);
sys_close(handle[1]);
- signal_closed.emit();
}
void Pipe::set_block(bool b)
return 0;
unsigned ret = reader.read(buf, size);
-
if(ret==0)
- {
- eof_flag = true;
- signal_end_of_file.emit();
- }
+ set_eof();
return ret;
}