认识smack中的基本对象 - 接口PacketFilter

来源:互联网 发布:linux mysql启动命令 编辑:程序博客网 时间:2024/05/22 06:33

一 接口PacketFilter的介绍

该接口定义了一种过滤packet对象的方法,对于一个packet结果集,只取具有指定属性的子集。该接口主要用于创建packet的监听器(listener)和收集器(collector),通过PacketFilter对监听器和收集器需要处理的packet进行过滤,让他们去处理指定的一部分packet。

Smack中已经预定义了一些基本的packet过滤器,也就是继承该接口的子类:AndFilter,FromContainsFilter,FromMatchesFilter,IQTypeFilter, MessageTypeFilter, NotFilter, OrFilter, PacketExtensionFilter, PacketIDFilter, PacketTypeFilter, ThreadFilter, ToContainsFilter。这些过滤器又可以通过AndFilter和OrFilter进行组合,从而构造一些更复杂的过滤器。通过实现该接口,用户还可以自定义过滤器。

 

二使用示例

下面的示例所创建的过滤器,就只保留指定ID的packet。其实现方法:使用匿名内部类定义一个PacketFilter,需要实现其accept方法,返回布尔值表示是否符合匹配条件,创建好的packetFilter接口可以被用于创建PacketCollector对象,有关PacketCollector对象的介绍,参见后文。

 // 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

原创粉丝点击