?? deliverbean.java
字號:
package com.ll.smsbeans;
import java.io.Serializable;
import com.ll.smsbeans.cmpp3.CmppDeliver;
import com.ll.smsbeans.cmpp3.CmppDeliverResp;
import com.ll.smsbeans.cmpp3.CmppDeliverRespBuilder;
import com.ll.smsbeans.cmpp3.CmppPacket;
import com.ll.smsbeans.cmpp3.CmppPacketCommon;
/**
*
* <code>DeliverBean</code> 通過Connection接收Delive和發(fā)送DeliveResp數(shù)據(jù)包,
* 這個包不自動回復接收到的Deliver,需要使用者根據(jù)接收到的信息決定回復的值。
* Connection為已經(jīng)連接的ConnectBean,<code>DeliverBean</code>必須指定。
*
*
* @author listlike <a href="mailto:listlike@hotmail.com">
* <i><listlike@hotmail.com></i></a>
*
*/
public class DeliverBean implements Serializable, PacketListenerRegistrar
{
/** 必須的連接bean */
private ConnectionBean connection = null;
/** 過濾發(fā)包,轉發(fā)包 */
private PacketRebroadcaster rebroadcaster = null;
/**
* 通過這個類,實現(xiàn)定制的過濾,在這個類中只轉發(fā)Deliver包。
*/
class DeliverListener extends PacketRebroadcaster
{
/**
* <code>receivedPacket</code> 過濾接收報
*
* @param p a <code>PacketEvent</code> 只
*/
public void receivedPacket(PacketEvent p)
{
if ((p.getPacket() instanceof Packet)
&& (p.getSource() == connection))
{
if (p.getPacket() instanceof CmppPacket)
{
CmppPacket cp = (CmppPacket) p.getPacket();
if (cp.getCommandId() == CmppPacketCommon.ID_CMPP_DELIVER)
{
fireReceived(p);
}
}
}
}
/**
* <code>sentPacket</code> 過濾發(fā)送包
*
* @param p <code>PacketEvent</code> 值
*/
public void sentPacket(PacketEvent p)
{
if ((p.getPacket() instanceof Packet)
&& (p.getSource() == connection))
{
if (p.getPacket() instanceof CmppPacket)
{
CmppPacket cp = (CmppPacket) p.getPacket();
if (cp.getCommandId()
== CmppPacketCommon.ID_CMPP_DELIVER_RESP)
{
fireSent(p);
}
}
}
}
/**
*
* <code>sendFailed</code> 過濾發(fā)送失敗事件。
*
* @param p <code>PacketEvent</code> 值
*/
public void sendFailed(PacketEvent p)
{
if ((p.getPacket() instanceof Packet)
&& (p.getSource() == connection))
{
if (p.getPacket() instanceof CmppDeliverResp)
fireSendFailed(p);
}
}
}
/** 建立一個新的 <code>DeliverBean</code> 實例。 */
public DeliverBean()
{
rebroadcaster = new DeliverListener();
}
/**
* 建立一個新的 <code>DeliverBean</code> 實例, 設置連接對象。
*
* @param connection <code>ConnectionBean</code> 當前對象的使用的連接
*/
public DeliverBean(ConnectionBean connection)
{
this();
setConnection(connection);
}
/**
* <code>setConnection</code> 在對象建立后設置連接對象。
*
* @param connection <code>ConnectionBean</code> 當前對象的使用的連接
*/
public void setConnection(ConnectionBean connection)
{
this.connection = connection;
rebroadcaster.registerListener(connection);
}
/**
* <code>getConnection</code> 返回當前對象使用的連接。
*
* @return <code>ConnectionBean</code> 返回當前對象使用的連接
*/
public ConnectionBean getConnection()
{
return connection;
}
/**
* <code>sendDeliverResp</code> 發(fā)送DeliverResp包
* @param deliver <code>CmppDeliver</code>需要回復的包。
* @param result 返回值。
*/
public void sendDeliverResp(CmppDeliver deliver,int result)
{
CmppDeliverRespBuilder cdrb=new CmppDeliverRespBuilder();
cdrb.setSequenceId( deliver.getSequenceId());
cdrb.setMsgId( deliver.getMsgId());
cdrb.setResult(result);
connection.send(cdrb.builder());
}
/**
* <code>addPacketListener</code> 增加一個新的PacketListener。
*
* @param l <code>PacketListener</code> 增加的PacketListener。
*/
public synchronized void addPacketListener(PacketListener l)
{
rebroadcaster.addPacketListener(l);
}
/**
* <code>delPacketListener</code> 刪除一個PacketListener。
*
* @param l <code>PacketListener</code> 被刪除的PacketListener
*/
public synchronized void delPacketListener(PacketListener l)
{
rebroadcaster.delPacketListener(l);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -