package ALBasicProtocolPack.BasicObj;
import java.nio.ByteBuffer;
import ALBasicProtocolPack._IALProtocolStructure;
/**********************
* 协议处理类,使用模板方式定义,可直接生成对应的消息结构体并进行处理
*
* @author alzq.z
* @email zhuangfan@vip.163.com
* @time Feb 19, 2013 10:56:34 AM
*/
public abstract class _AALBasicProtocolSubOrderDealer<T extends _IALProtocolStructure>
{
/** 实例化对象,用于获取信息使用 */
private T basicInfoObj;
public _AALBasicProtocolSubOrderDealer()
{
basicInfoObj = _createProtocolObj();
}
/*********************
* 消息带入的处理函数,将协议从字节中读取出并带入实际处理函数
*
* @author alzq.z
* @time Feb 19, 2013 10:52:19 AM
*/
public void dealProtocol(_IALProtocolReceiver _receiver, ByteBuffer _msgBuffer)
{
T protocolObj = _createProtocolObj();
protocolObj.readPackage(_msgBuffer);
//处理数据,并返回结果
_dealProtocol(_receiver, protocolObj);
}
/************
* 自动根据处理的消息对象获取本处理对象处理的协议主,副协议号
*
* @author alzq.z
* @time Feb 19, 2013 11:36:41 AM
*/
public byte getMainOrder() {return basicInfoObj.getMainOrder();}
public byte getSubOrder() {return basicInfoObj.getSubOrder();}
/**********************
* 创建消息结构体用于读取字节,并转化为消息对象
*
* @author alzq.z
* @time Feb 19, 2013 10:52:25 AM
*/
protected abstract T _createProtocolObj();
/**********************
* 消息处理函数,直接带入对应的消息结构体
*
* @author alzq.z
* @time Feb 19, 2013 10:52:30 AM
*/
protected abstract void _dealProtocol(_IALProtocolReceiver _receiver, T _msg);
}