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