package com.aincc.lib.network.common;
/**
*
* <h3><b>BaseTrans</b></h3></br>
*
* abstract base transaction class
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public abstract class BaseTrans
{
/**
* tag
*/
// private static final String TAG = BaseTrans.class.getSimpleName();
/**
* base request parameter
*
* @since 1.0.0
*/
protected BaseParam param;
/**
* create new instance
*
* @since 1.0.0
* @param packet
* @return new instance
* @throws Exception
*/
public static BaseTrans newInstance(IPacket packet) throws Exception
{
Class<? extends BaseTrans> transactionClass = Class.forName(packet.getTransCode()).asSubclass(BaseTrans.class);
BaseTrans transaction = (BaseTrans) transactionClass.newInstance();
transaction.setPacket(packet);
return transaction;
}
/**
* create new instance
*
* @since 1.0.0
* @param packet
* @param transactionClass
* @return BaseTrans object
* @throws Exception
*/
public static BaseTrans newInstance(IPacket packet, Class<? extends BaseTrans> transactionClass) throws Exception
{
BaseTrans transaction = (BaseTrans) transactionClass.newInstance();
transaction.setPacket(packet);
return transaction;
}
/**
* create new instance
*
* @since 1.0.0
* @param packet
* @param transactionClass
* @param param
* @return BaseTrans object
* @throws Exception
*/
public static BaseTrans newInstance(IPacket packet, Class<? extends BaseTrans> transactionClass, BaseParam param) throws Exception
{
BaseTrans transaction = (BaseTrans) transactionClass.newInstance();
transaction.setParam(param);
transaction.setPacket(packet);
return transaction;
}
/**
* @return the param
*/
public BaseParam getParam()
{
return param;
}
/**
* @param param
* the param to set
*/
public void setParam(BaseParam param)
{
this.param = param;
}
/**
* make packet
*
* @since 1.0.0
* @param packet
* @throws Exception
*/
public abstract void setPacket(IPacket packet) throws Exception;
/**
* get packet (for send message)
*
* @since 1.0.0
* @return IPacket
* @throws Exception
*/
public abstract IPacket getPacket() throws Exception;
}