diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2006-07-28 08:50:46 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2006-07-28 08:50:46 +0000 |
commit | 8f713b6b08898d190c1ece38ada32b94dd80c26f (patch) | |
tree | 860070e8c869d5d0ddf2b3501fafa4570170390a /winsup/cygwin/fhandler.h | |
parent | bc31293a0de4edadeec7b23f4b8ddddcce92d44a (diff) | |
download | cygnal-8f713b6b08898d190c1ece38ada32b94dd80c26f.tar.gz cygnal-8f713b6b08898d190c1ece38ada32b94dd80c26f.tar.bz2 cygnal-8f713b6b08898d190c1ece38ada32b94dd80c26f.zip |
* 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.
Diffstat (limited to 'winsup/cygwin/fhandler.h')
-rw-r--r-- | winsup/cygwin/fhandler.h | 15 |
1 files changed, 12 insertions, 3 deletions
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;} |