本文整理汇总了C++中Msg::usn方法的典型用法代码示例。如果您正苦于以下问题:C++ Msg::usn方法的具体用法?C++ Msg::usn怎么用?C++ Msg::usn使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Msg
的用法示例。
在下文中一共展示了Msg::usn方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: processDeviceDiscovery
bool HControlPointPrivate::processDeviceDiscovery(
const Msg& msg, const HEndpoint& source, HControlPointSsdpHandler*)
{
HLOG2(H_AT, H_FUN, m_loggingIdentifier);
const HUdn& resourceUdn = msg.usn().udn();
HDefaultClientDevice* device =
static_cast<HDefaultClientDevice*>(
m_deviceStorage.searchDeviceByUdn(msg.usn().udn(), AllDevices));
if (device)
{
// according to the UDA v1.1 spec, if a control point receives an
// alive announcement of any type for a device tree, the control point
// can assume that all devices and services are available.
// ==> reset timeouts for entire device tree and all services.
device = static_cast<HDefaultClientDevice*>(device->rootDevice());
device->startStatusNotifier(HDefaultClientDevice::All);
// it cannot be that only some embedded device is available at certain
// interface, since the device description is always fetched from the
// the location that the root device specifies ==> the entire device
// tree has to be available at that location.
if (device->addLocation(msg.location()))
{
HLOG_DBG(QString("Existing device [%1] now available at [%2]").arg(
resourceUdn.toString(), msg.location().toString()));
}
if (!device->deviceStatus()->online())
{
device->deviceStatus()->setOnline(true);
emit q_ptr->rootDeviceOnline(device);
processDeviceOnline(device, false);
}
return true;
}
// it does not matter if the device is an embedded device, since the
// location of the device always points to the root device's description
// and the internal device model is built of that. Hence, any advertisement
// will do to build the entire model correctly.
DeviceBuildTask* dbp = m_deviceBuildTasks.get(msg);
if (dbp)
{
if (!dbp->m_locations.contains(msg.location()))
{
dbp->m_locations.push_back(msg.location());
}
return true;
}
if (!q_ptr->acceptResource(msg.usn(), source))
{
HLOG_DBG(QString("Resource advertisement [%1] rejected").arg(
msg.usn().toString()));
return true;
}
DeviceBuildTask* newBuildTask = new DeviceBuildTask(this, msg);
newBuildTask->setAutoDelete(false);
m_deviceBuildTasks.add(newBuildTask);
bool ok = connect(
newBuildTask, SIGNAL(done(Herqq::Upnp::HUdn)),
this, SLOT(deviceModelBuildDone(Herqq::Upnp::HUdn)));
Q_ASSERT(ok);
Q_UNUSED(ok)
HLOG_INFO(QString(
"New resource [%1] is available @ [%2]. "
"Attempting to build the device model.").arg(
msg.usn().toString(), msg.location().toString()));
m_threadPool->start(newBuildTask);
return true;
}