src.com.ibm.as400.access.IFSRandomAccessFileImplProxy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: IFSRandomAccessFileImplProxy.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.access;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
/**
Provides a local proxy implementation for the IFSRandomAccessFile class.
**/
class IFSRandomAccessFileImplProxy
extends AbstractProxyImpl
implements IFSRandomAccessFileImpl
{
IFSRandomAccessFileImplProxy ()
{
super ("IFSRandomAccessFile");
}
public void close()
throws IOException
{
try {
connection_.callMethod (pxId_, "close");
}
catch (InvocationTargetException e) {
throw ProxyClientConnection.rethrow1 (e);
}
}
public void connectAndOpen()
throws AS400SecurityException, IOException
{
try {
connection_.callMethod (pxId_, "connectAndOpen");
}
catch (InvocationTargetException e) {
Throwable e1 = e.getTargetException ();
if (e1 instanceof AS400SecurityException)
throw (AS400SecurityException) e1;
else
throw ProxyClientConnection.rethrow1 (e);
}
}
public void flush()
throws IOException
{
try {
connection_.callMethod (pxId_, "flush");
}
catch (InvocationTargetException e) {
throw ProxyClientConnection.rethrow1 (e);
}
}
public long length()
throws IOException
{
try {
return connection_.callMethod (pxId_, "length").getReturnValueLong();
}
catch (InvocationTargetException e) {
throw ProxyClientConnection.rethrow1 (e);
}
}
public IFSKey lock(long offset,
long length)
throws IOException
{
try {
return (IFSKey) connection_.callMethod (pxId_, "lock",
new Class[] { Long.TYPE, Long.TYPE },
new Object[] { new Long(offset), new Long(length) })
.getReturnValue();
}
catch (InvocationTargetException e) {
throw ProxyClientConnection.rethrow1 (e);
}
}
public void open()
throws IOException
{
try {
connection_.callMethod (pxId_, "open");
}
catch (InvocationTargetException e) {
throw ProxyClientConnection.rethrow1 (e);
}
}
private static final boolean[] ARGS_TO_RETURN =
new boolean[] {true, false, false, false};
public int read(byte[] data,
int dataOffset,
int length,
boolean readFully)
throws IOException
{
try {
ProxyReturnValue rv = connection_.callMethod (pxId_, "read",
new Class[] { byte[].class,
Integer.TYPE,
Integer.TYPE,
Boolean.TYPE},
new Object[] { data,
new Integer (dataOffset),
new Integer (length),
new Boolean (readFully) },
ARGS_TO_RETURN, readFully );
// Note: The 6th arg says whether to call the method asynchronously.
// In the case of readFully, we want asynchronous, since the read
// will wait for the requested number of bytes to become available.
byte [] returnDataBuffer = (byte[])rv.getArgument(0);
for (int i=0; i