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 >> >> >> >> [EMAIL PROTECTED] 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: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Tim Ellison ([EMAIL PROTECTED]) IBM Java technology centre, UK. --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]