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]