Cygwin: pipe, fifo: Move query_hdl and hdl_cnt_mtx to fhandler_pipe.

- query_hdl and hdl_cnt_mtx are moved from fhandler_pipe_fifo to
  fhandler_pipe. Then reader_closed() is changed to virtual and
  overridden in fhandler_pipe.
This commit is contained in:
Takashi Yano 2021-09-17 04:23:12 +09:00 committed by Ken Brown
parent 199482654b
commit 9814cfd8f6
2 changed files with 14 additions and 15 deletions

View File

@ -1175,26 +1175,13 @@ class fhandler_pipe_fifo: public fhandler_base
{ {
protected: protected:
size_t pipe_buf_size; size_t pipe_buf_size;
HANDLE query_hdl;
HANDLE hdl_cnt_mtx;
virtual void release_select_sem (const char *) {}; virtual void release_select_sem (const char *) {};
public: public:
fhandler_pipe_fifo (); fhandler_pipe_fifo ();
HANDLE get_query_handle () const { return query_hdl; } virtual bool reader_closed () { return false; };
void close_query_handle ()
{
if (query_hdl)
{
CloseHandle (query_hdl);
query_hdl = NULL;
}
}
bool reader_closed ();
ssize_t __reg3 raw_write (const void *ptr, size_t len); ssize_t __reg3 raw_write (const void *ptr, size_t len);
}; };
class fhandler_pipe: public fhandler_pipe_fifo class fhandler_pipe: public fhandler_pipe_fifo
@ -1202,6 +1189,8 @@ class fhandler_pipe: public fhandler_pipe_fifo
private: private:
HANDLE read_mtx; HANDLE read_mtx;
pid_t popen_pid; pid_t popen_pid;
HANDLE query_hdl;
HANDLE hdl_cnt_mtx;
void release_select_sem (const char *); void release_select_sem (const char *);
public: public:
fhandler_pipe (); fhandler_pipe ();
@ -1250,6 +1239,16 @@ public:
return fh; return fh;
} }
void set_pipe_non_blocking (bool nonblocking); void set_pipe_non_blocking (bool nonblocking);
HANDLE get_query_handle () const { return query_hdl; }
void close_query_handle ()
{
if (query_hdl)
{
CloseHandle (query_hdl);
query_hdl = NULL;
}
}
bool reader_closed ();
}; };
#define CYGWIN_FIFO_PIPE_NAME_LEN 47 #define CYGWIN_FIFO_PIPE_NAME_LEN 47

View File

@ -393,7 +393,7 @@ fhandler_pipe::raw_read (void *ptr, size_t& len)
} }
bool bool
fhandler_pipe_fifo::reader_closed () fhandler_pipe::reader_closed ()
{ {
if (!query_hdl) if (!query_hdl)
return false; return false;