public class MessageArrayBuilder {
private int capacity = 20;
private int length = 0;
public void setCapacity(int capacity) {
if (capacity > 0) {
this.capacity = capacity;
}
}
public MessageArrayBuilder() {}
public MessageArrayBuilder(int capacity) {
setCapacity(capacity);
}
private byte[] array = new byte[capacity];
private int index = 0 ;
public MessageArrayBuilder append(byte b) {
if (index >= array.length) {
byte[] newArray = new byte[array.length + capacity];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
}
array[index] = b;
index++;
return this;
}
public MessageArrayBuilder append(byte[] array) {
for (byte b : array) {
append(b);
}
return this;
}
public MessageArrayBuilder append(String string) {
return append(string.getBytes(Charset.forName("GBK")));
}
public void addByte(int i){
append(intToByte(i)[0]);
}
public void addDWORD(int i){
append(intToDWORD(i));
}
public int addDWORDLength(int i){
return intToDWORD(i).length;
}
public void addWORD(int i){
append(intToWORD(i));
}
public void addBCD(String string){
append(hexStringToByte(string));
}
public int addBCDLength(String string){
return hexStringToByte(string).length;
}
public void append(int paramId, String string){
append(paramId, string , true);
}
public void appendBCD(int paramId, String string){
length++;
addWORD(paramId);
addByte(addBCDLength(string));
addBCD(string);
}
public void append(int paramId, String string, boolean fillLength){
length++;
addWORD(paramId);
if(StringUtils.isBlank(string)){
if(fillLength){
addByte(0);
}
return;
}
addByte(string.getBytes().length);
append(string);
}
public void append(int paramId, int latlng){
length++;
addWORD(paramId);
addByte(addDWORDLength(latlng));
addDWORD(latlng);
}
public void insertFirst(byte b){
byte[] array = getBytes();
byte[] newArray = new byte[array.length + capacity];
System.arraycopy(array, 0, newArray, 1, array.length);
newArray[0] = b;
this.array = newArray;
index++;
}
public byte[] getBytes() {
byte[] newArray = new byte[index];
System.arraycopy(array, 0, newArray, 0, index);
return newArray;
}
public int getLength() {
return length;
}
}
分享到:
相关推荐
1. **消息构造器/解析器的开发**:为了使HL7标准更好地适应中国医疗机构的实际需求,需要开发一套消息构造器/解析器工具,以支持HL7消息的生成和解析。 2. **数据映射与转换**:考虑到不同系统间的数据格式差异,...
5. **SOAP消息构造器**和**解析器**:帮助构建和解析SOAP消息的结构,确保符合SOAP规范。 6. **错误处理机制**:提供对SOAP错误的处理,包括标准错误和自定义错误。 源代码分析可以从以下几个方面进行: - **API...
3. **SOAP消息构造器**:这些类帮助开发者构建符合SOAP规范的消息结构。 4. **SOAP解析器**:用于解析接收到的SOAP消息,提取所需的数据。 5. **XML序列化/反序列化工具**:如XMISerializer,将Java对象和XML数据...
WSO2 ESB允许通过各种协议和服务接口进行灵活的数据交换,而“定制消息构造器”是其核心功能之一。本文将深入探讨与"WSO2-ESB-Custom-Message-Builder"相关的知识点。 **1. WSO2 ESB的角色** WSO2 ESB作为一个服务...
在Java中,Java SIP API(javax.sip)为开发者提供了实现SIP协议所需的各种组件,包括消息构造器、对话管理、事件监听等。以下是一些关键的API类: - `SipFactory`:创建SIP组件,如消息工厂、URI工厂和会话工厂。 ...
4. **丰富的扩展性**:AXIS2提供了许多扩展点,如消息处理器、消息构造器、服务部署工厂等,允许开发者自定义行为以满足特定需求。 5. **数据绑定**:AXIS2集成了多种数据绑定技术,如ADB(AXIS Data Binding)、...
3. 通过消息类的内部类 `Builder` 类构造消息构造器。 4. 设置消息字段的值。 5. 创建消息类对象。 6. 应用序列化和反序列化操作,完成数据的发送或接收。 #### 三、Protocol Buffer 实例解析 假设我们需要定义一...
5. **模块化设计**:源码可能包含了不同的模块,如消息构造器、解析器、会话管理等,展示了面向对象编程的应用。 6. **错误处理与测试**:源码中应有充分的错误处理机制,以及单元测试和集成测试,确保代码的稳定性...
2. **SIP消息构造器**:用于创建新的SIP消息,并将其发送到网络。 3. **SIP事务管理**:处理SIP请求和响应的交互,确保正确执行事务流程。 **eXosip库** eXosip库是在osip基础上构建的,旨在简化SIP应用程序的开发...
libosip2 包含了完整的头解析器、消息构造器以及用于网络传输的接口。 3. **版本 5.0 更新** 在 libosip2 5.0 版本中,开发者可以期待以下改进: - 性能优化:可能包含了内存管理、解析速度等方面的提升,以提高...
1. **消息构造器**:用户可以自定义MODBUS请求报文,包括选择功能码、寄存器地址、数据长度等参数,以匹配不同的MODBUS命令。 2. **帧发送与接收**:软件会将构造好的报文发送给从机,并显示接收到的响应,帮助分析...
2. SIP消息构造器:根据用户指令创建和发送SIP请求。 3. 事件处理器:处理接收到的SIP响应,更新用户界面状态。 而服务器端可能包括: 1. 接收器:监听网络上的SIP请求。 2. 路由器:根据请求的目的地址决定如何...
2. **消息构造器**:此功能允许用户创建、编辑和发送自定义的SOAP请求。这对于调试服务行为,尤其是处理复杂的数据结构和协议时非常有用。 3. **响应查看器**:接收到的SOAP响应将被清晰地呈现,方便开发者分析返回...
1. **消息模拟**:生成器通过模拟QQ服务器的通信协议,构造出与原始系统消息格式一致的数据包。这涉及到对QQ消息协议的理解,包括消息类型、结构、编码等。 2. **消息定制**:用户可以自定义消息内容,这可能需要一...
在 Laravel 中,开发者可以利用其丰富的工具和库来提高开发效率,而 "Former" 正是这样一个专为 Laravel 设计的表单构造器。 Former 是一款强大的第三方库,它的主要目标是帮助 Laravel 开发者快速、方便地创建和...
然而,不法分子可能会利用此类工具来构造恶意的系统消息,误导用户点击包含钓鱼链接的通知,从而实施欺诈。 【QQ10000系统消息插件生成器.exe】这个文件名表明这可能是一个针对QQ应用的系统消息插件生成程序。QQ是...
在Laravel框架中,查询构造器是一个强大的工具,用于简化对数据库的CRUD(创建、读取、更新、删除)操作。本篇文章将详细介绍如何利用Laravel查询构造器实现增删改查功能。 首先,确保你的环境配置正确,包括PHP、...
4. 错误处理:当输入不符合预期时,词法分析器应能检测到错误并提供有用的错误消息。 5. 标记类型:每个标记都应有一个类型,例如`T_KEYWORD`,`T_IDENTIFIER`,`T_NUMBER`等,这有助于后续的语法分析。 6. 词法...
5. **构造消息**:创建`Message`实例,可以是文本消息、二进制消息或其他类型,然后设置其内容和属性。 6. **发送消息**:通过`MessageProducer`将消息发送到指定的目的地。 接收消息的过程相对简单,主要涉及以下...