Smack Connection 的继承关系和读写接口使用说明

17 篇文章 0 订阅
15 篇文章 3 订阅


一、简介

Connection是Smack核心类,提供了灵活的扩展机制和监听器机制。

二、继承关系

Connection是一个抽象类,定义了一组为扩展使用的 Listener 的集合。

XMPPConnection是一个继承了Connection的类,实现了Connection定义的一些方法。





根据前面的文章分析,当Smack 完成资源装载后,完成socket端口绑定,进入监听状态。


三、数据输入和输出的入口

1、所有的接收数据以及接收的状态都发送到右侧上面红色框中的接口的实现类中。

2、发送数据通过XmppConnection的sendPacket(Packet packet)方法,经由PacketWriter-->connection.writer--->socket 发出。


四、接口的分类和作用

1、ConnectionCreationListener 接口

向实现了这个接口的类传递一个 Connection的实例。


2、ConnectionListener 接口

向实现了这个接口的类传递 Connection 的状态,包括:


   public void connectionClosed();

    public void connectionClosedOnError(Exception e);

    public void reconnectingIn(int seconds);

    public void reconnectionSuccessful();

    public void reconnectionFailed(Exception e);


3、PacketListener 接口(用于读取数据)

向实现了这个接口的类传递 Packet,子类实现 

processPacket(Packet packet) 

就可以得到 Packet 。


4、PacketInterceptor 接口(用于写入数据)

向实现了这个接口的类传递 Packet,子类实现

interceptPacket(Packet packet)

在packet写入socket之前 通过这个接口可以修改Packet的内容。


5、PacketCollector 类

这是个类,本身内置队列。在将packet分发给其他listener之前,将满足条件的packet加入队列中。


void processPacket(Packet packet)  方法是进入队列,如果队列已满,先进的移除,后进的加入队尾。

void cancel()  方法是清空队列,停止packet搜集。

Packet nextResult() 方法是得到一个有效的Packet,如果没有则等待,直到有效packet返回。

Packet pollResult()  方法是得到一个packet,如果没有可以返回 null。



之后所有的功能和代码都是围绕上述的接口上进行封装和扩展的。


<EOF>



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值