mturk 2005/06/14 00:14:00
Modified: jni/java/org/apache/tomcat/jni Poll.java
jni/native/src poll.c
Log:
Add Poll.pollset method to return all the descriptors that are
currently in the Poll.
Revision Changes Path
1.9 +19 -1
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Poll.java
Index: Poll.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Poll.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Poll.java 19 Apr 2005 16:32:11 -0000 1.8
+++ Poll.java 14 Jun 2005 07:14:00 -0000 1.9
@@ -144,4 +144,22 @@
*/
public static native long getTtl(long pollset);
+ /**
+ * Return all descriptor(s) in a pollset
+ * @param pollset The pollset to use
+ * @param descriptors Array of descriptors (output parameter)
+ * The desctiptor array must be four times the size of pollset.
+ * and are populated as follows:
+ * <PRE>
+ * descriptors[n + 0] -> returned events
+ * descriptors[n + 1] -> socket
+ * descriptors[n + 2] -> client data
+ * descriptors[n + 2] -> reserved
+ * </PRE>
+ * @return Number of descriptors (output parameter) in the Poll
+ * or negative APR error code.
+ */
+ public static native int pollset(long pollset, long [] descriptors,
+ boolean remove);
+
}
1.19 +26 -1 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.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- poll.c 10 Jun 2005 07:06:10 -0000 1.18
+++ poll.c 14 Jun 2005 07:14:00 -0000 1.19
@@ -340,3 +340,28 @@
UNREFERENCED_STDARGS;
return (jlong)p->max_ttl;
}
+
+TCN_IMPLEMENT_CALL(jint, Poll, pollset)(TCN_STDARGS, jlong pollset,
+ jlongArray set)
+{
+ tcn_pollset_t *p = J2P(pollset, tcn_pollset_t *);
+ jlong *pset = (*e)->GetLongArrayElements(e, set, NULL);
+ apr_int32_t i = 0;
+ apr_pollfd_t fd;
+
+ UNREFERENCED(o);
+ TCN_ASSERT(pollset != 0);
+
+ for (i = 0; i < p->nelts; i++) {
+ p->socket_set[i].rtnevents = APR_POLLHUP | APR_POLLIN;
+ fd = p->socket_set[i];
+ pset[i*4+0] = (jlong)(fd.rtnevents);
+ pset[i*4+1] = P2J(fd.desc.s);
+ pset[i*4+2] = P2J(fd.client_data);
+ }
+ if (p->nelts)
+ (*e)->ReleaseLongArrayElements(e, set, pset, 0);
+ else
+ (*e)->ReleaseLongArrayElements(e, set, pset, JNI_ABORT);
+ return (jint)p->nelts;
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]