package ALBasicServer.ALSocket;
import java.nio.ByteBuffer;
import ALBasicProtocolPack._IALProtocolStructure;
import ALBasicProtocolPack.BasicObj._IALProtocolReceiver;
/***********************
* 服务器架构下的消息处理对象,作为带入到消息实际处理函数中的一个参数
*
* @author alzq.z
* @email zhuangfan@vip.163.com
* @time Feb 19, 2013 11:48:14 AM
*/
public abstract class _AALBasicServerSocketListener implements _IALProtocolReceiver
{
/** Socket对象 */
private ALBasicServerSocket _m_csSocket;
/************
* 获取Socket对象ID
*
* @author alzq.z
* @time Feb 19, 2013 11:49:51 AM
*/
public long getSocketID()
{
if(null == _m_csSocket)
return 0;
return _m_csSocket.getSocketID();
}
public ALBasicServerSocket getSocket() {return _m_csSocket;}
public boolean enable() {return (null != _m_csSocket);}
//内部函数,设置Socket对象
public void setSocket(ALBasicServerSocket _socket) {_m_csSocket = _socket;}
/**************
* 发送消息到对应的接收端
*
* @author alzq.z
* @time Feb 19, 2013 11:52:17 AM
*/
public void send(ByteBuffer _buffer)
{
if(null == _m_csSocket || null == _buffer)
return ;
_m_csSocket.send(_buffer);
}
public void send(_IALProtocolStructure _protocolObj)
{
if(null == _m_csSocket || null == _protocolObj)
return ;
//协议打包主体
ByteBuffer msg = _protocolObj.makeFullPackage();
_m_csSocket.send(msg);
}
/*****************
* 断开Socket
*
* @author alzq.z
* @time Feb 19, 2013 1:35:39 PM
*/
public void logout()
{
ALServerSocketMgr.getInstance().kickUser(_m_csSocket);
}
/******************
* 获取到相关消息并处理的函数
*
* @author alzq.z
* @time Feb 19, 2013 1:36:05 PM
*/
public abstract void receiveMsg(ByteBuffer _buf);
/*******************
* 连接并验证成功时调用的函数
*
* @author alzq.z
* @time Feb 19, 2013 1:36:37 PM
*/
public abstract void login();
/*******************
* Socket断开连接时调用的函数
*
* @author alzq.z
* @time Feb 19, 2013 1:37:13 PM
*/
public abstract void disconnect();
}