mturk 2005/04/18 06:53:33
Modified: jni/native/src poll.c
Log:
Instead returning file desriptors, return socket, events and client data in
array offset.
Revision Changes Path
1.7 +9 -5 jakarta-tomcat-connectors/jni/native/src/poll.c
Index: poll.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/poll.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- poll.c 18 Apr 2005 12:33:42 -0000 1.6
+++ poll.c 18 Apr 2005 13:53:33 -0000 1.7
@@ -212,12 +212,15 @@
if (rv != APR_SUCCESS)
return (jint)(-rv);
rv = apr_pollset_poll(p->pollset, J2T(timeout), &num, &fd);
+ apr_thread_mutex_lock(p->mutex);
if (rv != APR_SUCCESS)
num = 0;
if (num > 0) {
for (i = 0; i < num; i++) {
- pset[i] = P2J(fd);
+ pset[i*4+0] = (jlong)(fd->rtnevents);
+ pset[i*4+1] = P2J(fd->desc.s);
+ pset[i*4+2] = P2J(fd->client_data);
fd ++;
}
}
@@ -227,18 +230,19 @@
/* TODO: Add thread mutex protection
* or make sure the Java part is synchronized.
*/
- apr_thread_mutex_lock(p->mutex);
for (n = 0; n < p->nelts; n++) {
if ((now - p->query_ttl[n]) > p->max_ttl) {
p->query_set[n].rtnevents = APR_POLLHUP | APR_POLLIN;
- if (i < p->nelts) {
- pset[i++] = P2J(&(p->query_set[n]));
+ if (num < p->nelts) {
+ pset[num*4+0] = (jlong)(p->query_set[n].rtnevents);
+ pset[num*4+1] = P2J(p->query_set[n].desc.s);
+ pset[num*4+2] = P2J(p->query_set[n].client_data);
num++;
}
}
}
- apr_thread_mutex_unlock(p->mutex);
}
+ apr_thread_mutex_unlock(p->mutex);
if (num)
(*e)->ReleaseLongArrayElements(e, set, pset, 0);
else
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]