DtkCore
DTK Core module
载入中...
搜索中...
未找到
Dtk::Core::DDBusExtendedAbstractInterface类 参考

扩展DBus接口, 继承自QDBusAbstractInterface 更多...

类 Dtk::Core::DDBusExtendedAbstractInterface 继承关系图:

Public 槽

void startServiceProcess ()
 启动服务进程
 

信号

void serviceValidChanged (const bool valid) const
 服务是否有效状态改变信号
 
void serviceStartFinished (const quint32 ret) const
 服务启动完成通知信号
 
void propertyChanged (const QString &propertyName, const QVariant &value)
 属性改变信号
 
void propertyInvalidated (const QString &propertyName)
 属性失效通知信号
 
void asyncPropertyFinished (const QString &propertyName)
 异步获取属性完成通知信号
 
void asyncSetPropertyFinished (const QString &propertyName)
 异步设置属性完成通知信号
 
void asyncGetAllPropertiesFinished ()
 异步获取所有属性完成的通知信号
 

Public 成员函数

bool sync () const
 获取是否同步
 
void setSync (bool sync)
 设置是否同步
 
void setSync (bool sync, bool autoStart)
 设置是否同步和自启动
 
bool useCache () const
 获取是否使用缓存
 
void setUseCache (bool useCache)
 设置是否使用缓存
 
void getAllProperties ()
 获取所有属性
 
QDBusError lastExtendedError () const
 获取上一次的错误
 

Protected 成员函数

 DDBusExtendedAbstractInterface (const QString &service, const QString &path, const char *interface, const QDBusConnection &connection, QObject *parent)
 构造函数
 
void connectNotify (const QMetaMethod &signal)
 信号连接通知函数
 
void disconnectNotify (const QMetaMethod &signal)
 信号断开连接通知函数
 
QVariant internalPropGet (const char *propname, void *propertyPtr)
 内部属性获取函数
 
void internalPropSet (const char *propname, const QVariant &value, void *propertyPtr)
 内部属性设置函数
 

属性

bool sync
 是否同步获取属性
 
bool useCache
 是否使用缓存
 

详细描述

扩展DBus接口, 继承自QDBusAbstractInterface

和QDBusAbstractInterface相比, 该类连接了org.freedesktop.DBus.Properties接口, 提供了异步访问属性的接口, 可以方便地通过此类进行异步DBus通信.
同时此类提供了属性改变信号的分发和中继.

构造及析构函数说明

◆ DDBusExtendedAbstractInterface()

DDBusExtendedAbstractInterface::DDBusExtendedAbstractInterface ( const QString &  service,
const QString &  path,
const char *  interface,
const QDBusConnection &  connection,
QObject *  parent 
)
protected

构造函数

参数
[in]service该interface属于的服务
[in]path该interface属于的对象路径
[in]interface该interface实际连接的接口
[in]connection用于连接该interface的DBus连接
[in]parent父对象
注解
该构造函数受到保护, 只有子对象才能访问.

成员函数说明

◆ asyncGetAllPropertiesFinished

void DDBusExtendedAbstractInterface::asyncGetAllPropertiesFinished ( )
signal

异步获取所有属性完成的通知信号

参见
getAllProperties

getAllProperties方法并没有返回值, 须监听此信号以实现完整功能.

◆ asyncPropertyFinished

void DDBusExtendedAbstractInterface::asyncPropertyFinished ( const QString &  propertyName)
signal

异步获取属性完成通知信号

参数
[in]propertyName获取成功的属性名

◆ asyncSetPropertyFinished

void DDBusExtendedAbstractInterface::asyncSetPropertyFinished ( const QString &  propertyName)
signal

异步设置属性完成通知信号

参数
[in]propertyName设置成功的属性名

◆ connectNotify()

void DDBusExtendedAbstractInterface::connectNotify ( const QMetaMethod &  signal)
protected

信号连接通知函数

参数
[in]signal连接到该对象的信号

该函数重写了QObject的connectNotify函数, 当有某一个信号连接到该对象的时候, 该函数就会被调用.

◆ disconnectNotify()

void DDBusExtendedAbstractInterface::disconnectNotify ( const QMetaMethod &  signal)
protected

信号断开连接通知函数

参数
[in]signal断连的信号

该函数重写了QObject的disconnectNotify函数, 当有某一个连接到该对象的信号断连时, 该函数就会被调用.

◆ getAllProperties()

void DDBusExtendedAbstractInterface::getAllProperties ( )

获取所有属性

参见
sync

该方法会调用org.freedesktop.DBus.Properties接口的GetAll方法, 获取所有属性并且发送属性改变信号, 如果是同步模式(sync为true), 该方法会使用同步调用call.
sync为false的时候会使用异步调用asyncCall.

◆ internalPropGet()

QVariant DDBusExtendedAbstractInterface::internalPropGet ( const char *  propname,
void *  propertyPtr 
)
protected

内部属性获取函数

参数
[in]propname属性名
[in]propertyPtr属性缓存指针
参见
useCache
sync

当useCache为true的时候, 该函数仅仅返回propertyPtr指向的内存拷贝.

◆ internalPropSet()

void DDBusExtendedAbstractInterface::internalPropSet ( const char *  propname,
const QVariant &  value,
void *  propertyPtr 
)
protected

内部属性设置函数

参数
[in]propname属性名
[in]value要设置的值
[in]propertyPtr属性缓存指针
参见
sync

◆ lastExtendedError()

QDBusError DDBusExtendedAbstractInterface::lastExtendedError ( ) const
inline

获取上一次的错误

返回
QDBusError 上一次由DBus调用引起的错误

◆ propertyChanged

void DDBusExtendedAbstractInterface::propertyChanged ( const QString &  propertyName,
const QVariant &  value 
)
signal

属性改变信号

参数
[in]propertyName改变的属性名
[in]value改变后的属性值

◆ propertyInvalidated

void DDBusExtendedAbstractInterface::propertyInvalidated ( const QString &  propertyName)
signal

属性失效通知信号

参数
[in]propertyName失效的属性名

该信号会在DBus属性改变但是本地反序列化失败的情况下发出.

◆ serviceStartFinished

void DDBusExtendedAbstractInterface::serviceStartFinished ( const quint32  ret) const
signal

服务启动完成通知信号

参数
[in]ret启动服务的返回值

启动服务是调用org.freedesktop.DBus服务的/路径的StartServiceByName方法, ret为StartServiceByName的返回值.

◆ serviceValidChanged

void DDBusExtendedAbstractInterface::serviceValidChanged ( const bool  valid) const
signal

服务是否有效状态改变信号

参数
[in]valid服务是否有效

◆ setSync() [1/2]

void DDBusExtendedAbstractInterface::setSync ( bool  sync)

设置是否同步

参数
[in]sync是否是同步模式
参见
sync

该函数内部实现调用setSync, autoStart参数值为true, 即默认自启动.

◆ setSync() [2/2]

void DDBusExtendedAbstractInterface::setSync ( bool  sync,
bool  autoStart 
)

设置是否同步和自启动

参数
[in]sync是否同步
[in]autoStart是否自启动
参见
sync

◆ setUseCache()

void DDBusExtendedAbstractInterface::setUseCache ( bool  useCache)
inline

设置是否使用缓存

参见
useCache

◆ startServiceProcess

void DDBusExtendedAbstractInterface::startServiceProcess ( )
slot

启动服务进程

该函数会调用org.freedesktop.DBus的服务的/路径的StartServiceByName方法启动DDBusExtendedAbstractInterface对应的Service.

◆ sync()

bool DDBusExtendedAbstractInterface::sync ( ) const
inline

获取是否同步

参见
sync

◆ useCache()

bool DDBusExtendedAbstractInterface::useCache ( ) const
inline

获取是否使用缓存

参见
useCache

属性说明

◆ sync

Dtk::Core::DDBusExtendedAbstractInterface::sync
readwrite

是否同步获取属性

当sync为false的时候, 在调用属性的get函数的时候会一直返回空值, 解决方法是监听属性的changed信号并自行保存一份缓存, 让changed信号修改这个缓存.

◆ useCache

Dtk::Core::DDBusExtendedAbstractInterface::useCache
readwrite

是否使用缓存

如果使用缓存, 在内部获取属性的时候将不再进行DBus调用更新属性.


该类的文档由以下文件生成: