harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Geir Magnusson Jr <g...@pobox.com>
Subject 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...
Date Tue, 27 Jun 2006 10:57:36 GMT


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


Mime
View raw message