#include "logger.h"
#include "OCPlatform.h"
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
#define LOG_TAG "RCSResourceObject"
namespace
RESPONSE invokeHandler(RCSResourceAttributes& attrs, const RCSRequest& request,
std::shared_ptr< HANDLER > handler)
{
- if (handler)
+ if (handler && *handler)
{
return (*handler)(request, attrs);
}
return {};
}
+ void insertValue(std::vector<std::string>& container, std::string value)
+ {
+ if (value.empty()) return;
+
+ if (std::find(container.begin(), container.end(), value) == container.end())
+ {
+ container.push_back(std::move(value));
+ }
+ }
+
} // unnamed namespace
namespace OIC
std::string interface) :
m_uri{ std::move(uri) },
m_types{ std::move(type) },
- m_interfaces{ std::move(interface) },
- m_defaultInterface { BASELINE_INTERFACE },
+ m_interfaces{ },
+ m_defaultInterface{ interface },
m_properties{ OC_DISCOVERABLE | OC_OBSERVABLE },
m_resourceAttributes{ }
{
+ addInterface(interface);
+ addInterface(BASELINE_INTERFACE);
+
+ if (m_defaultInterface.empty())
+ {
+ m_defaultInterface = BASELINE_INTERFACE;
+ }
}
RCSResourceObject::Builder& RCSResourceObject::Builder::addInterface(std::string interface)
{
- m_interfaces.push_back(std::move(interface));
+ insertValue(m_interfaces, std::move(interface));
return *this;
}
RCSResourceObject::Builder& RCSResourceObject::Builder::addType(std::string type)
{
- m_types.push_back(std::move(type));
+ insertValue(m_types, std::move(type));
return *this;
}
m_resourceObject, m_resourceObject.m_resourceAttributes, m_autoNotifyPolicy);
}
- RCSResourceObject::WeakGuard::WeakGuard(
+ RCSResourceObject::WeakGuard::WeakGuard(
const RCSResourceObject& resourceObject) :
m_isOwningLock{ false },
m_resourceObject(resourceObject)