You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by George Harley <ge...@googlemail.com> on 2006/06/27 11:58:10 UTC

Re: svn commit: r417385 - in /incubator/harmony/enhanced/classlib/trunk/modules/nio: ./ make/ src/main/java/org/apache/harmony/nio/ src/main/java/org/apache/harmony/nio/internal/ src/main/native/ src/main/native/nio/ src/main/native/nio/linux/ src/main/nat...

Hi Tim,

I have started to see test errors in my local Windows XP sandbox since 
this commit. In particular there are three tests in the new 
org.apache.harmony.tests.nio.AddressUtilTest class that throw 
java.lang.UnsatisfiedLinkError on account of not being able to locate 
the native implementation of AddressUtil.getFDAddress(FileDescriptor).

Will look at this a bit closer now - maybe it's a screw up in my 
environment - but thought you should know sooner rather than...

Best regards,
George



tellison@apache.org wrote:
> Author: tellison
> Date: Tue Jun 27 02:28:15 2006
> New Revision: 417385
>
> URL: http://svn.apache.org/viewvc?rev=417385&view=rev
> Log:
> Apply patch HARMONY-578 ([classlib][nio] NIO should provide some utility classes for the JNI 1.4 enhancement)
>
> Added:
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java   (with props)
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/   (with props)
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c   (with props)
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c   (with props)
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/   (with props)
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java   (with props)
> Modified:
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>     incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>
> Modified: incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml?rev=417385&r1=417384&r2=417385&view=diff
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml (original)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml Tue Jun 27 02:28:15 2006
> @@ -39,12 +39,39 @@
>  
>      <target name="test" depends="build, compile.tests, run.tests" />
>  
> +     <!-- Build natives.-->
> +     <target name="build.native">
> + 	<exec failonerror="true" 
> +               executable="${make.command}" 
> +               dir="${hy.nio.src.main.native}/nio/${hy.os}">
> +             <env key="HY_HDK" value="${hy.hdk}" />
> +         </exec>
> + 
> + 	<!-- Copy the built shared libs over to the jre/bin dir -->
> + 	<copy todir="${hy.jdk}/jre/bin" overwrite="yes">
> +             <fileset dir="${hy.nio.src.main.native}/nio">
> +                 <patternset includes="*${shlib.suffix}*" />
> +             </fileset>
> +         </copy>
> +     </target>
> +
>      <target name="clean">
>          <delete includeemptydirs="true" failonerror="false">
>              <fileset refid="classes" />
>              <fileset dir="${hy.nio.bin.test}" />
>          </delete>
>      </target>
> +
> +     <!-- Clean natives. -->
> +     <target name="clean.native">
> + 	<exec failonerror="true" 
> +               executable="${make.command}" 
> +               dir="${hy.nio.src.main.native}/nio/${hy.os}">
> +             <env key="HY_HDK" value="${hy.hdk}" />
> + 	    <arg line="clean" />
> +         </exec>
> +     </target>
> +
>  
>      <target name="compile.java">
>          <echo message="Compiling NIO classes" />
>
> Modified: incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml?rev=417385&r1=417384&r2=417385&view=diff
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml (original)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml Tue Jun 27 02:28:15 2006
> @@ -21,6 +21,7 @@
>           <main>
>              <java location="src/main/java" />
>          	<resources location="src/main/resources" />
> +        	<native location="src/main/native" />
>           </main>
>           <test>
>              <java location="src/test/java" />
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,68 @@
> +/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> + * 
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + * 
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + * 
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +package org.apache.harmony.nio;
> +
> +import java.io.FileDescriptor;
> +import java.nio.Buffer;
> +import java.nio.channels.Channel;
> +
> +import org.apache.harmony.luni.platform.FileDescriptorHandler;
> +import org.apache.harmony.nio.internal.DirectBuffer;
> +import org.apache.harmony.nio.internal.FileChannelImpl;
> +
> +public class AddressUtil {
> +
> +    /**
> +     * Gets the address of a direct buffer.
> +     * 
> +     * @param buf
> +     *            the direct buffer whose address shall be return
> +     * @return the address of the buffer given
> +     */
> +    public static long getDirectBufferAddress(Buffer buf) {
> +        if (!(buf instanceof DirectBuffer)) {
> +            return 0;
> +        }
> +        return ((DirectBuffer) buf).getBaseAddress().toLong();
> +    }
> +    
> +    /**
> +     * Gets the address of native resource held by the given channel, if has any.
> +     * 
> +     * For network related channel, including SocketChannel, ServerSocketChannel 
> +     * and DatagramChannel, this method returns a int of Socket handler in Linux 
> +     * while returns a SOCKET (UINT_PTR) in windows.
> +     * 
> +     * For FileChannel, this method returns the native file descriptor.
> +     * 
> +     * For other channels, this method return 0, which means unsupported operation.
> +     * 
> +     * @param channel
> +     *            the given channel which may holds a native resource address
> +     * @return the address of native resource held by the given channel, if any, 
> +     *         otherwise return 0
> +     */
> +    public static long getChannelAddress(Channel channel){
> +        if(channel instanceof FileDescriptorHandler){
> +            return getFDAddress(((FileDescriptorHandler) channel).getFD());    
> +        }else if(channel instanceof FileChannelImpl){
> +            return ((FileChannelImpl) channel).getHandle();    
> +        }
> +        return 0;
> +    }
> +
> +    private static native long getFDAddress(FileDescriptor fd);
> +}
> \ No newline at end of file
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Modified: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java?rev=417385&r1=417384&r2=417385&view=diff
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java (original)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java Tue Jun 27 02:28:15 2006
> @@ -596,4 +596,8 @@
>          }
>          return bytesWritten;
>      }
> +    
> +    public long getHandle(){
> +        return handle;
> +    }
>  }
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,8 @@
> +HYNIO_0.1 {
> +	global :
> +		NewDirectByteBuffer;
> +		GetDirectBufferAddress;
> +		GetDirectBufferCapacity;
> +		Java_org_apache_harmony_nio_AddressUtil_getFDAddress;
> +	local : *;
> +};
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,32 @@
> +# Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> +# 
> +# Licensed under the Apache License, Version 2.0 (the "License");
> +# you may not use this file except in compliance with the License.
> +# You may obtain a copy of the License at
> +# 
> +#     http://www.apache.org/licenses/LICENSE-2.0
> +# 
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS,
> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +# See the License for the specific language governing permissions and
> +# limitations under the License.
> +
> +#
> +# Makefile for module 'nio'
> +#
> +
> +include $(HY_HDK)/build/make/makefile.include
> +
> +CFLAGS += -fpic -I$(SHARED)common -I$(SHARED)fdlibm
> +
> +BUILDFILES = \
> +	../shared/DirectBufferUtil.o ../shared/AddressUtil.o 
> +
> +MDLLIBFILES = \
> +	$(LIBPATH)libhycommon.a $(LIBPATH)libhyzip.a \
> +	$(LIBPATH)libhypool.a $(LIBPATH)libhyfdlibm.a
> +
> +DLLNAME = ../libhynio.so
> +
> +include $(HY_HDK)/build/make/rules.mk
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Tue Jun 27 02:28:15 2006
> @@ -0,0 +1 @@
> +*.obj
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,43 @@
> +/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> + * 
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + * 
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + * 
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +#include "hysock.h"
> +#include "AddressUtil.h"
> +
> +/*
> + * Class:     org_apache_harmony_nio_AddressUtil
> + * Method:    getFDAddress
> + * Signature: (Ljava/io/FileDescriptor;)J
> + */
> +JNIEXPORT jlong JNICALL Java_org_apache_harmony_nio_AddressUtil_getFDAddress
> +  (JNIEnv * env, jclass clz, jobject fd){
> +	jclass descriptorCLS;
> +	jfieldID descriptorFID;
> +	hysocket_t hysocketP;
> +	//TODO add to cache
> +	descriptorCLS = (*env)->FindClass (env, "java/io/FileDescriptor");
> +	if (NULL == descriptorCLS){
> +		return 0;
> +	}
> +	descriptorFID = (*env)->GetFieldID (env, descriptorCLS, "descriptor", "J");
> +	if (NULL == descriptorFID){
> +		return 0;
> +	}
> +	hysocketP = (hysocket_t) ((*env)->GetLongField (env, fd, descriptorFID));
> +	return SOCKET_CAST(hysocketP);
> +}
> +
> +
> +
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,36 @@
> +/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> + * 
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + * 
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + * 
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +/* DO NOT EDIT THIS FILE - it is machine generated */
> +#include <jni.h>
> +/* Header for class org_apache_harmony_nio_AddressUtil */
> +
> +#ifndef _Included_org_apache_harmony_nio_AddressUtil
> +#define _Included_org_apache_harmony_nio_AddressUtil
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +/*
> + * Class:     org_apache_harmony_nio_AddressUtil
> + * Method:    getFDAddress
> + * Signature: (Ljava/io/FileDescriptor;)J
> + */
> +JNIEXPORT jlong JNICALL Java_org_apache_harmony_nio_AddressUtil_getFDAddress
> +  (JNIEnv *, jclass, jobject);
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +#endif
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,119 @@
> +/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> + * 
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + * 
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + * 
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +#include <jni.h>
> +
> +/*
> + * For JNI
> + * Method:    NewDirectByteBuffer
> + * Signature: (JJ)Ljava/nio/ByteBuffer;
> + */
> +jobject NewDirectByteBuffer
> +  (JNIEnv * env, jlong address, jlong capacity){
> +	  jmethodID newBufferMethod;
> +	  jclass directBufferClass;
> +	  jclass platformaddressClass;
> +	  jobject platformaddress;
> +	  jmethodID onMethod;
> +          directBufferClass = (*env)->FindClass (env, "java/nio/ReadWriteDirectByteBuffer");
> +	  if (!directBufferClass){
> +	      	  return NULL;
> +	  }
> +	  newBufferMethod = (*env)->GetMethodID (env, directBufferClass, "<init>",
> +             "(Lorg/apache/harmony/luni/platform/PlatformAddress;II)V");
> +	  if (!newBufferMethod){
> +	      	  return NULL;
> +	  }
> +	  platformaddressClass = (*env)->FindClass (env, "org/apache/harmony/luni/platform/PlatformAddress");
> +	  if (!platformaddressClass){
> +	      	  return NULL;
> +	  }
> +	  onMethod = (*env)->GetStaticMethodID (env, platformaddressClass, "on",
> +             "(J)Lorg/apache/harmony/luni/platform/PlatformAddress;");
> +	  if (!onMethod){
> +	      	  return NULL;
> +	  }
> +	  platformaddress = (*env)->CallStaticObjectMethod(env, platformaddressClass, onMethod, address);
> +	  return (*env)->NewObject(env, directBufferClass, newBufferMethod, platformaddress, capacity, 0);
> +  }
> +
> +/*
> + * For JNI
> + * Method:    GetDirectBufferAddress
> + * Signature: (Ljava/nio/Buffer;)J
> + */
> +jlong GetDirectBufferAddress
> +  (JNIEnv * env, jobject buf){
> +	  jmethodID tempMethod;
> +	  jclass tempClass;
> +	  jobject platformAddr;
> +	  jclass platformAddrClass;
> +	  jmethodID toLongMethod;
> +	  
> +          tempClass = (*env)->FindClass (env, "org/apache/harmony/nio/internal/DirectBuffer");
> +	  if (!tempClass){
> +	      	  return 0;
> +	  }
> +	  if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, tempClass)){
> +		  return 0;
> +	  }	  
> +	  tempMethod = (*env)->GetMethodID (env, tempClass, "getBaseAddress",
> +             "()Lorg/apache/harmony/luni/platform/PlatformAddress;");	  	  
> +	  if (!tempMethod){
> +	      	  return 0;
> +	  }	  
> +	  platformAddr = (*env)->CallObjectMethod(env, buf, tempMethod);
> +	  platformAddrClass = (*env)->FindClass (env, "org/apache/harmony/luni/platform/PlatformAddress");
> +	  if (!platformAddrClass){
> +	      	  return 0;
> +	  }
> +	  toLongMethod = (*env)->GetMethodID (env, platformAddrClass, "toLong",
> +             "()J");
> +	  if (!toLongMethod){
> +	      	  return 0;
> +	  }
> +	  return  (*env)->CallLongMethod(env, platformAddr, toLongMethod);	  
> +  }
> +
> +/*
> + * For JNI
> + * Method:    GetDirectBufferCapacity
> + * Signature: (Ljava/nio/Buffer;)J
> + */
> +jlong GetDirectBufferCapacity
> +  (JNIEnv * env, jobject buf){
> +	  jfieldID fieldCapacity;
> +	  jclass directBufferClass;
> +	  jclass bufferClass;
> +          directBufferClass = (*env)->FindClass (env, "org/apache/harmony/nio/internal/DirectBuffer");
> +	  if (!directBufferClass){
> +	      	  return -1;
> +	  }
> +	  if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, directBufferClass)){
> +		  return -1;
> +	  }
> +	  bufferClass = (*env)->FindClass (env, "java/nio/Buffer");
> +	  if (!bufferClass){
> +	      	  return -1;
> +	  }
> +	  fieldCapacity = (*env)->GetFieldID (env, bufferClass, "capacity",
> +             "I");
> +	  if (!fieldCapacity){
> +	      	  return -1;
> +	  }
> +	  return (*env)->GetIntField(env, buf, fieldCapacity);
> +  }
> +
> +
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,2 @@
> +*.RES
> +*.pdb
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,12 @@
> +LIBRARY	HYNIO
> +
> +SECTIONS
> +	.data	READ WRITE
> +	.text	EXECUTE READ
> +
> +EXPORTS
> +	Java_org_apache_harmony_nio_AddressUtil_getFDAddress
> +	NewDirectByteBuffer
> +	GetDirectBufferAddress
> +	GetDirectBufferCapacity
> +
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,47 @@
> +;
> +; Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> +; 
> +; Licensed under the Apache License, Version 2.0 (the "License");
> +; you may not use this file except in compliance with the License.
> +; You may obtain a copy of the License at
> +; 
> +;     http://www.apache.org/licenses/LICENSE-2.0
> +; 
> +; Unless required by applicable law or agreed to in writing, software
> +; distributed under the License is distributed on an "AS IS" BASIS,
> +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +; See the License for the specific language governing permissions and
> +; limitations under the License.
> +;
> +
> +#include <windows.h>
> +#include <winver.h>
> +
> +VS_VERSION_INFO VERSIONINFO
> + FILEVERSION 0,1,0,0
> + PRODUCTVERSION 0,1,0,0
> + FILEFLAGSMASK 0x3fL
> + FILEFLAGS 0x0L
> + FILEOS VOS_NT_WINDOWS32
> + FILETYPE VFT_DLL
> + FILESUBTYPE 0x0L
> +BEGIN
> +	BLOCK "StringFileInfo"
> +	BEGIN
> +		BLOCK "040904b0"
> +		BEGIN
> +			VALUE "CompanyName", "The Apache Software Foundation.\0"
> +			VALUE "FileDescription", "NIO native code\0"
> +			VALUE "FileVersion", "0.1\0"
> +			VALUE "InternalName", "nio\0"
> +			VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable.\0"
> +			VALUE "OriginalFilename", "hynio.dll\0"
> +			VALUE "ProductName", "Apache Harmony\0"
> +			VALUE "ProductVersion", "0.1\0"
> +		END
> +	END
> +	BLOCK "VarFileInfo"
> +	BEGIN
> +		VALUE "Translation", 0x0409, 1200
> +	END
> +END
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,41 @@
> +# Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> +# 
> +# Licensed under the Apache License, Version 2.0 (the "License");
> +# you may not use this file except in compliance with the License.
> +# You may obtain a copy of the License at
> +# 
> +#     http://www.apache.org/licenses/LICENSE-2.0
> +# 
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS,
> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +# See the License for the specific language governing permissions and
> +# limitations under the License.
> +
> +#
> +# Makefile for module 'nio'
> +#
> +
> +!include <$(HY_HDK)\build\make\defines.mak>
> +
> +SHAREDSUB=..\shared\# comment to avoid \ being treated as continuation
> +LIBBASE=hynio
> +DLLNAME=$(DLLPATH)$(LIBBASE).dll
> +LIBNAME=$(LIBPATH)$(LIBBASE).lib
> +HYCFLAGS = $(HYCFLAGS) /I$(SHAREDSUB) /I$(SHARED)common /I$(SHARED)fdlibm
> +HYLDFLAGS = $(HYLDFLAGS) -def:$(LIBBASE).def
> +
> +BUILDFILES = \
> +  $(SHAREDSUB)DirectBufferUtil.obj $(SHAREDSUB)AddressUtil.obj
> +VIRTFILES = hynio.res
> +
> +SYSLIBFILES = ws2_32.lib Iphlpapi.lib
> +
> +MDLLIBFILES = \
> +  $(LIBPATH)hycommon.lib $(LIBPATH)hysig.lib $(LIBPATH)hyzip.lib $(LIBPATH)hyzlib.lib \
> +  $(LIBPATH)hypool.lib $(LIBPATH)hyfdlibm.lib $(LIBPATH)hythr.lib $(LIBPATH)vmi.lib
> +  
> +DLLBASE=0x13200000
> +COMMENT=/comment:"nio component native code. (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable."
> +
> +!include <$(HY_HDK)\build\make\rules.mak>
>
> Added: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
> URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java?rev=417385&view=auto
> ==============================================================================
> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java (added)
> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java Tue Jun 27 02:28:15 2006
> @@ -0,0 +1,89 @@
> +/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
> + * 
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + * 
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + * 
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +package org.apache.harmony.tests.nio;
> +
> +import java.io.FileInputStream;
> +import java.io.IOException;
> +import java.nio.ByteBuffer;
> +import java.nio.channels.Channel;
> +import java.nio.channels.DatagramChannel;
> +import java.nio.channels.FileChannel;
> +import java.nio.channels.ServerSocketChannel;
> +import java.nio.channels.SocketChannel;
> +
> +import junit.framework.TestCase;
> +
> +import org.apache.harmony.nio.AddressUtil;
> +
> +public class AddressUtilTest extends TestCase {
> +    
> +    /**
> +     * @tests AddressUtil#getDirectBufferAddress
> +     */
> +    public void test_getDirectBufferAddress() throws Exception {
> +        ByteBuffer buf = ByteBuffer.allocateDirect(10);
> +        assertTrue(AddressUtil.getDirectBufferAddress(buf) != 0);
> +    }
> +    
> +    /**
> +     * @tests AddressUtil#getChannelAddress
> +     */
> +    public void test_getFileChannelAddress() throws Exception {
> +//        FileChannel fc = new FileInputStream("src/main/java/org/apache/harmony/nio/AddressUtil.java").getChannel();
> +//        assertTrue(AddressUtil.getChannelAddress(fc) > 0);
> +    }
> +    
> +    /**
> +     * @tests AddressUtil#getChannelAddress
> +     */
> +    public void test_getSocketChannelAddress() throws Exception {
> +        SocketChannel sc = SocketChannel.open();
> +        assertTrue(AddressUtil.getChannelAddress(sc)>0);
> +    }
> +    
> +    /**
> +     * @tests AddressUtil#getChannelAddress
> +     */
> +    public void test_getDatagramChannelAddress() throws Exception {
> +        DatagramChannel dc = DatagramChannel.open();
> +        assertTrue(AddressUtil.getChannelAddress(dc)>0);
> +    }
> +    
> +    /**
> +     * @tests AddressUtil#getChannelAddress
> +     */
> +    public void test_getServerSocketChannelAddress() throws Exception {
> +        ServerSocketChannel ssc = ServerSocketChannel.open();
> +        assertTrue(AddressUtil.getChannelAddress(ssc)>0);
> +    }  
> +    
> +    /**
> +     * @tests AddressUtil#getChannelAddress
> +     */
> +    public void test_getNonNativeChannelAddress() throws Exception{
> +        Channel channel = new MockChannel();
> +        assertEquals(0, AddressUtil.getChannelAddress(channel));
> +    }
> +    
> +    private static class MockChannel implements Channel{
> +        public boolean isOpen() {
> +            return false;
> +        }
> +        public void close() throws IOException {
> +        }
> +    }
> +}
> +    
>
> Propchange: incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
>
>
>   


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: svn commit: r417385 - in /incubator/harmony/enhanced/classlib/trunk/modules/nio: ./ make/ src/main/java/org/apache/harmony/nio/ src/main/java/org/apache/harmony/nio/internal/ src/main/native/ src/main/native/nio/ src/main/native/nio/linux/ src/main/nat...

Posted by Geir Magnusson Jr <ge...@pobox.com>.

Tim Ellison wrote:
> I messed up my commit by commiting at modules/ level when there were
> also changes in native-src/  -- sorry about that.

Eh.  You caught it :)

> 
> It's not been a good week already.
> 
> Regards,
> Tim
> 
> George Harley wrote:
>> Hi Tim,
>>
>> Fixed by your revision 417397 change. Looks like I just chose a bad time
>> to update from the repository.
>>
>> Thanks,
>> George
>>
>>
>>
>> George Harley wrote:
>>> Hi Tim,
>>>
>>> I have started to see test errors in my local Windows XP sandbox since
>>> this commit. In particular there are three tests in the new
>>> org.apache.harmony.tests.nio.AddressUtilTest class that throw
>>> java.lang.UnsatisfiedLinkError on account of not being able to locate
>>> the native implementation of AddressUtil.getFDAddress(FileDescriptor).
>>>
>>> Will look at this a bit closer now - maybe it's a screw up in my
>>> environment - but thought you should know sooner rather than...
>>>
>>> Best regards,
>>> George
>>>
>>>
>>>
>>> tellison@apache.org wrote:
>>>> Author: tellison
>>>> Date: Tue Jun 27 02:28:15 2006
>>>> New Revision: 417385
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=417385&view=rev
>>>> Log:
>>>> Apply patch HARMONY-578 ([classlib][nio] NIO should provide some
>>>> utility classes for the JNI 1.4 enhancement)
>>>>
>>>> Added:
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java  
>>>> (with props)
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/  
>>>> (with props)
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c  
>>>> (with props)
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c  
>>>> (with props)
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/  
>>>> (with props)
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java  
>>>> (with props)
>>>> Modified:
>>>>     incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>>
>>>>    
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>>
>>>>
>>>> Modified:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml?rev=417385&r1=417384&r2=417385&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>>> (original)
>>>> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -39,12 +39,39 @@
>>>>  
>>>>      <target name="test" depends="build, compile.tests, run.tests" />
>>>>  
>>>> +     <!-- Build natives.-->
>>>> +     <target name="build.native">
>>>> +     <exec failonerror="true" +              
>>>> executable="${make.command}" +              
>>>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>>>> +             <env key="HY_HDK" value="${hy.hdk}" />
>>>> +         </exec>
>>>> + +     <!-- Copy the built shared libs over to the jre/bin dir -->
>>>> +     <copy todir="${hy.jdk}/jre/bin" overwrite="yes">
>>>> +             <fileset dir="${hy.nio.src.main.native}/nio">
>>>> +                 <patternset includes="*${shlib.suffix}*" />
>>>> +             </fileset>
>>>> +         </copy>
>>>> +     </target>
>>>> +
>>>>      <target name="clean">
>>>>          <delete includeemptydirs="true" failonerror="false">
>>>>              <fileset refid="classes" />
>>>>              <fileset dir="${hy.nio.bin.test}" />
>>>>          </delete>
>>>>      </target>
>>>> +
>>>> +     <!-- Clean natives. -->
>>>> +     <target name="clean.native">
>>>> +     <exec failonerror="true" +              
>>>> executable="${make.command}" +              
>>>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>>>> +             <env key="HY_HDK" value="${hy.hdk}" />
>>>> +         <arg line="clean" />
>>>> +         </exec>
>>>> +     </target>
>>>> +
>>>>  
>>>>      <target name="compile.java">
>>>>          <echo message="Compiling NIO classes" />
>>>>
>>>> Modified:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml?rev=417385&r1=417384&r2=417385&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>> (original)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -21,6 +21,7 @@
>>>>           <main>
>>>>              <java location="src/main/java" />
>>>>              <resources location="src/main/resources" />
>>>> +            <native location="src/main/native" />
>>>>           </main>
>>>>           <test>
>>>>              <java location="src/test/java" />
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,68 @@
>>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>>> as applicable
>>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>>> + * you may not use this file except in compliance with the License.
>>>> + * You may obtain a copy of the License at
>>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>>> + * + * Unless required by applicable law or agreed to in writing,
>>>> software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +
>>>> +package org.apache.harmony.nio;
>>>> +
>>>> +import java.io.FileDescriptor;
>>>> +import java.nio.Buffer;
>>>> +import java.nio.channels.Channel;
>>>> +
>>>> +import org.apache.harmony.luni.platform.FileDescriptorHandler;
>>>> +import org.apache.harmony.nio.internal.DirectBuffer;
>>>> +import org.apache.harmony.nio.internal.FileChannelImpl;
>>>> +
>>>> +public class AddressUtil {
>>>> +
>>>> +    /**
>>>> +     * Gets the address of a direct buffer.
>>>> +     * +     * @param buf
>>>> +     *            the direct buffer whose address shall be return
>>>> +     * @return the address of the buffer given
>>>> +     */
>>>> +    public static long getDirectBufferAddress(Buffer buf) {
>>>> +        if (!(buf instanceof DirectBuffer)) {
>>>> +            return 0;
>>>> +        }
>>>> +        return ((DirectBuffer) buf).getBaseAddress().toLong();
>>>> +    }
>>>> +    +    /**
>>>> +     * Gets the address of native resource held by the given
>>>> channel, if has any.
>>>> +     * +     * For network related channel, including SocketChannel,
>>>> ServerSocketChannel +     * and DatagramChannel, this method returns
>>>> a int of Socket handler in Linux +     * while returns a SOCKET
>>>> (UINT_PTR) in windows.
>>>> +     * +     * For FileChannel, this method returns the native file
>>>> descriptor.
>>>> +     * +     * For other channels, this method return 0, which means
>>>> unsupported operation.
>>>> +     * +     * @param channel
>>>> +     *            the given channel which may holds a native
>>>> resource address
>>>> +     * @return the address of native resource held by the given
>>>> channel, if any, +     *         otherwise return 0
>>>> +     */
>>>> +    public static long getChannelAddress(Channel channel){
>>>> +        if(channel instanceof FileDescriptorHandler){
>>>> +            return getFDAddress(((FileDescriptorHandler)
>>>> channel).getFD());    +        }else if(channel instanceof
>>>> FileChannelImpl){
>>>> +            return ((FileChannelImpl) channel).getHandle();   
>>>> +        }
>>>> +        return 0;
>>>> +    }
>>>> +
>>>> +    private static native long getFDAddress(FileDescriptor fd);
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>>     svn:eol-style = native
>>>>
>>>> Modified:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java?rev=417385&r1=417384&r2=417385&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>> (original)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -596,4 +596,8 @@
>>>>          }
>>>>          return bytesWritten;
>>>>      }
>>>> +    +    public long getHandle(){
>>>> +        return handle;
>>>> +    }
>>>>  }
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,8 @@
>>>> +HYNIO_0.1 {
>>>> +    global :
>>>> +        NewDirectByteBuffer;
>>>> +        GetDirectBufferAddress;
>>>> +        GetDirectBufferCapacity;
>>>> +        Java_org_apache_harmony_nio_AddressUtil_getFDAddress;
>>>> +    local : *;
>>>> +};
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,32 @@
>>>> +# Copyright 2006 The Apache Software Foundation or its licensors, as
>>>> applicable
>>>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>>>> +# you may not use this file except in compliance with the License.
>>>> +# You may obtain a copy of the License at
>>>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>>>> +# +# Unless required by applicable law or agreed to in writing,
>>>> software
>>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> +# See the License for the specific language governing permissions and
>>>> +# limitations under the License.
>>>> +
>>>> +#
>>>> +# Makefile for module 'nio'
>>>> +#
>>>> +
>>>> +include $(HY_HDK)/build/make/makefile.include
>>>> +
>>>> +CFLAGS += -fpic -I$(SHARED)common -I$(SHARED)fdlibm
>>>> +
>>>> +BUILDFILES = \
>>>> +    ../shared/DirectBufferUtil.o ../shared/AddressUtil.o +
>>>> +MDLLIBFILES = \
>>>> +    $(LIBPATH)libhycommon.a $(LIBPATH)libhyzip.a \
>>>> +    $(LIBPATH)libhypool.a $(LIBPATH)libhyfdlibm.a
>>>> +
>>>> +DLLNAME = ../libhynio.so
>>>> +
>>>> +include $(HY_HDK)/build/make/rules.mk
>>>>
>>>> Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>> --- svn:ignore (added)
>>>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1 @@
>>>> +*.obj
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,43 @@
>>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>>> as applicable
>>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>>> + * you may not use this file except in compliance with the License.
>>>> + * You may obtain a copy of the License at
>>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>>> + * + * Unless required by applicable law or agreed to in writing,
>>>> software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +
>>>> +#include "hysock.h"
>>>> +#include "AddressUtil.h"
>>>> +
>>>> +/*
>>>> + * Class:     org_apache_harmony_nio_AddressUtil
>>>> + * Method:    getFDAddress
>>>> + * Signature: (Ljava/io/FileDescriptor;)J
>>>> + */
>>>> +JNIEXPORT jlong JNICALL
>>>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>>> +  (JNIEnv * env, jclass clz, jobject fd){
>>>> +    jclass descriptorCLS;
>>>> +    jfieldID descriptorFID;
>>>> +    hysocket_t hysocketP;
>>>> +    //TODO add to cache
>>>> +    descriptorCLS = (*env)->FindClass (env, "java/io/FileDescriptor");
>>>> +    if (NULL == descriptorCLS){
>>>> +        return 0;
>>>> +    }
>>>> +    descriptorFID = (*env)->GetFieldID (env, descriptorCLS,
>>>> "descriptor", "J");
>>>> +    if (NULL == descriptorFID){
>>>> +        return 0;
>>>> +    }
>>>> +    hysocketP = (hysocket_t) ((*env)->GetLongField (env, fd,
>>>> descriptorFID));
>>>> +    return SOCKET_CAST(hysocketP);
>>>> +}
>>>> +
>>>> +
>>>> +
>>>>
>>>> Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>>     svn:eol-style = native
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,36 @@
>>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>>> as applicable
>>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>>> + * you may not use this file except in compliance with the License.
>>>> + * You may obtain a copy of the License at
>>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>>> + * + * Unless required by applicable law or agreed to in writing,
>>>> software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +
>>>> +/* DO NOT EDIT THIS FILE - it is machine generated */
>>>> +#include <jni.h>
>>>> +/* Header for class org_apache_harmony_nio_AddressUtil */
>>>> +
>>>> +#ifndef _Included_org_apache_harmony_nio_AddressUtil
>>>> +#define _Included_org_apache_harmony_nio_AddressUtil
>>>> +#ifdef __cplusplus
>>>> +extern "C" {
>>>> +#endif
>>>> +/*
>>>> + * Class:     org_apache_harmony_nio_AddressUtil
>>>> + * Method:    getFDAddress
>>>> + * Signature: (Ljava/io/FileDescriptor;)J
>>>> + */
>>>> +JNIEXPORT jlong JNICALL
>>>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>>> +  (JNIEnv *, jclass, jobject);
>>>> +
>>>> +#ifdef __cplusplus
>>>> +}
>>>> +#endif
>>>> +#endif
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,119 @@
>>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>>> as applicable
>>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>>> + * you may not use this file except in compliance with the License.
>>>> + * You may obtain a copy of the License at
>>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>>> + * + * Unless required by applicable law or agreed to in writing,
>>>> software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +
>>>> +#include <jni.h>
>>>> +
>>>> +/*
>>>> + * For JNI
>>>> + * Method:    NewDirectByteBuffer
>>>> + * Signature: (JJ)Ljava/nio/ByteBuffer;
>>>> + */
>>>> +jobject NewDirectByteBuffer
>>>> +  (JNIEnv * env, jlong address, jlong capacity){
>>>> +      jmethodID newBufferMethod;
>>>> +      jclass directBufferClass;
>>>> +      jclass platformaddressClass;
>>>> +      jobject platformaddress;
>>>> +      jmethodID onMethod;
>>>> +          directBufferClass = (*env)->FindClass (env,
>>>> "java/nio/ReadWriteDirectByteBuffer");
>>>> +      if (!directBufferClass){
>>>> +                return NULL;
>>>> +      }
>>>> +      newBufferMethod = (*env)->GetMethodID (env, directBufferClass,
>>>> "<init>",
>>>> +            
>>>> "(Lorg/apache/harmony/luni/platform/PlatformAddress;II)V");
>>>> +      if (!newBufferMethod){
>>>> +                return NULL;
>>>> +      }
>>>> +      platformaddressClass = (*env)->FindClass (env,
>>>> "org/apache/harmony/luni/platform/PlatformAddress");
>>>> +      if (!platformaddressClass){
>>>> +                return NULL;
>>>> +      }
>>>> +      onMethod = (*env)->GetStaticMethodID (env,
>>>> platformaddressClass, "on",
>>>> +             "(J)Lorg/apache/harmony/luni/platform/PlatformAddress;");
>>>> +      if (!onMethod){
>>>> +                return NULL;
>>>> +      }
>>>> +      platformaddress = (*env)->CallStaticObjectMethod(env,
>>>> platformaddressClass, onMethod, address);
>>>> +      return (*env)->NewObject(env, directBufferClass,
>>>> newBufferMethod, platformaddress, capacity, 0);
>>>> +  }
>>>> +
>>>> +/*
>>>> + * For JNI
>>>> + * Method:    GetDirectBufferAddress
>>>> + * Signature: (Ljava/nio/Buffer;)J
>>>> + */
>>>> +jlong GetDirectBufferAddress
>>>> +  (JNIEnv * env, jobject buf){
>>>> +      jmethodID tempMethod;
>>>> +      jclass tempClass;
>>>> +      jobject platformAddr;
>>>> +      jclass platformAddrClass;
>>>> +      jmethodID toLongMethod;
>>>> +      +          tempClass = (*env)->FindClass (env,
>>>> "org/apache/harmony/nio/internal/DirectBuffer");
>>>> +      if (!tempClass){
>>>> +                return 0;
>>>> +      }
>>>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, tempClass)){
>>>> +          return 0;
>>>> +      }      +      tempMethod = (*env)->GetMethodID (env,
>>>> tempClass, "getBaseAddress",
>>>> +            
>>>> "()Lorg/apache/harmony/luni/platform/PlatformAddress;");           
>>>> +      if (!tempMethod){
>>>> +                return 0;
>>>> +      }      +      platformAddr = (*env)->CallObjectMethod(env,
>>>> buf, tempMethod);
>>>> +      platformAddrClass = (*env)->FindClass (env,
>>>> "org/apache/harmony/luni/platform/PlatformAddress");
>>>> +      if (!platformAddrClass){
>>>> +                return 0;
>>>> +      }
>>>> +      toLongMethod = (*env)->GetMethodID (env, platformAddrClass,
>>>> "toLong",
>>>> +             "()J");
>>>> +      if (!toLongMethod){
>>>> +                return 0;
>>>> +      }
>>>> +      return  (*env)->CallLongMethod(env, platformAddr,
>>>> toLongMethod);      +  }
>>>> +
>>>> +/*
>>>> + * For JNI
>>>> + * Method:    GetDirectBufferCapacity
>>>> + * Signature: (Ljava/nio/Buffer;)J
>>>> + */
>>>> +jlong GetDirectBufferCapacity
>>>> +  (JNIEnv * env, jobject buf){
>>>> +      jfieldID fieldCapacity;
>>>> +      jclass directBufferClass;
>>>> +      jclass bufferClass;
>>>> +          directBufferClass = (*env)->FindClass (env,
>>>> "org/apache/harmony/nio/internal/DirectBuffer");
>>>> +      if (!directBufferClass){
>>>> +                return -1;
>>>> +      }
>>>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf,
>>>> directBufferClass)){
>>>> +          return -1;
>>>> +      }
>>>> +      bufferClass = (*env)->FindClass (env, "java/nio/Buffer");
>>>> +      if (!bufferClass){
>>>> +                return -1;
>>>> +      }
>>>> +      fieldCapacity = (*env)->GetFieldID (env, bufferClass, "capacity",
>>>> +             "I");
>>>> +      if (!fieldCapacity){
>>>> +                return -1;
>>>> +      }
>>>> +      return (*env)->GetIntField(env, buf, fieldCapacity);
>>>> +  }
>>>> +
>>>> +
>>>>
>>>> Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>>     svn:eol-style = native
>>>>
>>>> Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>> --- svn:ignore (added)
>>>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,2 @@
>>>> +*.RES
>>>> +*.pdb
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,12 @@
>>>> +LIBRARY    HYNIO
>>>> +
>>>> +SECTIONS
>>>> +    .data    READ WRITE
>>>> +    .text    EXECUTE READ
>>>> +
>>>> +EXPORTS
>>>> +    Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>>> +    NewDirectByteBuffer
>>>> +    GetDirectBufferAddress
>>>> +    GetDirectBufferCapacity
>>>> +
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,47 @@
>>>> +;
>>>> +; Copyright 2006 The Apache Software Foundation or its licensors, as
>>>> applicable
>>>> +; +; Licensed under the Apache License, Version 2.0 (the "License");
>>>> +; you may not use this file except in compliance with the License.
>>>> +; You may obtain a copy of the License at
>>>> +; +;     http://www.apache.org/licenses/LICENSE-2.0
>>>> +; +; Unless required by applicable law or agreed to in writing,
>>>> software
>>>> +; distributed under the License is distributed on an "AS IS" BASIS,
>>>> +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> +; See the License for the specific language governing permissions and
>>>> +; limitations under the License.
>>>> +;
>>>> +
>>>> +#include <windows.h>
>>>> +#include <winver.h>
>>>> +
>>>> +VS_VERSION_INFO VERSIONINFO
>>>> + FILEVERSION 0,1,0,0
>>>> + PRODUCTVERSION 0,1,0,0
>>>> + FILEFLAGSMASK 0x3fL
>>>> + FILEFLAGS 0x0L
>>>> + FILEOS VOS_NT_WINDOWS32
>>>> + FILETYPE VFT_DLL
>>>> + FILESUBTYPE 0x0L
>>>> +BEGIN
>>>> +    BLOCK "StringFileInfo"
>>>> +    BEGIN
>>>> +        BLOCK "040904b0"
>>>> +        BEGIN
>>>> +            VALUE "CompanyName", "The Apache Software Foundation.\0"
>>>> +            VALUE "FileDescription", "NIO native code\0"
>>>> +            VALUE "FileVersion", "0.1\0"
>>>> +            VALUE "InternalName", "nio\0"
>>>> +            VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The
>>>> Apache Software Foundation or its licensors, as applicable.\0"
>>>> +            VALUE "OriginalFilename", "hynio.dll\0"
>>>> +            VALUE "ProductName", "Apache Harmony\0"
>>>> +            VALUE "ProductVersion", "0.1\0"
>>>> +        END
>>>> +    END
>>>> +    BLOCK "VarFileInfo"
>>>> +    BEGIN
>>>> +        VALUE "Translation", 0x0409, 1200
>>>> +    END
>>>> +END
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,41 @@
>>>> +# Copyright 2006 The Apache Software Foundation or its licensors, as
>>>> applicable
>>>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>>>> +# you may not use this file except in compliance with the License.
>>>> +# You may obtain a copy of the License at
>>>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>>>> +# +# Unless required by applicable law or agreed to in writing,
>>>> software
>>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> +# See the License for the specific language governing permissions and
>>>> +# limitations under the License.
>>>> +
>>>> +#
>>>> +# Makefile for module 'nio'
>>>> +#
>>>> +
>>>> +!include <$(HY_HDK)\build\make\defines.mak>
>>>> +
>>>> +SHAREDSUB=..\shared\# comment to avoid \ being treated as continuation
>>>> +LIBBASE=hynio
>>>> +DLLNAME=$(DLLPATH)$(LIBBASE).dll
>>>> +LIBNAME=$(LIBPATH)$(LIBBASE).lib
>>>> +HYCFLAGS = $(HYCFLAGS) /I$(SHAREDSUB) /I$(SHARED)common
>>>> /I$(SHARED)fdlibm
>>>> +HYLDFLAGS = $(HYLDFLAGS) -def:$(LIBBASE).def
>>>> +
>>>> +BUILDFILES = \
>>>> +  $(SHAREDSUB)DirectBufferUtil.obj $(SHAREDSUB)AddressUtil.obj
>>>> +VIRTFILES = hynio.res
>>>> +
>>>> +SYSLIBFILES = ws2_32.lib Iphlpapi.lib
>>>> +
>>>> +MDLLIBFILES = \
>>>> +  $(LIBPATH)hycommon.lib $(LIBPATH)hysig.lib $(LIBPATH)hyzip.lib
>>>> $(LIBPATH)hyzlib.lib \
>>>> +  $(LIBPATH)hypool.lib $(LIBPATH)hyfdlibm.lib $(LIBPATH)hythr.lib
>>>> $(LIBPATH)vmi.lib
>>>> +  +DLLBASE=0x13200000
>>>> +COMMENT=/comment:"nio component native code. (c) Copyright 1991,
>>>> 2005 The Apache Software Foundation or its licensors, as applicable."
>>>> +
>>>> +!include <$(HY_HDK)\build\make\rules.mak>
>>>>
>>>> Added:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java?rev=417385&view=auto
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>> (added)
>>>> +++
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>> Tue Jun 27 02:28:15 2006
>>>> @@ -0,0 +1,89 @@
>>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>>> as applicable
>>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>>> + * you may not use this file except in compliance with the License.
>>>> + * You may obtain a copy of the License at
>>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>>> + * + * Unless required by applicable law or agreed to in writing,
>>>> software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +
>>>> +package org.apache.harmony.tests.nio;
>>>> +
>>>> +import java.io.FileInputStream;
>>>> +import java.io.IOException;
>>>> +import java.nio.ByteBuffer;
>>>> +import java.nio.channels.Channel;
>>>> +import java.nio.channels.DatagramChannel;
>>>> +import java.nio.channels.FileChannel;
>>>> +import java.nio.channels.ServerSocketChannel;
>>>> +import java.nio.channels.SocketChannel;
>>>> +
>>>> +import junit.framework.TestCase;
>>>> +
>>>> +import org.apache.harmony.nio.AddressUtil;
>>>> +
>>>> +public class AddressUtilTest extends TestCase {
>>>> +    +    /**
>>>> +     * @tests AddressUtil#getDirectBufferAddress
>>>> +     */
>>>> +    public void test_getDirectBufferAddress() throws Exception {
>>>> +        ByteBuffer buf = ByteBuffer.allocateDirect(10);
>>>> +        assertTrue(AddressUtil.getDirectBufferAddress(buf) != 0);
>>>> +    }
>>>> +    +    /**
>>>> +     * @tests AddressUtil#getChannelAddress
>>>> +     */
>>>> +    public void test_getFileChannelAddress() throws Exception {
>>>> +//        FileChannel fc = new
>>>> FileInputStream("src/main/java/org/apache/harmony/nio/AddressUtil.java").getChannel();
>>>>
>>>> +//        assertTrue(AddressUtil.getChannelAddress(fc) > 0);
>>>> +    }
>>>> +    +    /**
>>>> +     * @tests AddressUtil#getChannelAddress
>>>> +     */
>>>> +    public void test_getSocketChannelAddress() throws Exception {
>>>> +        SocketChannel sc = SocketChannel.open();
>>>> +        assertTrue(AddressUtil.getChannelAddress(sc)>0);
>>>> +    }
>>>> +    +    /**
>>>> +     * @tests AddressUtil#getChannelAddress
>>>> +     */
>>>> +    public void test_getDatagramChannelAddress() throws Exception {
>>>> +        DatagramChannel dc = DatagramChannel.open();
>>>> +        assertTrue(AddressUtil.getChannelAddress(dc)>0);
>>>> +    }
>>>> +    +    /**
>>>> +     * @tests AddressUtil#getChannelAddress
>>>> +     */
>>>> +    public void test_getServerSocketChannelAddress() throws Exception {
>>>> +        ServerSocketChannel ssc = ServerSocketChannel.open();
>>>> +        assertTrue(AddressUtil.getChannelAddress(ssc)>0);
>>>> +    }  +    +    /**
>>>> +     * @tests AddressUtil#getChannelAddress
>>>> +     */
>>>> +    public void test_getNonNativeChannelAddress() throws Exception{
>>>> +        Channel channel = new MockChannel();
>>>> +        assertEquals(0, AddressUtil.getChannelAddress(channel));
>>>> +    }
>>>> +    +    private static class MockChannel implements Channel{
>>>> +        public boolean isOpen() {
>>>> +            return false;
>>>> +        }
>>>> +        public void close() throws IOException {
>>>> +        }
>>>> +    }
>>>> +}
>>>> +   Propchange:
>>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>>     svn:eol-style = native
>>>>
>>>>
>>>>
>>>>   
>>>
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
> 

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: svn commit: r417385 - in /incubator/harmony/enhanced/classlib/trunk/modules/nio: ./ make/ src/main/java/org/apache/harmony/nio/ src/main/java/org/apache/harmony/nio/internal/ src/main/native/ src/main/native/nio/ src/main/native/nio/linux/ src/main/nat...

Posted by Tim Ellison <t....@gmail.com>.
I messed up my commit by commiting at modules/ level when there were
also changes in native-src/  -- sorry about that.

It's not been a good week already.

Regards,
Tim

George Harley wrote:
> Hi Tim,
> 
> Fixed by your revision 417397 change. Looks like I just chose a bad time
> to update from the repository.
> 
> Thanks,
> George
> 
> 
> 
> George Harley wrote:
>> Hi Tim,
>>
>> I have started to see test errors in my local Windows XP sandbox since
>> this commit. In particular there are three tests in the new
>> org.apache.harmony.tests.nio.AddressUtilTest class that throw
>> java.lang.UnsatisfiedLinkError on account of not being able to locate
>> the native implementation of AddressUtil.getFDAddress(FileDescriptor).
>>
>> Will look at this a bit closer now - maybe it's a screw up in my
>> environment - but thought you should know sooner rather than...
>>
>> Best regards,
>> George
>>
>>
>>
>> tellison@apache.org wrote:
>>> Author: tellison
>>> Date: Tue Jun 27 02:28:15 2006
>>> New Revision: 417385
>>>
>>> URL: http://svn.apache.org/viewvc?rev=417385&view=rev
>>> Log:
>>> Apply patch HARMONY-578 ([classlib][nio] NIO should provide some
>>> utility classes for the JNI 1.4 enhancement)
>>>
>>> Added:
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java  
>>> (with props)
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/  
>>> (with props)
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c  
>>> (with props)
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c  
>>> (with props)
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/  
>>> (with props)
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java  
>>> (with props)
>>> Modified:
>>>     incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>
>>>    
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>
>>>
>>> Modified:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml?rev=417385&r1=417384&r2=417385&view=diff
>>>
>>> ==============================================================================
>>>
>>> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>> (original)
>>> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>> Tue Jun 27 02:28:15 2006
>>> @@ -39,12 +39,39 @@
>>>  
>>>      <target name="test" depends="build, compile.tests, run.tests" />
>>>  
>>> +     <!-- Build natives.-->
>>> +     <target name="build.native">
>>> +     <exec failonerror="true" +              
>>> executable="${make.command}" +              
>>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>>> +             <env key="HY_HDK" value="${hy.hdk}" />
>>> +         </exec>
>>> + +     <!-- Copy the built shared libs over to the jre/bin dir -->
>>> +     <copy todir="${hy.jdk}/jre/bin" overwrite="yes">
>>> +             <fileset dir="${hy.nio.src.main.native}/nio">
>>> +                 <patternset includes="*${shlib.suffix}*" />
>>> +             </fileset>
>>> +         </copy>
>>> +     </target>
>>> +
>>>      <target name="clean">
>>>          <delete includeemptydirs="true" failonerror="false">
>>>              <fileset refid="classes" />
>>>              <fileset dir="${hy.nio.bin.test}" />
>>>          </delete>
>>>      </target>
>>> +
>>> +     <!-- Clean natives. -->
>>> +     <target name="clean.native">
>>> +     <exec failonerror="true" +              
>>> executable="${make.command}" +              
>>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>>> +             <env key="HY_HDK" value="${hy.hdk}" />
>>> +         <arg line="clean" />
>>> +         </exec>
>>> +     </target>
>>> +
>>>  
>>>      <target name="compile.java">
>>>          <echo message="Compiling NIO classes" />
>>>
>>> Modified:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml?rev=417385&r1=417384&r2=417385&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>> (original)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml
>>> Tue Jun 27 02:28:15 2006
>>> @@ -21,6 +21,7 @@
>>>           <main>
>>>              <java location="src/main/java" />
>>>              <resources location="src/main/resources" />
>>> +            <native location="src/main/native" />
>>>           </main>
>>>           <test>
>>>              <java location="src/test/java" />
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,68 @@
>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>> as applicable
>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + * + * Unless required by applicable law or agreed to in writing,
>>> software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +package org.apache.harmony.nio;
>>> +
>>> +import java.io.FileDescriptor;
>>> +import java.nio.Buffer;
>>> +import java.nio.channels.Channel;
>>> +
>>> +import org.apache.harmony.luni.platform.FileDescriptorHandler;
>>> +import org.apache.harmony.nio.internal.DirectBuffer;
>>> +import org.apache.harmony.nio.internal.FileChannelImpl;
>>> +
>>> +public class AddressUtil {
>>> +
>>> +    /**
>>> +     * Gets the address of a direct buffer.
>>> +     * +     * @param buf
>>> +     *            the direct buffer whose address shall be return
>>> +     * @return the address of the buffer given
>>> +     */
>>> +    public static long getDirectBufferAddress(Buffer buf) {
>>> +        if (!(buf instanceof DirectBuffer)) {
>>> +            return 0;
>>> +        }
>>> +        return ((DirectBuffer) buf).getBaseAddress().toLong();
>>> +    }
>>> +    +    /**
>>> +     * Gets the address of native resource held by the given
>>> channel, if has any.
>>> +     * +     * For network related channel, including SocketChannel,
>>> ServerSocketChannel +     * and DatagramChannel, this method returns
>>> a int of Socket handler in Linux +     * while returns a SOCKET
>>> (UINT_PTR) in windows.
>>> +     * +     * For FileChannel, this method returns the native file
>>> descriptor.
>>> +     * +     * For other channels, this method return 0, which means
>>> unsupported operation.
>>> +     * +     * @param channel
>>> +     *            the given channel which may holds a native
>>> resource address
>>> +     * @return the address of native resource held by the given
>>> channel, if any, +     *         otherwise return 0
>>> +     */
>>> +    public static long getChannelAddress(Channel channel){
>>> +        if(channel instanceof FileDescriptorHandler){
>>> +            return getFDAddress(((FileDescriptorHandler)
>>> channel).getFD());    +        }else if(channel instanceof
>>> FileChannelImpl){
>>> +            return ((FileChannelImpl) channel).getHandle();   
>>> +        }
>>> +        return 0;
>>> +    }
>>> +
>>> +    private static native long getFDAddress(FileDescriptor fd);
>>> +}
>>> \ No newline at end of file
>>>
>>> Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>     svn:eol-style = native
>>>
>>> Modified:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java?rev=417385&r1=417384&r2=417385&view=diff
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>> (original)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java
>>> Tue Jun 27 02:28:15 2006
>>> @@ -596,4 +596,8 @@
>>>          }
>>>          return bytesWritten;
>>>      }
>>> +    +    public long getHandle(){
>>> +        return handle;
>>> +    }
>>>  }
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,8 @@
>>> +HYNIO_0.1 {
>>> +    global :
>>> +        NewDirectByteBuffer;
>>> +        GetDirectBufferAddress;
>>> +        GetDirectBufferCapacity;
>>> +        Java_org_apache_harmony_nio_AddressUtil_getFDAddress;
>>> +    local : *;
>>> +};
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,32 @@
>>> +# Copyright 2006 The Apache Software Foundation or its licensors, as
>>> applicable
>>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>>> +# you may not use this file except in compliance with the License.
>>> +# You may obtain a copy of the License at
>>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>>> +# +# Unless required by applicable law or agreed to in writing,
>>> software
>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> +# See the License for the specific language governing permissions and
>>> +# limitations under the License.
>>> +
>>> +#
>>> +# Makefile for module 'nio'
>>> +#
>>> +
>>> +include $(HY_HDK)/build/make/makefile.include
>>> +
>>> +CFLAGS += -fpic -I$(SHARED)common -I$(SHARED)fdlibm
>>> +
>>> +BUILDFILES = \
>>> +    ../shared/DirectBufferUtil.o ../shared/AddressUtil.o +
>>> +MDLLIBFILES = \
>>> +    $(LIBPATH)libhycommon.a $(LIBPATH)libhyzip.a \
>>> +    $(LIBPATH)libhypool.a $(LIBPATH)libhyfdlibm.a
>>> +
>>> +DLLNAME = ../libhynio.so
>>> +
>>> +include $(HY_HDK)/build/make/rules.mk
>>>
>>> Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> --- svn:ignore (added)
>>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1 @@
>>> +*.obj
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,43 @@
>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>> as applicable
>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + * + * Unless required by applicable law or agreed to in writing,
>>> software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +#include "hysock.h"
>>> +#include "AddressUtil.h"
>>> +
>>> +/*
>>> + * Class:     org_apache_harmony_nio_AddressUtil
>>> + * Method:    getFDAddress
>>> + * Signature: (Ljava/io/FileDescriptor;)J
>>> + */
>>> +JNIEXPORT jlong JNICALL
>>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>> +  (JNIEnv * env, jclass clz, jobject fd){
>>> +    jclass descriptorCLS;
>>> +    jfieldID descriptorFID;
>>> +    hysocket_t hysocketP;
>>> +    //TODO add to cache
>>> +    descriptorCLS = (*env)->FindClass (env, "java/io/FileDescriptor");
>>> +    if (NULL == descriptorCLS){
>>> +        return 0;
>>> +    }
>>> +    descriptorFID = (*env)->GetFieldID (env, descriptorCLS,
>>> "descriptor", "J");
>>> +    if (NULL == descriptorFID){
>>> +        return 0;
>>> +    }
>>> +    hysocketP = (hysocket_t) ((*env)->GetLongField (env, fd,
>>> descriptorFID));
>>> +    return SOCKET_CAST(hysocketP);
>>> +}
>>> +
>>> +
>>> +
>>>
>>> Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>     svn:eol-style = native
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,36 @@
>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>> as applicable
>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + * + * Unless required by applicable law or agreed to in writing,
>>> software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +/* DO NOT EDIT THIS FILE - it is machine generated */
>>> +#include <jni.h>
>>> +/* Header for class org_apache_harmony_nio_AddressUtil */
>>> +
>>> +#ifndef _Included_org_apache_harmony_nio_AddressUtil
>>> +#define _Included_org_apache_harmony_nio_AddressUtil
>>> +#ifdef __cplusplus
>>> +extern "C" {
>>> +#endif
>>> +/*
>>> + * Class:     org_apache_harmony_nio_AddressUtil
>>> + * Method:    getFDAddress
>>> + * Signature: (Ljava/io/FileDescriptor;)J
>>> + */
>>> +JNIEXPORT jlong JNICALL
>>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>> +  (JNIEnv *, jclass, jobject);
>>> +
>>> +#ifdef __cplusplus
>>> +}
>>> +#endif
>>> +#endif
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,119 @@
>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>> as applicable
>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + * + * Unless required by applicable law or agreed to in writing,
>>> software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +#include <jni.h>
>>> +
>>> +/*
>>> + * For JNI
>>> + * Method:    NewDirectByteBuffer
>>> + * Signature: (JJ)Ljava/nio/ByteBuffer;
>>> + */
>>> +jobject NewDirectByteBuffer
>>> +  (JNIEnv * env, jlong address, jlong capacity){
>>> +      jmethodID newBufferMethod;
>>> +      jclass directBufferClass;
>>> +      jclass platformaddressClass;
>>> +      jobject platformaddress;
>>> +      jmethodID onMethod;
>>> +          directBufferClass = (*env)->FindClass (env,
>>> "java/nio/ReadWriteDirectByteBuffer");
>>> +      if (!directBufferClass){
>>> +                return NULL;
>>> +      }
>>> +      newBufferMethod = (*env)->GetMethodID (env, directBufferClass,
>>> "<init>",
>>> +            
>>> "(Lorg/apache/harmony/luni/platform/PlatformAddress;II)V");
>>> +      if (!newBufferMethod){
>>> +                return NULL;
>>> +      }
>>> +      platformaddressClass = (*env)->FindClass (env,
>>> "org/apache/harmony/luni/platform/PlatformAddress");
>>> +      if (!platformaddressClass){
>>> +                return NULL;
>>> +      }
>>> +      onMethod = (*env)->GetStaticMethodID (env,
>>> platformaddressClass, "on",
>>> +             "(J)Lorg/apache/harmony/luni/platform/PlatformAddress;");
>>> +      if (!onMethod){
>>> +                return NULL;
>>> +      }
>>> +      platformaddress = (*env)->CallStaticObjectMethod(env,
>>> platformaddressClass, onMethod, address);
>>> +      return (*env)->NewObject(env, directBufferClass,
>>> newBufferMethod, platformaddress, capacity, 0);
>>> +  }
>>> +
>>> +/*
>>> + * For JNI
>>> + * Method:    GetDirectBufferAddress
>>> + * Signature: (Ljava/nio/Buffer;)J
>>> + */
>>> +jlong GetDirectBufferAddress
>>> +  (JNIEnv * env, jobject buf){
>>> +      jmethodID tempMethod;
>>> +      jclass tempClass;
>>> +      jobject platformAddr;
>>> +      jclass platformAddrClass;
>>> +      jmethodID toLongMethod;
>>> +      +          tempClass = (*env)->FindClass (env,
>>> "org/apache/harmony/nio/internal/DirectBuffer");
>>> +      if (!tempClass){
>>> +                return 0;
>>> +      }
>>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, tempClass)){
>>> +          return 0;
>>> +      }      +      tempMethod = (*env)->GetMethodID (env,
>>> tempClass, "getBaseAddress",
>>> +            
>>> "()Lorg/apache/harmony/luni/platform/PlatformAddress;");           
>>> +      if (!tempMethod){
>>> +                return 0;
>>> +      }      +      platformAddr = (*env)->CallObjectMethod(env,
>>> buf, tempMethod);
>>> +      platformAddrClass = (*env)->FindClass (env,
>>> "org/apache/harmony/luni/platform/PlatformAddress");
>>> +      if (!platformAddrClass){
>>> +                return 0;
>>> +      }
>>> +      toLongMethod = (*env)->GetMethodID (env, platformAddrClass,
>>> "toLong",
>>> +             "()J");
>>> +      if (!toLongMethod){
>>> +                return 0;
>>> +      }
>>> +      return  (*env)->CallLongMethod(env, platformAddr,
>>> toLongMethod);      +  }
>>> +
>>> +/*
>>> + * For JNI
>>> + * Method:    GetDirectBufferCapacity
>>> + * Signature: (Ljava/nio/Buffer;)J
>>> + */
>>> +jlong GetDirectBufferCapacity
>>> +  (JNIEnv * env, jobject buf){
>>> +      jfieldID fieldCapacity;
>>> +      jclass directBufferClass;
>>> +      jclass bufferClass;
>>> +          directBufferClass = (*env)->FindClass (env,
>>> "org/apache/harmony/nio/internal/DirectBuffer");
>>> +      if (!directBufferClass){
>>> +                return -1;
>>> +      }
>>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf,
>>> directBufferClass)){
>>> +          return -1;
>>> +      }
>>> +      bufferClass = (*env)->FindClass (env, "java/nio/Buffer");
>>> +      if (!bufferClass){
>>> +                return -1;
>>> +      }
>>> +      fieldCapacity = (*env)->GetFieldID (env, bufferClass, "capacity",
>>> +             "I");
>>> +      if (!fieldCapacity){
>>> +                return -1;
>>> +      }
>>> +      return (*env)->GetIntField(env, buf, fieldCapacity);
>>> +  }
>>> +
>>> +
>>>
>>> Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> --- svn:ignore (added)
>>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,2 @@
>>> +*.RES
>>> +*.pdb
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,12 @@
>>> +LIBRARY    HYNIO
>>> +
>>> +SECTIONS
>>> +    .data    READ WRITE
>>> +    .text    EXECUTE READ
>>> +
>>> +EXPORTS
>>> +    Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>>> +    NewDirectByteBuffer
>>> +    GetDirectBufferAddress
>>> +    GetDirectBufferCapacity
>>> +
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,47 @@
>>> +;
>>> +; Copyright 2006 The Apache Software Foundation or its licensors, as
>>> applicable
>>> +; +; Licensed under the Apache License, Version 2.0 (the "License");
>>> +; you may not use this file except in compliance with the License.
>>> +; You may obtain a copy of the License at
>>> +; +;     http://www.apache.org/licenses/LICENSE-2.0
>>> +; +; Unless required by applicable law or agreed to in writing,
>>> software
>>> +; distributed under the License is distributed on an "AS IS" BASIS,
>>> +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> +; See the License for the specific language governing permissions and
>>> +; limitations under the License.
>>> +;
>>> +
>>> +#include <windows.h>
>>> +#include <winver.h>
>>> +
>>> +VS_VERSION_INFO VERSIONINFO
>>> + FILEVERSION 0,1,0,0
>>> + PRODUCTVERSION 0,1,0,0
>>> + FILEFLAGSMASK 0x3fL
>>> + FILEFLAGS 0x0L
>>> + FILEOS VOS_NT_WINDOWS32
>>> + FILETYPE VFT_DLL
>>> + FILESUBTYPE 0x0L
>>> +BEGIN
>>> +    BLOCK "StringFileInfo"
>>> +    BEGIN
>>> +        BLOCK "040904b0"
>>> +        BEGIN
>>> +            VALUE "CompanyName", "The Apache Software Foundation.\0"
>>> +            VALUE "FileDescription", "NIO native code\0"
>>> +            VALUE "FileVersion", "0.1\0"
>>> +            VALUE "InternalName", "nio\0"
>>> +            VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The
>>> Apache Software Foundation or its licensors, as applicable.\0"
>>> +            VALUE "OriginalFilename", "hynio.dll\0"
>>> +            VALUE "ProductName", "Apache Harmony\0"
>>> +            VALUE "ProductVersion", "0.1\0"
>>> +        END
>>> +    END
>>> +    BLOCK "VarFileInfo"
>>> +    BEGIN
>>> +        VALUE "Translation", 0x0409, 1200
>>> +    END
>>> +END
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,41 @@
>>> +# Copyright 2006 The Apache Software Foundation or its licensors, as
>>> applicable
>>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>>> +# you may not use this file except in compliance with the License.
>>> +# You may obtain a copy of the License at
>>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>>> +# +# Unless required by applicable law or agreed to in writing,
>>> software
>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> +# See the License for the specific language governing permissions and
>>> +# limitations under the License.
>>> +
>>> +#
>>> +# Makefile for module 'nio'
>>> +#
>>> +
>>> +!include <$(HY_HDK)\build\make\defines.mak>
>>> +
>>> +SHAREDSUB=..\shared\# comment to avoid \ being treated as continuation
>>> +LIBBASE=hynio
>>> +DLLNAME=$(DLLPATH)$(LIBBASE).dll
>>> +LIBNAME=$(LIBPATH)$(LIBBASE).lib
>>> +HYCFLAGS = $(HYCFLAGS) /I$(SHAREDSUB) /I$(SHARED)common
>>> /I$(SHARED)fdlibm
>>> +HYLDFLAGS = $(HYLDFLAGS) -def:$(LIBBASE).def
>>> +
>>> +BUILDFILES = \
>>> +  $(SHAREDSUB)DirectBufferUtil.obj $(SHAREDSUB)AddressUtil.obj
>>> +VIRTFILES = hynio.res
>>> +
>>> +SYSLIBFILES = ws2_32.lib Iphlpapi.lib
>>> +
>>> +MDLLIBFILES = \
>>> +  $(LIBPATH)hycommon.lib $(LIBPATH)hysig.lib $(LIBPATH)hyzip.lib
>>> $(LIBPATH)hyzlib.lib \
>>> +  $(LIBPATH)hypool.lib $(LIBPATH)hyfdlibm.lib $(LIBPATH)hythr.lib
>>> $(LIBPATH)vmi.lib
>>> +  +DLLBASE=0x13200000
>>> +COMMENT=/comment:"nio component native code. (c) Copyright 1991,
>>> 2005 The Apache Software Foundation or its licensors, as applicable."
>>> +
>>> +!include <$(HY_HDK)\build\make\rules.mak>
>>>
>>> Added:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java?rev=417385&view=auto
>>>
>>> ==============================================================================
>>>
>>> ---
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>> (added)
>>> +++
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>> Tue Jun 27 02:28:15 2006
>>> @@ -0,0 +1,89 @@
>>> +/* Copyright 2006 The Apache Software Foundation or its licensors,
>>> as applicable
>>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + * + * Unless required by applicable law or agreed to in writing,
>>> software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +package org.apache.harmony.tests.nio;
>>> +
>>> +import java.io.FileInputStream;
>>> +import java.io.IOException;
>>> +import java.nio.ByteBuffer;
>>> +import java.nio.channels.Channel;
>>> +import java.nio.channels.DatagramChannel;
>>> +import java.nio.channels.FileChannel;
>>> +import java.nio.channels.ServerSocketChannel;
>>> +import java.nio.channels.SocketChannel;
>>> +
>>> +import junit.framework.TestCase;
>>> +
>>> +import org.apache.harmony.nio.AddressUtil;
>>> +
>>> +public class AddressUtilTest extends TestCase {
>>> +    +    /**
>>> +     * @tests AddressUtil#getDirectBufferAddress
>>> +     */
>>> +    public void test_getDirectBufferAddress() throws Exception {
>>> +        ByteBuffer buf = ByteBuffer.allocateDirect(10);
>>> +        assertTrue(AddressUtil.getDirectBufferAddress(buf) != 0);
>>> +    }
>>> +    +    /**
>>> +     * @tests AddressUtil#getChannelAddress
>>> +     */
>>> +    public void test_getFileChannelAddress() throws Exception {
>>> +//        FileChannel fc = new
>>> FileInputStream("src/main/java/org/apache/harmony/nio/AddressUtil.java").getChannel();
>>>
>>> +//        assertTrue(AddressUtil.getChannelAddress(fc) > 0);
>>> +    }
>>> +    +    /**
>>> +     * @tests AddressUtil#getChannelAddress
>>> +     */
>>> +    public void test_getSocketChannelAddress() throws Exception {
>>> +        SocketChannel sc = SocketChannel.open();
>>> +        assertTrue(AddressUtil.getChannelAddress(sc)>0);
>>> +    }
>>> +    +    /**
>>> +     * @tests AddressUtil#getChannelAddress
>>> +     */
>>> +    public void test_getDatagramChannelAddress() throws Exception {
>>> +        DatagramChannel dc = DatagramChannel.open();
>>> +        assertTrue(AddressUtil.getChannelAddress(dc)>0);
>>> +    }
>>> +    +    /**
>>> +     * @tests AddressUtil#getChannelAddress
>>> +     */
>>> +    public void test_getServerSocketChannelAddress() throws Exception {
>>> +        ServerSocketChannel ssc = ServerSocketChannel.open();
>>> +        assertTrue(AddressUtil.getChannelAddress(ssc)>0);
>>> +    }  +    +    /**
>>> +     * @tests AddressUtil#getChannelAddress
>>> +     */
>>> +    public void test_getNonNativeChannelAddress() throws Exception{
>>> +        Channel channel = new MockChannel();
>>> +        assertEquals(0, AddressUtil.getChannelAddress(channel));
>>> +    }
>>> +    +    private static class MockChannel implements Channel{
>>> +        public boolean isOpen() {
>>> +            return false;
>>> +        }
>>> +        public void close() throws IOException {
>>> +        }
>>> +    }
>>> +}
>>> +   Propchange:
>>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>     svn:eol-style = native
>>>
>>>
>>>
>>>   
>>
>>
> 
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> 
> 

-- 

Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: svn commit: r417385 - in /incubator/harmony/enhanced/classlib/trunk/modules/nio: ./ make/ src/main/java/org/apache/harmony/nio/ src/main/java/org/apache/harmony/nio/internal/ src/main/native/ src/main/native/nio/ src/main/native/nio/linux/ src/main/nat...

Posted by George Harley <ge...@googlemail.com>.
Hi Tim,

Fixed by your revision 417397 change. Looks like I just chose a bad time 
to update from the repository.

Thanks,
George



George Harley wrote:
> Hi Tim,
>
> I have started to see test errors in my local Windows XP sandbox since 
> this commit. In particular there are three tests in the new 
> org.apache.harmony.tests.nio.AddressUtilTest class that throw 
> java.lang.UnsatisfiedLinkError on account of not being able to locate 
> the native implementation of AddressUtil.getFDAddress(FileDescriptor).
>
> Will look at this a bit closer now - maybe it's a screw up in my 
> environment - but thought you should know sooner rather than...
>
> Best regards,
> George
>
>
>
> tellison@apache.org wrote:
>> Author: tellison
>> Date: Tue Jun 27 02:28:15 2006
>> New Revision: 417385
>>
>> URL: http://svn.apache.org/viewvc?rev=417385&view=rev
>> Log:
>> Apply patch HARMONY-578 ([classlib][nio] NIO should provide some 
>> utility classes for the JNI 1.4 enhancement)
>>
>> Added:
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java   
>> (with props)
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/ 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/ 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/   
>> (with props)
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c   
>> (with props)
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c   
>> (with props)
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/   
>> (with props)
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java   
>> (with props)
>> Modified:
>>     incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml 
>>
>>     
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java 
>>
>>
>> Modified: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml?rev=417385&r1=417384&r2=417385&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml 
>> (original)
>> +++ incubator/harmony/enhanced/classlib/trunk/modules/nio/build.xml 
>> Tue Jun 27 02:28:15 2006
>> @@ -39,12 +39,39 @@
>>  
>>      <target name="test" depends="build, compile.tests, run.tests" />
>>  
>> +     <!-- Build natives.-->
>> +     <target name="build.native">
>> +     <exec failonerror="true" +               
>> executable="${make.command}" +               
>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>> +             <env key="HY_HDK" value="${hy.hdk}" />
>> +         </exec>
>> + +     <!-- Copy the built shared libs over to the jre/bin dir -->
>> +     <copy todir="${hy.jdk}/jre/bin" overwrite="yes">
>> +             <fileset dir="${hy.nio.src.main.native}/nio">
>> +                 <patternset includes="*${shlib.suffix}*" />
>> +             </fileset>
>> +         </copy>
>> +     </target>
>> +
>>      <target name="clean">
>>          <delete includeemptydirs="true" failonerror="false">
>>              <fileset refid="classes" />
>>              <fileset dir="${hy.nio.bin.test}" />
>>          </delete>
>>      </target>
>> +
>> +     <!-- Clean natives. -->
>> +     <target name="clean.native">
>> +     <exec failonerror="true" +               
>> executable="${make.command}" +               
>> dir="${hy.nio.src.main.native}/nio/${hy.os}">
>> +             <env key="HY_HDK" value="${hy.hdk}" />
>> +         <arg line="clean" />
>> +         </exec>
>> +     </target>
>> +
>>  
>>      <target name="compile.java">
>>          <echo message="Compiling NIO classes" />
>>
>> Modified: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml?rev=417385&r1=417384&r2=417385&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml 
>> (original)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/make/hyproperties.xml 
>> Tue Jun 27 02:28:15 2006
>> @@ -21,6 +21,7 @@
>>           <main>
>>              <java location="src/main/java" />
>>              <resources location="src/main/resources" />
>> +            <native location="src/main/native" />
>>           </main>
>>           <test>
>>              <java location="src/test/java" />
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,68 @@
>> +/* Copyright 2006 The Apache Software Foundation or its licensors, 
>> as applicable
>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>> + * + * Unless required by applicable law or agreed to in writing, 
>> software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +package org.apache.harmony.nio;
>> +
>> +import java.io.FileDescriptor;
>> +import java.nio.Buffer;
>> +import java.nio.channels.Channel;
>> +
>> +import org.apache.harmony.luni.platform.FileDescriptorHandler;
>> +import org.apache.harmony.nio.internal.DirectBuffer;
>> +import org.apache.harmony.nio.internal.FileChannelImpl;
>> +
>> +public class AddressUtil {
>> +
>> +    /**
>> +     * Gets the address of a direct buffer.
>> +     * +     * @param buf
>> +     *            the direct buffer whose address shall be return
>> +     * @return the address of the buffer given
>> +     */
>> +    public static long getDirectBufferAddress(Buffer buf) {
>> +        if (!(buf instanceof DirectBuffer)) {
>> +            return 0;
>> +        }
>> +        return ((DirectBuffer) buf).getBaseAddress().toLong();
>> +    }
>> +    +    /**
>> +     * Gets the address of native resource held by the given 
>> channel, if has any.
>> +     * +     * For network related channel, including SocketChannel, 
>> ServerSocketChannel +     * and DatagramChannel, this method returns 
>> a int of Socket handler in Linux +     * while returns a SOCKET 
>> (UINT_PTR) in windows.
>> +     * +     * For FileChannel, this method returns the native file 
>> descriptor.
>> +     * +     * For other channels, this method return 0, which means 
>> unsupported operation.
>> +     * +     * @param channel
>> +     *            the given channel which may holds a native 
>> resource address
>> +     * @return the address of native resource held by the given 
>> channel, if any, +     *         otherwise return 0
>> +     */
>> +    public static long getChannelAddress(Channel channel){
>> +        if(channel instanceof FileDescriptorHandler){
>> +            return getFDAddress(((FileDescriptorHandler) 
>> channel).getFD());    +        }else if(channel instanceof 
>> FileChannelImpl){
>> +            return ((FileChannelImpl) channel).getHandle();    
>> +        }
>> +        return 0;
>> +    }
>> +
>> +    private static native long getFDAddress(FileDescriptor fd);
>> +}
>> \ No newline at end of file
>>
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java 
>>
>> ------------------------------------------------------------------------------ 
>>
>>     svn:eol-style = native
>>
>> Modified: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java?rev=417385&r1=417384&r2=417385&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java 
>> (original)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java 
>> Tue Jun 27 02:28:15 2006
>> @@ -596,4 +596,8 @@
>>          }
>>          return bytesWritten;
>>      }
>> +    +    public long getHandle(){
>> +        return handle;
>> +    }
>>  }
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/libhynio.exp 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,8 @@
>> +HYNIO_0.1 {
>> +    global :
>> +        NewDirectByteBuffer;
>> +        GetDirectBufferAddress;
>> +        GetDirectBufferCapacity;
>> +        Java_org_apache_harmony_nio_AddressUtil_getFDAddress;
>> +    local : *;
>> +};
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/linux/makefile 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,32 @@
>> +# Copyright 2006 The Apache Software Foundation or its licensors, as 
>> applicable
>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>> +# you may not use this file except in compliance with the License.
>> +# You may obtain a copy of the License at
>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>> +# +# Unless required by applicable law or agreed to in writing, 
>> software
>> +# distributed under the License is distributed on an "AS IS" BASIS,
>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> +# See the License for the specific language governing permissions and
>> +# limitations under the License.
>> +
>> +#
>> +# Makefile for module 'nio'
>> +#
>> +
>> +include $(HY_HDK)/build/make/makefile.include
>> +
>> +CFLAGS += -fpic -I$(SHARED)common -I$(SHARED)fdlibm
>> +
>> +BUILDFILES = \
>> +    ../shared/DirectBufferUtil.o ../shared/AddressUtil.o +
>> +MDLLIBFILES = \
>> +    $(LIBPATH)libhycommon.a $(LIBPATH)libhyzip.a \
>> +    $(LIBPATH)libhypool.a $(LIBPATH)libhyfdlibm.a
>> +
>> +DLLNAME = ../libhynio.so
>> +
>> +include $(HY_HDK)/build/make/rules.mk
>>
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/ 
>>
>> ------------------------------------------------------------------------------ 
>>
>> --- svn:ignore (added)
>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1 @@
>> +*.obj
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,43 @@
>> +/* Copyright 2006 The Apache Software Foundation or its licensors, 
>> as applicable
>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>> + * + * Unless required by applicable law or agreed to in writing, 
>> software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +#include "hysock.h"
>> +#include "AddressUtil.h"
>> +
>> +/*
>> + * Class:     org_apache_harmony_nio_AddressUtil
>> + * Method:    getFDAddress
>> + * Signature: (Ljava/io/FileDescriptor;)J
>> + */
>> +JNIEXPORT jlong JNICALL 
>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>> +  (JNIEnv * env, jclass clz, jobject fd){
>> +    jclass descriptorCLS;
>> +    jfieldID descriptorFID;
>> +    hysocket_t hysocketP;
>> +    //TODO add to cache
>> +    descriptorCLS = (*env)->FindClass (env, "java/io/FileDescriptor");
>> +    if (NULL == descriptorCLS){
>> +        return 0;
>> +    }
>> +    descriptorFID = (*env)->GetFieldID (env, descriptorCLS, 
>> "descriptor", "J");
>> +    if (NULL == descriptorFID){
>> +        return 0;
>> +    }
>> +    hysocketP = (hysocket_t) ((*env)->GetLongField (env, fd, 
>> descriptorFID));
>> +    return SOCKET_CAST(hysocketP);
>> +}
>> +
>> +
>> +
>>
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.c 
>>
>> ------------------------------------------------------------------------------ 
>>
>>     svn:eol-style = native
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/AddressUtil.h 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,36 @@
>> +/* Copyright 2006 The Apache Software Foundation or its licensors, 
>> as applicable
>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>> + * + * Unless required by applicable law or agreed to in writing, 
>> software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +/* DO NOT EDIT THIS FILE - it is machine generated */
>> +#include <jni.h>
>> +/* Header for class org_apache_harmony_nio_AddressUtil */
>> +
>> +#ifndef _Included_org_apache_harmony_nio_AddressUtil
>> +#define _Included_org_apache_harmony_nio_AddressUtil
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +/*
>> + * Class:     org_apache_harmony_nio_AddressUtil
>> + * Method:    getFDAddress
>> + * Signature: (Ljava/io/FileDescriptor;)J
>> + */
>> +JNIEXPORT jlong JNICALL 
>> Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>> +  (JNIEnv *, jclass, jobject);
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +#endif
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,119 @@
>> +/* Copyright 2006 The Apache Software Foundation or its licensors, 
>> as applicable
>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>> + * + * Unless required by applicable law or agreed to in writing, 
>> software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +#include <jni.h>
>> +
>> +/*
>> + * For JNI
>> + * Method:    NewDirectByteBuffer
>> + * Signature: (JJ)Ljava/nio/ByteBuffer;
>> + */
>> +jobject NewDirectByteBuffer
>> +  (JNIEnv * env, jlong address, jlong capacity){
>> +      jmethodID newBufferMethod;
>> +      jclass directBufferClass;
>> +      jclass platformaddressClass;
>> +      jobject platformaddress;
>> +      jmethodID onMethod;
>> +          directBufferClass = (*env)->FindClass (env, 
>> "java/nio/ReadWriteDirectByteBuffer");
>> +      if (!directBufferClass){
>> +                return NULL;
>> +      }
>> +      newBufferMethod = (*env)->GetMethodID (env, directBufferClass, 
>> "<init>",
>> +             
>> "(Lorg/apache/harmony/luni/platform/PlatformAddress;II)V");
>> +      if (!newBufferMethod){
>> +                return NULL;
>> +      }
>> +      platformaddressClass = (*env)->FindClass (env, 
>> "org/apache/harmony/luni/platform/PlatformAddress");
>> +      if (!platformaddressClass){
>> +                return NULL;
>> +      }
>> +      onMethod = (*env)->GetStaticMethodID (env, 
>> platformaddressClass, "on",
>> +             "(J)Lorg/apache/harmony/luni/platform/PlatformAddress;");
>> +      if (!onMethod){
>> +                return NULL;
>> +      }
>> +      platformaddress = (*env)->CallStaticObjectMethod(env, 
>> platformaddressClass, onMethod, address);
>> +      return (*env)->NewObject(env, directBufferClass, 
>> newBufferMethod, platformaddress, capacity, 0);
>> +  }
>> +
>> +/*
>> + * For JNI
>> + * Method:    GetDirectBufferAddress
>> + * Signature: (Ljava/nio/Buffer;)J
>> + */
>> +jlong GetDirectBufferAddress
>> +  (JNIEnv * env, jobject buf){
>> +      jmethodID tempMethod;
>> +      jclass tempClass;
>> +      jobject platformAddr;
>> +      jclass platformAddrClass;
>> +      jmethodID toLongMethod;
>> +      +          tempClass = (*env)->FindClass (env, 
>> "org/apache/harmony/nio/internal/DirectBuffer");
>> +      if (!tempClass){
>> +                return 0;
>> +      }
>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, tempClass)){
>> +          return 0;
>> +      }      +      tempMethod = (*env)->GetMethodID (env, 
>> tempClass, "getBaseAddress",
>> +             
>> "()Lorg/apache/harmony/luni/platform/PlatformAddress;");            
>> +      if (!tempMethod){
>> +                return 0;
>> +      }      +      platformAddr = (*env)->CallObjectMethod(env, 
>> buf, tempMethod);
>> +      platformAddrClass = (*env)->FindClass (env, 
>> "org/apache/harmony/luni/platform/PlatformAddress");
>> +      if (!platformAddrClass){
>> +                return 0;
>> +      }
>> +      toLongMethod = (*env)->GetMethodID (env, platformAddrClass, 
>> "toLong",
>> +             "()J");
>> +      if (!toLongMethod){
>> +                return 0;
>> +      }
>> +      return  (*env)->CallLongMethod(env, platformAddr, 
>> toLongMethod);      +  }
>> +
>> +/*
>> + * For JNI
>> + * Method:    GetDirectBufferCapacity
>> + * Signature: (Ljava/nio/Buffer;)J
>> + */
>> +jlong GetDirectBufferCapacity
>> +  (JNIEnv * env, jobject buf){
>> +      jfieldID fieldCapacity;
>> +      jclass directBufferClass;
>> +      jclass bufferClass;
>> +          directBufferClass = (*env)->FindClass (env, 
>> "org/apache/harmony/nio/internal/DirectBuffer");
>> +      if (!directBufferClass){
>> +                return -1;
>> +      }
>> +      if (JNI_FALSE == (*env)->IsInstanceOf(env, buf, 
>> directBufferClass)){
>> +          return -1;
>> +      }
>> +      bufferClass = (*env)->FindClass (env, "java/nio/Buffer");
>> +      if (!bufferClass){
>> +                return -1;
>> +      }
>> +      fieldCapacity = (*env)->GetFieldID (env, bufferClass, "capacity",
>> +             "I");
>> +      if (!fieldCapacity){
>> +                return -1;
>> +      }
>> +      return (*env)->GetIntField(env, buf, fieldCapacity);
>> +  }
>> +
>> +
>>
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/shared/DirectBufferUtil.c 
>>
>> ------------------------------------------------------------------------------ 
>>
>>     svn:eol-style = native
>>
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/ 
>>
>> ------------------------------------------------------------------------------ 
>>
>> --- svn:ignore (added)
>> +++ svn:ignore Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,2 @@
>> +*.RES
>> +*.pdb
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.def 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,12 @@
>> +LIBRARY    HYNIO
>> +
>> +SECTIONS
>> +    .data    READ WRITE
>> +    .text    EXECUTE READ
>> +
>> +EXPORTS
>> +    Java_org_apache_harmony_nio_AddressUtil_getFDAddress
>> +    NewDirectByteBuffer
>> +    GetDirectBufferAddress
>> +    GetDirectBufferCapacity
>> +
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/hynio.rc 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,47 @@
>> +;
>> +; Copyright 2006 The Apache Software Foundation or its licensors, as 
>> applicable
>> +; +; Licensed under the Apache License, Version 2.0 (the "License");
>> +; you may not use this file except in compliance with the License.
>> +; You may obtain a copy of the License at
>> +; +;     http://www.apache.org/licenses/LICENSE-2.0
>> +; +; Unless required by applicable law or agreed to in writing, 
>> software
>> +; distributed under the License is distributed on an "AS IS" BASIS,
>> +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> +; See the License for the specific language governing permissions and
>> +; limitations under the License.
>> +;
>> +
>> +#include <windows.h>
>> +#include <winver.h>
>> +
>> +VS_VERSION_INFO VERSIONINFO
>> + FILEVERSION 0,1,0,0
>> + PRODUCTVERSION 0,1,0,0
>> + FILEFLAGSMASK 0x3fL
>> + FILEFLAGS 0x0L
>> + FILEOS VOS_NT_WINDOWS32
>> + FILETYPE VFT_DLL
>> + FILESUBTYPE 0x0L
>> +BEGIN
>> +    BLOCK "StringFileInfo"
>> +    BEGIN
>> +        BLOCK "040904b0"
>> +        BEGIN
>> +            VALUE "CompanyName", "The Apache Software Foundation.\0"
>> +            VALUE "FileDescription", "NIO native code\0"
>> +            VALUE "FileVersion", "0.1\0"
>> +            VALUE "InternalName", "nio\0"
>> +            VALUE "LegalCopyright", "(c) Copyright 1991, 2005 The 
>> Apache Software Foundation or its licensors, as applicable.\0"
>> +            VALUE "OriginalFilename", "hynio.dll\0"
>> +            VALUE "ProductName", "Apache Harmony\0"
>> +            VALUE "ProductVersion", "0.1\0"
>> +        END
>> +    END
>> +    BLOCK "VarFileInfo"
>> +    BEGIN
>> +        VALUE "Translation", 0x0409, 1200
>> +    END
>> +END
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/main/native/nio/windows/makefile 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,41 @@
>> +# Copyright 2006 The Apache Software Foundation or its licensors, as 
>> applicable
>> +# +# Licensed under the Apache License, Version 2.0 (the "License");
>> +# you may not use this file except in compliance with the License.
>> +# You may obtain a copy of the License at
>> +# +#     http://www.apache.org/licenses/LICENSE-2.0
>> +# +# Unless required by applicable law or agreed to in writing, 
>> software
>> +# distributed under the License is distributed on an "AS IS" BASIS,
>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> +# See the License for the specific language governing permissions and
>> +# limitations under the License.
>> +
>> +#
>> +# Makefile for module 'nio'
>> +#
>> +
>> +!include <$(HY_HDK)\build\make\defines.mak>
>> +
>> +SHAREDSUB=..\shared\# comment to avoid \ being treated as continuation
>> +LIBBASE=hynio
>> +DLLNAME=$(DLLPATH)$(LIBBASE).dll
>> +LIBNAME=$(LIBPATH)$(LIBBASE).lib
>> +HYCFLAGS = $(HYCFLAGS) /I$(SHAREDSUB) /I$(SHARED)common 
>> /I$(SHARED)fdlibm
>> +HYLDFLAGS = $(HYLDFLAGS) -def:$(LIBBASE).def
>> +
>> +BUILDFILES = \
>> +  $(SHAREDSUB)DirectBufferUtil.obj $(SHAREDSUB)AddressUtil.obj
>> +VIRTFILES = hynio.res
>> +
>> +SYSLIBFILES = ws2_32.lib Iphlpapi.lib
>> +
>> +MDLLIBFILES = \
>> +  $(LIBPATH)hycommon.lib $(LIBPATH)hysig.lib $(LIBPATH)hyzip.lib 
>> $(LIBPATH)hyzlib.lib \
>> +  $(LIBPATH)hypool.lib $(LIBPATH)hyfdlibm.lib $(LIBPATH)hythr.lib 
>> $(LIBPATH)vmi.lib
>> +  +DLLBASE=0x13200000
>> +COMMENT=/comment:"nio component native code. (c) Copyright 1991, 
>> 2005 The Apache Software Foundation or its licensors, as applicable."
>> +
>> +!include <$(HY_HDK)\build\make\rules.mak>
>>
>> Added: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java 
>>
>> URL: 
>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java?rev=417385&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java 
>> (added)
>> +++ 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java 
>> Tue Jun 27 02:28:15 2006
>> @@ -0,0 +1,89 @@
>> +/* Copyright 2006 The Apache Software Foundation or its licensors, 
>> as applicable
>> + * + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + * + *     http://www.apache.org/licenses/LICENSE-2.0
>> + * + * Unless required by applicable law or agreed to in writing, 
>> software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +package org.apache.harmony.tests.nio;
>> +
>> +import java.io.FileInputStream;
>> +import java.io.IOException;
>> +import java.nio.ByteBuffer;
>> +import java.nio.channels.Channel;
>> +import java.nio.channels.DatagramChannel;
>> +import java.nio.channels.FileChannel;
>> +import java.nio.channels.ServerSocketChannel;
>> +import java.nio.channels.SocketChannel;
>> +
>> +import junit.framework.TestCase;
>> +
>> +import org.apache.harmony.nio.AddressUtil;
>> +
>> +public class AddressUtilTest extends TestCase {
>> +    +    /**
>> +     * @tests AddressUtil#getDirectBufferAddress
>> +     */
>> +    public void test_getDirectBufferAddress() throws Exception {
>> +        ByteBuffer buf = ByteBuffer.allocateDirect(10);
>> +        assertTrue(AddressUtil.getDirectBufferAddress(buf) != 0);
>> +    }
>> +    +    /**
>> +     * @tests AddressUtil#getChannelAddress
>> +     */
>> +    public void test_getFileChannelAddress() throws Exception {
>> +//        FileChannel fc = new 
>> FileInputStream("src/main/java/org/apache/harmony/nio/AddressUtil.java").getChannel(); 
>>
>> +//        assertTrue(AddressUtil.getChannelAddress(fc) > 0);
>> +    }
>> +    +    /**
>> +     * @tests AddressUtil#getChannelAddress
>> +     */
>> +    public void test_getSocketChannelAddress() throws Exception {
>> +        SocketChannel sc = SocketChannel.open();
>> +        assertTrue(AddressUtil.getChannelAddress(sc)>0);
>> +    }
>> +    +    /**
>> +     * @tests AddressUtil#getChannelAddress
>> +     */
>> +    public void test_getDatagramChannelAddress() throws Exception {
>> +        DatagramChannel dc = DatagramChannel.open();
>> +        assertTrue(AddressUtil.getChannelAddress(dc)>0);
>> +    }
>> +    +    /**
>> +     * @tests AddressUtil#getChannelAddress
>> +     */
>> +    public void test_getServerSocketChannelAddress() throws Exception {
>> +        ServerSocketChannel ssc = ServerSocketChannel.open();
>> +        assertTrue(AddressUtil.getChannelAddress(ssc)>0);
>> +    }  +    +    /**
>> +     * @tests AddressUtil#getChannelAddress
>> +     */
>> +    public void test_getNonNativeChannelAddress() throws Exception{
>> +        Channel channel = new MockChannel();
>> +        assertEquals(0, AddressUtil.getChannelAddress(channel));
>> +    }
>> +    +    private static class MockChannel implements Channel{
>> +        public boolean isOpen() {
>> +            return false;
>> +        }
>> +        public void close() throws IOException {
>> +        }
>> +    }
>> +}
>> +   
>> Propchange: 
>> incubator/harmony/enhanced/classlib/trunk/modules/nio/src/test/java/org/apache/harmony/tests/nio/AddressUtilTest.java 
>>
>> ------------------------------------------------------------------------------ 
>>
>>     svn:eol-style = native
>>
>>
>>
>>   
>
>


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org