+ std::vector<std::string> getResourceInterfaces(void) const;
+
+ // TODO-CA Revisit this since we are exposing two identifiers
+ /**
+ * Function to get a unique identifier for this
+ * resource across network interfaces. This will
+ * be guaranteed unique for every resource-per-server
+ * independent of how this was discovered.
+ * @return OCResourceIdentifier object, which can
+ * be used for all comparison and hashing.
+ */
+ OCResourceIdentifier uniqueIdentifier() const;
+
+ /**
+ * Function to get a string representation of the resource's server ID.
+ * This is unique per- server independent on how it was discovered.
+ * @note The format of the return value is subject to change and will
+ * likely change both in size and contents in the future.
+ */
+ std::string sid() const;
+
+ /**
+ * Function to get a string representation of the human friendly name defined by the vendor.
+ * @note The format of the return value is subject to change and will
+ * likely change both in size and contents in the future.
+ */
+ std::string deviceName() const;
+
+#ifdef WITH_MQ
+ /**
+ * Function to discovery Topics from MQ Broker.
+ *
+ * @param queryParametersMap map which can have the query parameter name and value
+ * @param attributeHandler handles callback
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult discoveryMQTopics(const QueryParamsMap& queryParametersMap,
+ MQTopicCallback attributeHandler,
+ QualityOfService qos);
+ /**
+ * Function to create Topic into MQ Broker.
+ * SubTopic is also created through this method.
+ *
+ * @param rep representation of the topic
+ * @param topicUri new uri of the topic which want to create
+ * @param queryParametersMap map which can have the query parameter name and value
+ * @param attributeHandler handles callback
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult createMQTopic(const OCRepresentation& rep,
+ const std::string& topicUri,
+ const QueryParamsMap& queryParametersMap,
+ MQTopicCallback attributeHandler,
+ QualityOfService qos);
+#endif
+#ifdef MQ_SUBSCRIBER
+ /**
+ * Function to subscribe Topic to MQ Broker.
+ *
+ * @param observeType allows the client to specify how it wants to observe.
+ * @param queryParametersMap map which can have the query parameter name and value
+ * @param observeHandler handles callback
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult subscribeMQTopic(ObserveType observeType,
+ const QueryParamsMap& queryParametersMap,
+ ObserveCallback observeHandler,
+ QualityOfService qos);
+
+ /**
+ * Function to unsubscribe Topic to MQ Broker.
+ *
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult unsubscribeMQTopic(QualityOfService qos);
+
+ /**
+ * Function to request publish to MQ publisher.
+ * Publisher can confirm the request message as key:"req_pub" and value:"true".
+ *
+ * @param queryParametersMap map which can have the query parameter name and value
+ * @param attributeHandler handles callback
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult requestMQPublish(const QueryParamsMap& queryParametersMap,
+ PostCallback attributeHandler,
+ QualityOfService qos);
+#endif
+#ifdef MQ_PUBLISHER
+ /**
+ * Function to publish Topic information into MQ Broker.
+ *
+ * @param rep representation of the topic
+ * @param queryParametersMap map which can have the query parameter name and value
+ * @param attributeHandler handles callback
+ * @param qos the quality of communication
+ *
+ * @return Returns ::OC_STACK_OK on success, some other value upon failure.
+ * @note OCStackResult is defined in ocstack.h.
+ *
+ */
+ OCStackResult publishMQTopic(const OCRepresentation& rep,
+ const QueryParamsMap& queryParametersMap,
+ PostCallback attributeHandler,
+ QualityOfService qos);
+#endif
+ // overloaded operators allow for putting into a 'set'
+ // the uniqueidentifier allows for putting into a hash
+ bool operator==(const OCResource &other) const;
+
+ bool operator!=(const OCResource &other) const;
+
+ bool operator<(const OCResource &other) const;
+
+ bool operator>(const OCResource &other) const;
+
+ bool operator<=(const OCResource &other) const;
+
+ bool operator>=(const OCResource &other) const;