harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.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:35:15 GMT
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


Mime
View raw message