xtn5250mg/net/infordata/em/tn5250/XISOHOrd.java

102 lines
2.6 KiB
Java
Raw Permalink Normal View History

2025-05-13 14:41:26 +02:00
/*
Copyright 2007 Infordata S.p.A.
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.
*/
/*
***
30/06/98 rel. _.___- Swing, JBuilder2 e VSS.
*/
package net.infordata.em.tn5250;
import java.io.IOException;
import java.io.InputStream;
import net.infordata.em.tnprot.XITelnet;
///////////////////////////////////////////////////////////////////////////////
/**
* 5250 SOH Order
*
* @version
* @author Valentino Proietti - Infordata S.p.A.
*/
public class XISOHOrd extends XI5250Ord {
protected byte[] ivData;
protected int ivLen;
/**
* @exception XI5250Exception raised if order parameters are wrong.
*/
@Override
protected void readFrom5250Stream(InputStream inStream)
throws IOException, XI5250Exception {
int i = 0;
int bb;
ivLen = inStream.read();
if (ivLen > 0) {
ivData = new byte[ivLen];
for (i = 0; (i < ivLen) && ((bb = inStream.read()) != -1); i++)
ivData[i] = (byte)bb;
}
// parameters check
if (ivLen < 0 || ivLen > 7 || i < ivLen)
throw new XI5250Exception("Bad SOH Order", XI5250Emulator.ERR_INVALID_SOH_LENGTH);
}
@Override
protected void execute() {
// I didn' t found them on docs, but i need them
ivEmulator.ivCmdList.ivICOrderExecuted = false;
ivEmulator.removeFields();
ivEmulator.ivPendingCmd = null; //!!0.92a
if (ivLen >= 2) {
// resequencing byte present
if (ivLen >= 3) {
// error line address present
if (ivLen >= 4) {
ivEmulator.setErrorRow(ivData[3] - 1);
// function keys mask present
if (ivLen >= 7) {
int xx = XITelnet.toInt(ivData[4]) << 16 | //!!1.05a
XITelnet.toInt(ivData[5]) << 8 |
XITelnet.toInt(ivData[6]);
ivEmulator.setFunctionKeysMask(xx);
}
}
}
}
}
@Override
public String toString() {
String str = "";
for (int i = 0; i < ivLen; i++)
str += XITelnet.toHex(ivData[i]) + ",";
return super.toString() + " [" + ivLen + ",[" + str + "]]";
}
}