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

53 篇文章 0 订阅
49 篇文章 0 订阅

一 接口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对象的介绍,参见后文。

  1. // Use an anonymous inner class to define a packet filter that returns
  2. // all packets that have a packet ID of "RS145".
  3. PacketFilter myFilter = new PacketFilter() {
  4. public boolean accept(Packet packet) {
  5. return "RS145".equals(packet.getPacketID());
  6. }
  7. };
  8. // Create a new packet collector using the filter we created.
  9. 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值