Cygwin: FIFO: add 'record_connection' method
Future commits will have to re-use the code for recording a client connection. For convenience, factor out this code into a new method.
This commit is contained in:
parent
1372021a2d
commit
f3d1fe2ff8
|
@ -1279,6 +1279,7 @@ class fhandler_fifo: public fhandler_base
|
|||
void delete_client_handler (int);
|
||||
bool listen_client ();
|
||||
int stop_listen_client ();
|
||||
void record_connection (fifo_client_handler&);
|
||||
public:
|
||||
fhandler_fifo ();
|
||||
bool hit_eof ();
|
||||
|
|
|
@ -300,6 +300,19 @@ fhandler_fifo::listen_client ()
|
|||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_fifo::record_connection (fifo_client_handler& fc)
|
||||
{
|
||||
fifo_client_lock ();
|
||||
fc.state = fc_connected;
|
||||
nconnected++;
|
||||
set_pipe_non_blocking (fc.fh->get_handle (), true);
|
||||
fifo_client_unlock ();
|
||||
HANDLE evt = InterlockedExchangePointer (&fc.connect_evt, NULL);
|
||||
if (evt)
|
||||
CloseHandle (evt);
|
||||
}
|
||||
|
||||
DWORD
|
||||
fhandler_fifo::listen_client_thread ()
|
||||
{
|
||||
|
@ -363,19 +376,11 @@ fhandler_fifo::listen_client_thread ()
|
|||
break;
|
||||
}
|
||||
}
|
||||
HANDLE evt = NULL;
|
||||
switch (status)
|
||||
{
|
||||
case STATUS_SUCCESS:
|
||||
case STATUS_PIPE_CONNECTED:
|
||||
fifo_client_lock ();
|
||||
fc.state = fc_connected;
|
||||
nconnected++;
|
||||
set_pipe_non_blocking (fc.fh->get_handle (), true);
|
||||
evt = InterlockedExchangePointer (&fc.connect_evt, NULL);
|
||||
if (evt)
|
||||
CloseHandle (evt);
|
||||
fifo_client_unlock ();
|
||||
record_connection (fc);
|
||||
break;
|
||||
case STATUS_PIPE_LISTENING:
|
||||
/* Retry. */
|
||||
|
|
Loading…
Reference in New Issue