优化E0指令
This commit is contained in:
parent
ffd19acbfc
commit
9c2cdb5214
45
src/main/java/racal/sunyard/main/BytesList.java
Normal file
45
src/main/java/racal/sunyard/main/BytesList.java
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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
Loading…
Reference in New Issue
Block a user