swift xmpp代码学习

本文深入探讨了Swiften框架中如何使用Boost::Signal和Slot机制进行事件处理,包括引用计数智能指针enable_shared_from_this的应用,以及其在Java库中的实现方式。详细介绍了如何通过接口定义和回调函数来实现异步编程中的事件监听和响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



命名约束: 

信号槽

Signal                 Slot

signalName  -> handleSingleName

不管是boost::Signal或是Qt的signal slot机制,槽一般的命名约束就是handleXXX

enable_shared_from_this

如果采用boost::enable_shared_from_this typedef 一个ref名字

class SWIFTEN_API BoostConnection : public Connectionpublic EventOwnerpublic boost::enable_shared_from_this<BoostConnection> {

public:

typedef boost::shared_ptr<BoostConnectionref;

这是Boost引用计数智能指针的实现.可通过this指针获取到share_ptr

 Signal定义也是接口的一部分:

Swiften采用泛化的接口定义,Boost::Signal定义(以后简称回调定义)也是接口定义一部分;这估计也是导致swiften无法在swig中翻译成Java的最大原因, swift有单独的利用Swift架构实现的Java库名曰stoke!

/// 服务器接口类

class SWIFTEN_API ConnectionServer {

public:

enum Error {

Conflict,

UnknownError

};

/// 接口

virtual void start() = 0;

virtual void stop() = 0;

...

/// 有新用户连接上回调

boost::signal<void (boost::shared_ptr<Connection>)> onNewConnection;

};

Boost::Signal是个一对多的函数回调,当事件触发时(比如调用onNewConnection),他会以此调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值