You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2006/06/23 19:58:43 UTC

svn commit: r416780 - in /tomcat/connectors/trunk/jni: java/org/apache/tomcat/jni/Socket.java native/src/network.c

Author: mturk
Date: Fri Jun 23 10:58:41 2006
New Revision: 416780

URL: http://svn.apache.org/viewvc?rev=416780&view=rev
Log:
Add APR functions for set/get of user data
associated with the socket. They can be used to
attach the enclosing Java objects with the socket.

Modified:
    tomcat/connectors/trunk/jni/java/org/apache/tomcat/jni/Socket.java
    tomcat/connectors/trunk/jni/native/src/network.c

Modified: tomcat/connectors/trunk/jni/java/org/apache/tomcat/jni/Socket.java
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jni/java/org/apache/tomcat/jni/Socket.java?rev=416780&r1=416779&r2=416780&view=diff
==============================================================================
--- tomcat/connectors/trunk/jni/java/org/apache/tomcat/jni/Socket.java (original)
+++ tomcat/connectors/trunk/jni/java/org/apache/tomcat/jni/Socket.java Fri Jun 23 10:58:41 2006
@@ -525,4 +525,22 @@
      * @param buf The ByteBuffer
      */
     public static native void setrbb(long sock, ByteBuffer buf);
+
+    /**
+     * Set the data associated with the current socket.
+     * @param sock The currently open socket.
+     * @param data The user data to associate with the socket.
+     * @param key The key to associate with the data.
+     * @param cleanup The cleanup to call when the socket is destroyed.
+     */
+      public static native int dataSet(long sock, String key, Object data);
+
+    /**
+     * Return the data associated with the current socket
+     * @param data The user data associated with the socket.
+     * @param key The key to associate with the user data.
+     * @param sock The currently open socket.
+     * @return Data or null in case of error.
+     */
+     public static native Object dataGet(long sock, String key);
 }

Modified: tomcat/connectors/trunk/jni/native/src/network.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jni/native/src/network.c?rev=416780&r1=416779&r2=416780&view=diff
==============================================================================
--- tomcat/connectors/trunk/jni/native/src/network.c (original)
+++ tomcat/connectors/trunk/jni/native/src/network.c Fri Jun 23 10:58:41 2006
@@ -953,7 +953,6 @@
     tcn_socket_t *s = J2P(sock, tcn_socket_t *);
     apr_status_t ss;
     apr_size_t nbytes = (apr_size_t)len;
-    apr_interval_time_t t;
 
     UNREFERENCED_STDARGS;
     TCN_ASSERT(sock != 0);
@@ -1276,6 +1275,40 @@
     UNREFERENCED(args);
     return (jint)APR_ENOTIMPL;
 #endif
+}
+
+
+TCN_IMPLEMENT_CALL(jint, Socket, dataSet)(TCN_STDARGS, jlong sock,
+                                          jstring key, jobject data)
+{
+    tcn_socket_t *s = J2P(sock, tcn_socket_t *);
+    apr_status_t rv = APR_SUCCESS;
+    void *old = NULL;
+    TCN_ALLOC_CSTRING(key);
+
+    UNREFERENCED(o);
+    TCN_ASSERT(sock != 0);
+
+    rv = apr_socket_data_set(s->sock, data, J2S(key), NULL);
+    TCN_FREE_CSTRING(key);
+    return rv;
+}
+
+TCN_IMPLEMENT_CALL(jobject, Socket, dataGet)(TCN_STDARGS, jlong socket,
+                                             jstring key)
+{
+    tcn_socket_t *s = J2P(socket, tcn_socket_t *);
+    TCN_ALLOC_CSTRING(key);
+    jobject rv = NULL;
+
+    UNREFERENCED(o);
+    TCN_ASSERT(sock != 0);
+
+    if (apr_socket_data_get(&rv, J2S(key), s->sock) != APR_SUCCESS) {
+        rv = NULL;
+    }
+    TCN_FREE_CSTRING(key);
+    return rv;
 }
 
 TCN_IMPLEMENT_CALL(jint, Mulicast, join)(TCN_STDARGS,



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org