Smack Connection 的继承关系和读写接口使用说明
2014-11-25 17:54
344 查看
一、简介
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。
之后所有的功能和代码都是围绕上述的接口上进行封装和扩展的。
http://blog.csdn.net/teamlet/article/details/26372231
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。
之后所有的功能和代码都是围绕上述的接口上进行封装和扩展的。
http://blog.csdn.net/teamlet/article/details/26372231
相关文章推荐
- Smack Connection 的继承关系和读写接口使用说明
- 黑马程序员---集合体系的继承关系图。顶层接口Collection中的方法,迭代器Iterator使用和原理,List派系特点
- Java IO流类继承关系及使用说明
- Java IO流类继承关系及使用说明
- Java IO流类继承关系及使用说明
- 1.3 实体继承关系配置及使用EntityGen和Configurator[发布时间:9/8]
- Ilungasoft Framework: 使用视图处理继承关系、Tree结构实体关系映射示例[源码]
- 1.3 实体继承关系配置及使用EntityGen和Configurator[发布时间:9/8]
- hibernate3 关系映射 使用说明
- YFIOServer 后台IO接口使用说明
- YFIOServer 后台IO接口使用说明
- .net集合类型的接口说明与使用
- 继承,抽象,接口之间的关系和区别
- StructLayout在继承关系中的使用
- Hibernate3 关系映射使用说明
- Hibernate3 关系映射使用说明(一)
- Hibernate3 关系映射使用说明(一)
- YFIOServer 后台IO接口使用说明
- 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)
- 《Effective C#》Item 19:推荐在继承中使用接口