bjh 99/06/14 06:52:41
Modified: apr/network_io/os2 networkio.h poll.c
Log:
Update OS/2's poll with Ryans changes.
Revision Changes Path
1.2 +1 -0 apache-apr/apr/network_io/os2/networkio.h
Index: networkio.h
===================================================================
RCS file: /home/cvs/apache-apr/apr/network_io/os2/networkio.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- networkio.h 1999/06/04 16:15:56 1.1
+++ networkio.h 1999/06/14 13:52:40 1.2
@@ -72,6 +72,7 @@
struct socket_t *sock;
ap_int16_t events;
ap_int16_t revents;
+ int curpos;
};
ap_int16_t get_event(ap_int16_t);
1.3 +27 -11 apache-apr/apr/network_io/os2/poll.c
Index: poll.c
===================================================================
RCS file: /home/cvs/apache-apr/apr/network_io/os2/poll.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- poll.c 1999/06/11 07:23:01 1.2
+++ poll.c 1999/06/14 13:52:40 1.3
@@ -70,22 +70,31 @@
}
(*new)->cntxt = cont;
+ (*new)->curpos = 0;
return APR_SUCCESS;
}
-ap_status_t ap_add_poll_socket(struct pollfd_t *aprset,
- struct socket_t *sock, ap_int16_t event,
- ap_int32_t pos)
-{
- aprset[pos].sock = sock;
- aprset[pos].events = event;
- return APR_SUCCESS;
-}
+ap_status_t ap_add_poll_socket(struct pollfd_t *aprset,
+ struct socket_t *sock, ap_int16_t event)
+{
+ int i = 0;
+
+ while (i < aprset->curpos && aprset[i].sock->socketdes !=
sock->socketdes) {
+ i++;
+ }
+ if (i >= aprset->curpos) {
+ aprset->curpos++;
+ }
+ aprset[i].sock = sock;
+ aprset[i].events = event;
+ return APR_SUCCESS;
+}
+
ap_status_t ap_poll(struct pollfd_t *pollfdset, ap_int32_t *nsds, ap_int32_t
timeout)
{
int i;
@@ -144,9 +153,16 @@
-ap_status_t ap_get_revents(struct pollfd_t *aprset, ap_int32_t pos,
ap_int16_t *event)
+ap_status_t ap_get_revents(struct pollfd_t *aprset, struct socket_t *sock,
ap_int16_t *event)
{
- (*event) = aprset[pos].revents;
+ int i = 0;
+
+ while (i < aprset->curpos && aprset[i].sock->socketdes !=
sock->socketdes) {
+ i++;
+ }
+ if (i >= aprset->curpos) {
+ return APR_INVALSOCK;
+ }
+ (*event) = aprset[i].revents;
return APR_SUCCESS;
}
-