From 8f713b6b08898d190c1ece38ada32b94dd80c26f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 28 Jul 2006 08:50:46 +0000 Subject: * fhandler.h (struct wsa_event): Define here. (class fhandler_socket): Make wsock_evt private again. (fhandler_socket::wsock_event): New read accessor for wsock_evt. (fhandler_socket::serial_number): New read accessor to get the socket's serial number. (fhandler_socket::ready_for_read): Just return true. * fhandler_socket.cc (struct wsa_event): Move definition to fhandler.h. * select.cc (struct socketinf): Add serial number vector. (start_thread_socket): Identify duplicate sockets by their serial number, not (wrongly) by their wsock_evt. --- winsup/cygwin/fhandler.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/fhandler.h') diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index f03730eb8..dee16aaea 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -378,7 +378,13 @@ class fhandler_mailslot : public fhandler_base select_record *select_read (select_record *s); }; -struct wsa_event; +struct wsa_event +{ + LONG serial_number; + long events; + int connect_errorcode; + pid_t owner; +}; class fhandler_socket: public fhandler_base { @@ -389,10 +395,12 @@ class fhandler_socket: public fhandler_base wsa_event *wsock_events; HANDLE wsock_mtx; - public: HANDLE wsock_evt; + public: bool init_events (); - int evaluate_events (const long event_mask, long &events, bool erase); + int evaluate_events (const long event_mask, long &events, const bool erase); + const HANDLE wsock_event () const { return wsock_evt; } + const LONG serial_number () const { return wsock_events->serial_number; } private: int wait_for_events (const long event_mask); void release_events (); @@ -486,6 +494,7 @@ class fhandler_socket: public fhandler_base select_record *select_read (select_record *s); select_record *select_write (select_record *s); select_record *select_except (select_record *s); + int ready_for_read (int, DWORD) { return true; } void set_addr_family (int af) {addr_family = af;} int get_addr_family () {return addr_family;} void set_socket_type (int st) { type = st;} -- cgit v1.2.3