命名约束:
信号槽
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 Connection, public EventOwner, public boost::enable_shared_from_this<BoostConnection> {
public:
typedef boost::shared_ptr<BoostConnection> ref;
这是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),他会以此调用