📄 message.java
字号:
package com.jpmorgan.neo.neoclient.mds.slcv5.parser;
/**
* The super class of all GL Message types, a GL message is a string of variable length in<br>
* ASCII 8-bit format that must adhere to the following format:<br>
* <br>
* |----|--------|---------|--------|
* | LG | HEADER | DATA | FOOTER |
* |----|--------|---------|--------|
*
*/
public abstract class Message {
//total message length, including LG,Header,Data,Footer.
protected LG lg;
//General message information.
protected Header header;
//end of message.
protected Footer footer;
/**
* the request number is define in sub class.
* @param requestNubmer not use
*/
public Message(String requestNubmer) {
lg = new LG();
header = new Header(requestNubmer);
footer = new Footer();
}
/**
* return bytes array.
* @return byte array
*/
public byte[] getBytes() {
StringBuffer buffer = new StringBuffer();
byte[] aheader = header.getBytes();
byte[] abody = this.getBodyBytes();
byte[] afooter = footer.getBytes();
buffer.append(new String(aheader));
buffer.append(new String(abody));
buffer.append(new String(afooter));
//total of bytes
int total = buffer.toString().length()+2;
buffer = new StringBuffer();
lg.setBytes(ByteUtil.int2Byte(total));
buffer.append(new String(lg.getBytes()));
buffer.append(new String(aheader));
buffer.append(new String(abody));
buffer.append(new String(afooter));
return buffer.toString().getBytes();
}
/**
* put in byte array it will fill fields automatism.
* @param bytes
*/
public void setBytes(byte[] ascii) {
parseHeader(ascii);
parseBody(ByteUtil.subBytes(ascii, 32, ascii.length - 3));
}
/**
* pasre bytes to header.
* @param bytes
*/
public void parseHeader(byte[] bytes){
header.setBytes(ByteUtil.subBytes(bytes, 0, 32));
}
/**
* parse byte array to fill fields
* @param ascii it must be a ascii code byte
*/
protected void parseBody(byte[] ascii) {
//parse byte fill fields
MessageParser.getInstance().parseBytesToField(this, ascii);
}
/**
* parse fields to bytes array
* @return
*/
protected byte[] getBodyBytes(){
//parse fields to bytes
return MessageParser.getInstance().parseFieldsToBytes(this);
}
/**
* return reply request number that need + 1 to mapping xml file config.
* @return request number
*/
public String getReplyNumber(){
int number = Integer.parseInt(header.getRequestNumber()) + 1;
return ByteUtil.fillZeroBefore(number,5);
}
public String getRequestNumber(){
return header.getRequestNumber();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -