blob: 2a15c523cb75d9a3097284b4d787ef6a2e7f625b [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2008, 2018 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.rj.server;
import java.io.IOException;
import org.eclipse.statet.rj.data.RJIO;
import org.eclipse.statet.rj.data.RJIOExternalizable;
public abstract class MainCmdItem implements RJIOExternalizable {
public static final byte T_NONE= 0;
/**
* {@link ConsoleReadCmdItem}
*/
public static final byte T_CONSOLE_READ_ITEM= 0x01;
/**
* {@link ConsoleWriteCmdItem}
*/
public static final byte T_CONSOLE_WRITE_ITEM= 0x02;
/**
* {@link ConsoleMessageCmdItem}
*/
public static final byte T_MESSAGE_ITEM= 0x04;
/**
* {@link ExtClientCmdItem}
*/
public static final byte T_EXT_CLIENT_ITEM= 0x05;
/**
* {@link GDCmdItem}
*/
public static final byte T_GRAPH_ITEM= 0x07;
/**
* T_id < => initiated by server
* T_id > => initiated by client
*/
public static final byte T_S2C_C2S= 9;
/**
* {@link MainCtrlCmdItem}
*/
public static final byte T_MAIN_CTRL_ITEM= 0x10;
/**
* {@link DataCmdItem}
*/
public static final byte T_DATA_ITEM= 0x11;
/**
* {@link GraOpCmdItem}
*/
public static final byte T_GRAPHICS_OP_ITEM= 0x12;
/**
* {@link DbgCmdItem}
*/
public static final byte T_DBG_ITEM= 0x14;
/**
* Inside server only
*/
public static final byte T_SRV_ITEM= 0x20;
protected static final int OM_STATUS= 0x00f00000; // 0xf << OS_STATUS
protected static final int OS_STATUS= 20;
protected static final int OM_WITH= 0x0f000000;
public static final int OV_ANSWER= 0x40000000;
protected static final int OM_ANSWER= OV_ANSWER;
public static final int OV_WAITFORCLIENT= 0x80000000;
protected static final int OM_WAITFORCLIENT= OV_WAITFORCLIENT;
protected static final int OC_WAITFORCLIENT= ~(OM_WAITFORCLIENT);
public static final int OM_CUSTOM= 0x0000ffff;
protected static final int OM_CLEARFORANSWER= ~(OM_STATUS | OM_WITH);
protected int options;
public MainCmdItem next;
public int requestId;
public byte slot;
public abstract byte getCmdType();
public abstract byte getOp();
public final boolean waitForClient() {
return ((this.options & OM_WAITFORCLIENT) != 0);
}
public final boolean isAnswer() {
return ((this.options & OM_ANSWER) != 0);
}
public final int getCmdOption() {
return ((this.options & OM_CUSTOM));
}
public abstract void setAnswer(RjsStatus status);
public abstract boolean isOK();
public abstract RjsStatus getStatus();
public abstract String getDataText();
@Override
public abstract void writeExternal(RJIO io) throws IOException;
public abstract boolean testEquals(MainCmdItem other);
}