| /******************************************************************************* |
| * Copyright (c) 2004, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| /* |
| |
| |
| */ |
| package org.eclipse.jem.internal.proxy.remote; |
| |
| import java.io.IOException; |
| |
| import org.eclipse.jem.internal.proxy.common.CommandException; |
| import org.eclipse.jem.internal.proxy.common.remote.Commands; |
| |
| /** |
| * Additional function on a connection for expression tree processing. |
| * Connections returned (IREMConnections) will always also implement IREMExpressionConnection, |
| * but they are separated so that expression functions don't pollute the regular |
| * connection interface with added commands that shouldn't be called except |
| * when processing an expression. If they were called out of order, big problems |
| * can occur. |
| * <p> |
| * To use, simply cast the IREMConnection to be an IREMExpressionConnection. |
| * |
| * @since 1.0.0 |
| */ |
| public interface IREMExpressionConnection extends IREMConnection { |
| |
| /** |
| * Start expression processing. |
| * @param expressionID |
| * @param trace TODO |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void startExpressionProcessing(int expressionID, byte trace) throws IOException; |
| |
| /** |
| * Transfer the expression. This tells the remote vm to stop processing on the |
| * given connection and return the expression processing controller for the expression. |
| * |
| * @param expressionID |
| * @param expController |
| * @throws IOException |
| * |
| * @since 1.1.0 |
| */ |
| public void transferExpression(int expressionID, Commands.ValueObject expController) throws CommandException; |
| |
| /** |
| * Resume the expression on this connection. |
| * @param expressionID |
| * @param expController expression processor controller to use for the expression on this new connection. |
| * @throws CommandException |
| * |
| * @since 1.1.0 |
| */ |
| public void resumeExpression(int expressionID, Commands.ValueObject expController) throws CommandException; |
| |
| /** |
| * Push an expression command. This is the common portion of the |
| * subcommand. The actual data of the command will be separately done. |
| * @param expressionID |
| * @param subcommand The subcommand being sent. From IInternalExpressionConstants. |
| * |
| * @throws IOException |
| * |
| * @see org.eclipse.jem.internal.proxy.initParser.tree.IInternalExpressionConstants#PUSH_TO_PROXY_EXPRESSION |
| * @since 1.0.0 |
| */ |
| public void pushExpressionCommand(int expressionID, byte subcommand) throws IOException; |
| |
| /** |
| * Push the value object to the remote side. |
| * |
| * @param valueObject |
| * @throws CommandException |
| * |
| * @since 1.0.0 |
| */ |
| public void pushValueObject(Commands.ValueObject valueObject) throws CommandException; |
| |
| /** |
| * Push just the single byte to the remote side. |
| * @param abyte |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void pushByte(byte abyte) throws IOException; |
| |
| /** |
| * Push just the single int to the remote side. |
| * |
| * @param anInt |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void pushInt(int anInt) throws IOException; |
| |
| |
| /** |
| * Push just the singe string to the remote side. |
| * |
| * @param aString |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void pushString(String aString) throws IOException; |
| |
| /** |
| * Push just the bool to the remote side. |
| * @param aBool |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void pushBoolean(boolean aBool) throws IOException; |
| |
| /** |
| * Get the final value. It must be called after processing the proxy id resolutions even for sync (so that we can get |
| * any thrown errors). |
| * |
| * @param result |
| * @throws CommandException |
| * |
| * @since 1.1.0 |
| */ |
| public void getFinalValue(Commands.ValueObject result) throws CommandException; |
| |
| /** |
| * Send the pull value command, with the proxyids of intereset. If an error |
| * occurs, command exception is thrown. |
| * <p> |
| * After the pull value call, if no errors, the proxyids must be read, and then getFinalValue call must be sent. |
| * @param expressionID |
| * @param proxyids expression proxyids that request feedback or <code>null</code> if no proxy ids. |
| * @param sender sender to use to process the returned proxy ids, or <code>null</code> if expecting no proxy resolutions. |
| * |
| * @throws CommandException |
| * |
| * @since 1.0.0 |
| */ |
| public void pullValue(int expressionID, Commands.ValueObject proxyids, Commands.ValueSender sender) throws CommandException; |
| |
| /** |
| * Send the sync command, with the proxyids of intereset. If an error |
| * occurs, command exception is thrown. |
| * <p> |
| * After the sync call, if no errors, the returned proxyids must be processed and then the final endValue call must be sent. |
| * |
| * @param expressionID |
| * @param proxyids expression proxyids that request feedback or <code>null</code> if no proxy ids. |
| * @param sender sender to use to process the proxy id resolutions, or <code>null</code> if expecting no proxy ids. |
| * |
| * @throws CommandException |
| * |
| * @since 1.0.0 |
| */ |
| public void sync(int expressionID, Commands.ValueObject proxyids, Commands.ValueSender sender) throws CommandException; |
| |
| /** |
| * Stop expression processing. |
| * @param expressionID |
| * |
| * @throws IOException |
| * |
| * @since 1.0.0 |
| */ |
| public void stopExpressionProcessing(int expressionID) throws IOException; |
| |
| } |