X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fpipe.cpp;fp=source%2Fpipe.cpp;h=bd905271c07c54be62e07c57aecbdc4b063d2d51;hp=696abe5c5695c89d45c048ec2af2946b68a23c1b;hb=73a21b6f495e16707ede460a2c9d8f1474bb4d93;hpb=48926b1ed17db1fed149f89140ea99f6d968adc2 diff --git a/source/pipe.cpp b/source/pipe.cpp index 696abe5..bd90527 100644 --- a/source/pipe.cpp +++ b/source/pipe.cpp @@ -20,25 +20,25 @@ namespace IO { Pipe::Pipe() { #ifdef WIN32 - string name=format("\\\\.\\pipe\\%u.%p", GetCurrentProcessId(), this); - handle[0]=CreateNamedPipe(name.c_str(), PIPE_ACCESS_INBOUND|FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE, 1, 1024, 1024, 0, 0); + string name = format("\\\\.\\pipe\\%u.%p", GetCurrentProcessId(), this); + handle[0] = CreateNamedPipe(name.c_str(), PIPE_ACCESS_INBOUND|FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE, 1, 1024, 1024, 0, 0); if(handle[0]==INVALID_HANDLE_VALUE) throw SystemError("Unable to create pipe", GetLastError()); - 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, 0, 0); if(handle[1]==INVALID_HANDLE_VALUE) { - unsigned err=GetLastError(); + unsigned err = GetLastError(); CloseHandle(handle[0]); throw SystemError("Unable to create pipe", err); } - overlapped=0; - event=CreateEvent(0, true, false, 0); - buf_size=1024; - buffer=new char[buf_size]; - buf_avail=0; - buf_next=buffer; + overlapped = 0; + event = CreateEvent(0, true, false, 0); + buf_size = 1024; + buffer = new char[buf_size]; + buf_avail = 0; + buf_next = buffer; #else if(pipe(handle)==-1) throw SystemError("Unable to create pipe", errno); @@ -49,14 +49,14 @@ Pipe::Pipe() void Pipe::set_block(bool b) { - mode=(mode&~M_NONBLOCK); + mode = (mode&~M_NONBLOCK); if(b) - mode=(mode|M_NONBLOCK); + mode = (mode|M_NONBLOCK); #ifndef WIN32 - int flags=fcntl(handle[0], F_GETFD); + int flags = fcntl(handle[0], F_GETFD); fcntl(handle[0], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK)); - flags=fcntl(handle[1], F_GETFD); + flags = fcntl(handle[1], F_GETFD); fcntl(handle[1], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK)); #endif } @@ -81,23 +81,23 @@ Handle Pipe::get_event_handle() #ifdef WIN32 if(!overlapped && !buf_avail) { - overlapped=new OVERLAPPED; + overlapped = new OVERLAPPED; memset(overlapped, 0, sizeof(OVERLAPPED)); - overlapped->hEvent=event; + overlapped->hEvent = event; DWORD ret; - buf_next=buffer; + buf_next = buffer; if(!ReadFile(handle[0], buffer, buf_size, &ret, overlapped)) { - unsigned err=GetLastError(); + unsigned err = GetLastError(); if(err!=ERROR_IO_PENDING) throw SystemError("Failed to start an overlapped read", err); } else { - buf_avail=ret; + buf_avail = ret; delete overlapped; - overlapped=0; + overlapped = 0; SetEvent(event); } } @@ -123,7 +123,7 @@ unsigned Pipe::do_write(const char *buf, unsigned size) if(!WriteFile(handle[1], buf, size, &ret, 0)) throw SystemError("Writing to pipe failed", GetLastError()); #else - int ret=::write(handle[1], buf, size); + int ret = ::write(handle[1], buf, size); if(ret==-1) { if(errno==EAGAIN) @@ -152,21 +152,21 @@ unsigned Pipe::do_read(char *buf, unsigned size) throw SystemError("Reading from pipe failed", GetLastError()); else { - buf_avail+=ret; + buf_avail += ret; delete overlapped; - overlapped=0; + overlapped = 0; } } - unsigned ret=min(buf_avail, size); + unsigned ret = min(buf_avail, size); memcpy(buf, buf_next, ret); - buf_next+=ret; - buf_avail-=ret; + buf_next += ret; + buf_avail -= ret; // Initiate another overlapped read in case someone is polling us get_event_handle(); #else - int ret=::read(handle[0], buf, size); + int ret = ::read(handle[0], buf, size); if(ret==-1) { if(errno==EAGAIN) @@ -178,7 +178,7 @@ unsigned Pipe::do_read(char *buf, unsigned size) if(ret==0) { - eof_flag=true; + eof_flag = true; signal_end_of_file.emit(); }