mturk 2005/04/16 09:45:13 Modified: jni/examples/org/apache/tomcat/jni Echo.java jni/java/org/apache/tomcat/jni Address.java jni/native/src info.c network.c Log: Add Address.getInfo that creates the Sockaddr object. Revision Changes Path 1.6 +12 -3 jakarta-tomcat-connectors/jni/examples/org/apache/tomcat/jni/Echo.java Index: Echo.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/examples/org/apache/tomcat/jni/Echo.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Echo.java 16 Apr 2005 15:47:42 -0000 1.5 +++ Echo.java 16 Apr 2005 16:45:13 -0000 1.6 @@ -75,6 +75,14 @@ pool); serverSock = Socket.create(Socket.APR_INET, Socket.SOCK_STREAM, Socket.APR_PROTO_TCP, pool); + long sa = Address.get(Socket.APR_LOCAL, serverSock); + Sockaddr addr = new Sockaddr(); + if (Address.fill(addr, sa)) { + System.out.println("Host: " + addr.hostname); + System.out.println("Server: " + addr.servname); + System.out.println("IP: " + Address.getip(sa) + + ":" + addr.port); + } Socket.bind(serverSock, inetAddress); Socket.listen(serverSock, 5); } @@ -90,11 +98,12 @@ while (true) { long clientSock = Socket.accept(serverSock, pool); System.out.println("Accepted id: " + i); + try { long sa = Address.get(Socket.APR_REMOTE, clientSock); Sockaddr addr = new Sockaddr(); if (Address.fill(addr, sa)) { - System.out.println("Host: " + Address.getnameinfo(clientSock, 0)); + System.out.println("Host: " + Address.getnameinfo(sa, 0)); System.out.println("IP: " + Address.getip(sa) + ":" + addr.port); } @@ -102,7 +111,7 @@ // Ignore e.printStackTrace(); } - + Socket.timeoutSet(clientSock, 10000000); Worker worker = new Worker(clientSock, i++, this.getClass().getName()); 1.4 +8 -2 jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Address.java Index: Address.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Address.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Address.java 16 Apr 2005 15:46:36 -0000 1.3 +++ Address.java 16 Apr 2005 16:45:13 -0000 1.4 @@ -26,13 +26,19 @@ static public String APR_ANYADDR = "0.0.0.0"; /** - * Fill the Address class from apr_sockaddr_t + * Fill the Sockaddr class from apr_sockaddr_t * @param info Sockaddr class to fill * @param sa Structure pointer */ public static native boolean fill(Sockaddr info, long sa); /** + * Create the Sockaddr object from apr_sockaddr_t + * @param sa Structure pointer + */ + public static native Sockaddr getInfo(long sa); + + /** * Create apr_sockaddr_t from hostname, address family, and port. * @param hostname The hostname or numeric address string to resolve/parse, or * NULL to build an address that corresponds to 0.0.0.0 or :: 1.4 +29 -0 jakarta-tomcat-connectors/jni/native/src/info.c Index: info.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/info.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- info.c 16 Apr 2005 15:46:36 -0000 1.3 +++ info.c 16 Apr 2005 16:45:13 -0000 1.4 @@ -291,3 +291,32 @@ } return rv; } + +TCN_IMPLEMENT_CALL(jobject, Address, getInfo)(TCN_STDARGS, jlong info) +{ + apr_sockaddr_t *i = J2P(info, apr_sockaddr_t *); + jclass aprSockaddrClass; + jmethodID constructorID = 0; + jobject sockaddrObj = NULL; + + UNREFERENCED(o); + + aprSockaddrClass = (*e)->FindClass(e, TCN_AINFO_CLASS); + if (aprSockaddrClass == NULL) + return NULL; + + /* Find the constructor ID */ + constructorID = (*e)->GetMethodID(e, aprSockaddrClass, + "<init>", "()V"); + if (constructorID == NULL) + goto cleanup; + /* Create the APR Error object */ + sockaddrObj = (*e)->NewObject(e, aprSockaddrClass, constructorID); + if (sockaddrObj == NULL) + goto cleanup; + fill_ainfo(e, sockaddrObj, i); +cleanup: + (*e)->DeleteLocalRef(e, aprSockaddrClass); + + return sockaddrObj; +} 1.11 +2 -2 jakarta-tomcat-connectors/jni/native/src/network.c Index: network.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/network.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- network.c 16 Apr 2005 15:46:36 -0000 1.10 +++ network.c 16 Apr 2005 16:45:13 -0000 1.11 @@ -85,11 +85,11 @@ jlong sock) { apr_socket_t *s = J2P(sock, apr_socket_t *); - apr_sockaddr_t *sa; + apr_sockaddr_t *sa = NULL; UNREFERENCED(o); TCN_THROW_IF_ERR(apr_socket_addr_get(&sa, - which, s), sa); + (apr_interface_e)which, s), sa); cleanup: return P2J(sa); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]