优化E0指令

This commit is contained in:
yihzhou 2023-12-06 15:25:13 +08:00
parent ffd19acbfc
commit 9c2cdb5214
3 changed files with 114 additions and 18 deletions

View File

@ -0,0 +1,45 @@
package racal.sunyard.main;
import java.util.ArrayList;
import java.util.List;
public class BytesList {
private List<byte[]> bytes = new ArrayList<byte[]>();
public BytesList(){
}
public BytesList(byte[] b){
this.append( b );
}
public void append( byte[] b ) {
bytes.add( b );
}
public byte[] toBytes(){
int len = 0;
if(1== bytes.size()){
return bytes.get(0);
}
for ( byte[] b : bytes ) {
len += b.length;
}
if ( 0 == len ) {
return new byte[0];
}
byte[] buff = new byte[ len ];
int idx = 0;
for ( byte[] b : bytes ) {
System.arraycopy( b, 0, buff, idx, b.length );
idx += b.length;
}
return buff;
}
}

View File

@ -1806,6 +1806,7 @@ public class SydApi4j implements SydApi {
r.put("retCode", false); r.put("retCode", false);
r.put("msg", error.getInfo() == null || "".equals(error.getInfo()) ? RetWrap.transMsg(error.autoInt()) : error.getInfo()); r.put("msg", error.getInfo() == null || "".equals(error.getInfo()) ? RetWrap.transMsg(error.autoInt()) : error.getInfo());
throw new SydApiException(error.getInfo(), error.autoInt());
} }
return r; return r;
} }
@ -1931,7 +1932,7 @@ public class SydApi4j implements SydApi {
//testSocket(); testSocket();
try { try {
socket.getOutputStream().write(buff); socket.getOutputStream().write(buff);
@ -2057,8 +2058,8 @@ public class SydApi4j implements SydApi {
CoderUtil.EBCDICToASCIIFIX(b, 10); CoderUtil.EBCDICToASCIIFIX(b, 10);
} }
if(debug){ if(debug){
print("EBCD 数据: \t"); // print("EBCD 数据: \t");
println(Util.bytes2HexString(bb.array())); // println(Util.bytes2HexString(bb.array()));
print("HEX数据: \t"); print("HEX数据: \t");
println(Util.bytes2HexString(bb.array())); println(Util.bytes2HexString(bb.array()));
} }
@ -2510,19 +2511,41 @@ public class SydApi4j implements SydApi {
// System.out.println("res_msh长度:"+res_msg.length); // System.out.println("res_msh长度:"+res_msg.length);
// println("\n\t res_msg=" + Util.bytes2HexString(res_msg)); // println("\n\t res_msg=" + Util.bytes2HexString(res_msg));
//println("\n\t res_msg=" + Util.bytes2HexString(res_msg)); //println("\n\t res_msg=" + Util.bytes2HexString(res_msg));
// if (retWrap.containsKey("msg_all")) {
// byte[] msg_all = (byte[]) retWrap.get("msg_all");
//
// byte[] result = new byte[res_msg.length + msg_all.length];
//
// System.arraycopy(msg_all, 0, result, 0, msg_all.length);
// System.arraycopy(res_msg, 0, result, msg_all.length, res_msg.length);
// retWrap.put("msg_all", result);
//// println("\n\t msg_all=" + Util.bytes2HexString(result));
// } else {
// retWrap.put("msg_all", res_msg);
// }
//
// cb.circle(packNo, packet, ret);
// }
// }
// msg_all 类型改 List, 唯一包尾包时还原 byte[] 类型
if (retWrap.containsKey("msg_all")) { if (retWrap.containsKey("msg_all")) {
byte[] msg_all = (byte[]) retWrap.get("msg_all"); BytesList msg_all = (BytesList) retWrap.get("msg_all");
msg_all.append( res_msg );
byte[] result = new byte[res_msg.length + msg_all.length];
System.arraycopy(msg_all, 0, result, 0, msg_all.length);
System.arraycopy(res_msg, 0, result, msg_all.length, res_msg.length);
retWrap.put("msg_all", result);
// println("\n\t msg_all=" + Util.bytes2HexString(result));
} else { } else {
retWrap.put("msg_all", res_msg); retWrap.put("msg_all", new BytesList(res_msg) );
} }
if (0 == i) {
if (1 == loop) {
// 唯一包
retWrap.put("msg_all", ((BytesList)retWrap.get("msg_all")).toBytes() );
}
} else {
if (i == (loop - 1)) {
// 尾包
retWrap.put("msg_all", ((BytesList)retWrap.get("msg_all")).toBytes() );
}
}
cb.circle(packNo, packet, ret); cb.circle(packNo, packet, ret);
} }
} }

File diff suppressed because one or more lines are too long