一 接口PacketFilter的介紹
該接口定義了一種過(guò)濾packet對(duì)象的方法,對(duì)于一個(gè)packet結(jié)果集,只取具有指定屬性的子集。該接口主要用于創(chuàng)建packet的監(jiān)聽(tīng)器(listener)和收集器(collector),通過(guò)PacketFilter對(duì)監(jiān)聽(tīng)器和收集器需要處理的packet進(jìn)行過(guò)濾,讓他們?nèi)ヌ幚碇付ǖ囊徊糠謕acket。
Smack中已經(jīng)預(yù)定義了一些基本的packet過(guò)濾器,也就是繼承該接口的子類(lèi):AndFilter,FromContainsFilter,FromMatchesFilter,IQTypeFilter, MessageTypeFilter, NotFilter, OrFilter, PacketExtensionFilter, PacketIDFilter, PacketTypeFilter, ThreadFilter, ToContainsFilter。這些過(guò)濾器又可以通過(guò)AndFilter和OrFilter進(jìn)行組合,從而構(gòu)造一些更復(fù)雜的過(guò)濾器。通過(guò)實(shí)現(xiàn)該接口,用戶(hù)還可以自定義過(guò)濾器。
二使用示例
下面的示例所創(chuàng)建的過(guò)濾器,就只保留指定ID的packet。其實(shí)現(xiàn)方法:使用匿名內(nèi)部類(lèi)定義一個(gè)PacketFilter,需要實(shí)現(xiàn)其accept方法,返回布爾值表示是否符合匹配條件,創(chuàng)建好的packetFilter接口可以被用于創(chuàng)建PacketCollector對(duì)象,有關(guān)PacketCollector對(duì)象的介紹,參見(jiàn)后文。
- // Use an anonymous inner class to define a packet filter that returns
- // all packets that have a packet ID of "RS145".
- PacketFilter myFilter = new PacketFilter() {
- public boolean accept(Packet packet) {
- return "RS145".equals(packet.getPacketID());
- }
- };
- // Create a new packet collector using the filter we created.
- PacketCollector myCollector = packetReader.createPacketCollector(myFilter);
- // Use an anonymous inner class to define a packet filter that returns
- // all packets that have a packet ID of "RS145".
- PacketFilter myFilter = new PacketFilter() {
- public boolean accept(Packet packet) {
- return "RS145".equals(packet.getPacketID());
- }
- };
- // Create a new packet collector using the filter we created.
- PacketCollector myCollector = packetReader.createPacketCollector(myFilter);
原文:http://www.igniterealtime.org/builds/smack/docs/3.2.2/javadoc/index.html?org/jivesoftware/smack/AccountManager.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。