X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=resource%2Finclude%2FOCApi.h;h=493012aecb18254eb7bbb9086a553fa8502f32e9;hb=37544f38dedd2bc679968ec70da20357608b8504;hp=153abbc661408fd33e0bb7cee2a3177396982ddb;hpb=2b0269ffa1c95fcc8784ecaac200bd6110e0e3e8;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/include/OCApi.h b/resource/include/OCApi.h index 153abbc..493012a 100644 --- a/resource/include/OCApi.h +++ b/resource/include/OCApi.h @@ -18,8 +18,8 @@ // //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -#ifndef __INTEL_OCAPI_H_2014_07_10 -#define __INTEL_OCAPI_H_2014_07_10 +#ifndef OC_OCAPI_H_ +#define OC_OCAPI_H_ #include #include @@ -27,8 +27,11 @@ #include #include #include +#if defined(_MSC_VER) +#include +#endif -#include "ocstack.h" +#include "octypes.h" #include "OCHeaderOption.h" #include #include "StringConstants.h" @@ -41,10 +44,14 @@ namespace OC class OCResource; class OCResourceRequest; class OCResourceResponse; + class OCDirectPairing; } // namespace OC namespace OC { +#if defined(_MSC_VER) + extern std::ostream& oclog(); +#else typedef boost::iostreams::stream log_target_t; namespace detail @@ -52,7 +59,7 @@ namespace OC /* We'll want to provide some sort of explicit hook for custom logging at some point; until then, this should do nicely (note that since these are lambdas, later a special target could be captured, allowing much flexibility): */ - auto oclog_target = []() -> log_target_t& + inline auto oclog_target = []() -> log_target_t& { static OC::oc_log_stream ols(oc_make_ostream_logger); static log_target_t os(ols); @@ -61,11 +68,11 @@ namespace OC }; } // namespace OC::detail - auto oclog = []() -> boost::iostreams::stream& + inline auto oclog = []() -> boost::iostreams::stream& { return detail::oclog_target(); }; - +#endif } // namespace OC namespace OC @@ -90,65 +97,215 @@ namespace OC OutOfProc }; + /** + * Host Mode of Operation. + */ enum class ModeType { Server, Client, - Both + Both, + Gateway /**< Client server mode along with routing capabilities.*/ }; + /** + * Quality of Service attempts to abstract the guarantees provided by the underlying transport + * protocol. The precise definitions of each quality of service level depend on the + * implementation. In descriptions below are for the current implementation and may changed + * over time. + */ enum class QualityOfService : uint8_t { + /** Packet delivery is best effort. */ LowQos = OC_LOW_QOS, + + /** Packet delivery is best effort. */ MidQos = OC_MEDIUM_QOS, + + /** Acknowledgments are used to confirm delivery. */ HighQos = OC_HIGH_QOS, - NaQos = OC_NA_QOS // No Quality is defined, let the stack decide + + /** No Quality is defined, let the stack decide. */ + NaQos = OC_NA_QOS, + + LowQosWithTcp = OC_LOW_QOS_WITH_TCP }; /** - * Data structure to provide the configuration. - * ServiceType: indicate InProc or OutOfProc - * ModeType : indicate whether we want to do server, client or both - * ipAddress : ip address of server. - * if you speecifiy 0.0.0.0 : it listens on any interface. - * port : port of server. - * : if you specifiy 0 : next available random port is used. - * : if you specify 5683 : client discovery can work even if they don't specify port. - * QoS : Quality of Service : CONFIRMABLE or NON CONFIRMABLE. - */ + * Data structure to provide the configuration. + */ struct PlatformConfig { + /** indicate InProc or OutOfProc. */ ServiceType serviceType; + + /** indicate whether we want to do server, client or both. */ ModeType mode; + + /** default flags for server. */ + OCConnectivityType serverConnectivity; + + /** default flags for client. */ + OCConnectivityType clientConnectivity; + + /** transport type to initialize. */ + OCTransportAdapter transportType; + + /** not used. */ std::string ipAddress; + + /** not used. */ uint16_t port; + /** indicate Quality of Service : LowQos, MidQos,HighQos and NaQos(No quality Defined). */ QualityOfService QoS; + /** persistant storage Handler structure (open/read/write/close/unlink). */ + OCPersistentStorage *ps; + + /** persistant storage Handler structure (open/read/write/close/unlink). */ + OCPersistentStorage *psEnc; + + /** persistant storage Handler structure (open/read/write/close/unlink). */ + OCPersistentStorage *psRescue; + + /** pointer to save key. */ + unsigned char* key; + public: PlatformConfig() : serviceType(ServiceType::InProc), mode(ModeType::Both), + serverConnectivity(CT_DEFAULT), + clientConnectivity(CT_DEFAULT), + transportType(OC_DEFAULT_ADAPTER), ipAddress("0.0.0.0"), port(0), - QoS(QualityOfService::NaQos) + QoS(QualityOfService::NaQos), + ps(nullptr), + psEnc(nullptr), + psRescue(nullptr), + key(nullptr) + {} + PlatformConfig(const ServiceType serviceType_, + const ModeType mode_, + OCConnectivityType serverConnectivity_, + OCConnectivityType clientConnectivity_, + const QualityOfService QoS_, + OCPersistentStorage *ps_ = nullptr, + OCPersistentStorage *psEnc_ = nullptr, + OCPersistentStorage *psRescue_ = nullptr, + unsigned char *key_ = nullptr) + : serviceType(serviceType_), + mode(mode_), + serverConnectivity(serverConnectivity_), + clientConnectivity(clientConnectivity_), + transportType(OC_DEFAULT_ADAPTER), + ipAddress(""), + port(0), + QoS(QoS_), + ps(ps_), + psEnc(psEnc_), + psRescue(psRescue_), + key(key_) + + {} + // for backward compatibility + PlatformConfig(const ServiceType serviceType_, + const ModeType mode_, + const std::string& ipAddress_, + const uint16_t port_, + const QualityOfService QoS_, + OCPersistentStorage *ps_ = nullptr, + OCPersistentStorage *psEnc_ = nullptr, + OCPersistentStorage *psRescue_ = nullptr, + unsigned char *key_ = nullptr) + : serviceType(serviceType_), + mode(mode_), + serverConnectivity(CT_DEFAULT), + clientConnectivity(CT_DEFAULT), + transportType(OC_DEFAULT_ADAPTER), + ipAddress(ipAddress_), + port(port_), + QoS(QoS_), + ps(ps_), + psEnc(psEnc_), + psRescue(psRescue_), + key(key_) + {} + PlatformConfig(const ServiceType serviceType_, const ModeType mode_, const std::string& ipAddress_, const uint16_t port_, - const QualityOfService QoS_) + const OCTransportAdapter transportType_, + const QualityOfService QoS_, + unsigned char *key_, + OCPersistentStorage *ps_ = nullptr, + OCPersistentStorage *psEnc_ = nullptr, + OCPersistentStorage *psRescue_ = nullptr) : serviceType(serviceType_), mode(mode_), + transportType(transportType_), ipAddress(ipAddress_), port(port_), - QoS(QoS_) + QoS(QoS_), + ps(ps_), + psEnc(psEnc_), + psRescue(psRescue_), + key(key_) + {} + + PlatformConfig(const ServiceType serviceType_, + const ModeType mode_, + OCTransportAdapter transportType_, + const QualityOfService QoS_, + OCPersistentStorage *ps_ = nullptr, + OCPersistentStorage *psEnc_ = nullptr, + OCPersistentStorage *psRescue_ = nullptr, + unsigned char *key_ = nullptr) + : serviceType(serviceType_), + mode(mode_), + serverConnectivity(CT_DEFAULT), + clientConnectivity(CT_DEFAULT), + transportType(transportType_), + ipAddress(""), + port(0), + QoS(QoS_), + ps(ps_), + psEnc(psEnc_), + psRescue(psRescue_), + key(key_) + {} + PlatformConfig(const ServiceType serviceType_, + const ModeType mode_, + OCConnectivityType serverConnectivity_, + OCConnectivityType clientConnectivity_, + OCTransportAdapter transportType_, + const QualityOfService QoS_, + OCPersistentStorage *ps_ = nullptr, + OCPersistentStorage *psEnc_ = nullptr, + OCPersistentStorage *psRescue_ = nullptr, + unsigned char *key_ = nullptr) + : serviceType(serviceType_), + mode(mode_), + serverConnectivity(serverConnectivity_), + clientConnectivity(clientConnectivity_), + transportType(transportType_), + ipAddress(""), + port(0), + QoS(QoS_), + ps(ps_), + psEnc(psEnc_), + psRescue(psRescue_), + key(key_) {} + }; enum RequestHandlerFlag { - InitFlag = 1 << 0, RequestFlag = 1 << 1, ObserverFlag = 1 << 2 }; @@ -158,15 +315,21 @@ namespace OC Observe, ObserveAll }; - // - // Typedef for header option vector - // OCHeaderOption class is in HeaderOption namespace + + // Typedef for list of resource handles. + typedef std::vector ResourceHandles; + + // Typedef for header option vector. + // OCHeaderOption class is in HeaderOption namespace. typedef std::vector HeaderOptions; - // Typedef for query parameter map + // Typedef for query parameter map. typedef std::map QueryParamsMap; - // Typedef for list of observation IDs + // Typedef for query parameter map with Vector + typedef std::map< std::string, std::vector > QueryParamsList; + + // Typedef for list of observation IDs. typedef std::vector ObservationIds; enum class ObserveAction @@ -181,27 +344,39 @@ namespace OC ObserveAction action; // Identifier for observation being registered/unregistered OCObservationId obsId; + + OCConnectivityType connectivityType; + std::string address; + uint16_t port; } ObservationInfo; // const strings for different interfaces // Default interface - const std::string DEFAULT_INTERFACE = "oc.mi.def"; + const std::string DEFAULT_INTERFACE = "oic.if.baseline"; // Used in discovering (GET) links to other resources of a collection. - const std::string LINK_INTERFACE = "oc.mi.ll"; + const std::string LINK_INTERFACE = "oic.if.ll"; // Used in GET, PUT, POST, DELETE methods on links to other resources of a collection. - const std::string BATCH_INTERFACE = "oc.mi.b"; + const std::string BATCH_INTERFACE = "oic.if.b"; // Used in GET, PUT, POST methods on links to other remote resources of a group. - const std::string GROUP_INTERFACE = "oc.mi.grp"; + const std::string GROUP_INTERFACE = "oic.mi.grp"; + //Typedef for list direct paired devices + typedef std::vector> PairedDevices; typedef std::function)> FindCallback; + typedef std::function FindErrorCallback; + + typedef std::function>)> FindResListCallback; + typedef std::function FindDeviceCallback; + typedef std::function FindPlatformCallback; + typedef std::function)> EntityHandler; @@ -221,6 +396,16 @@ namespace OC typedef std::function ObserveCallback; + + typedef std::function, OCStackResult)> DirectPairingCallback; + + typedef std::function GetDirectPairedCallback; + + typedef std::function)> MQTopicCallback; +#ifdef TCP_ADAPTER + typedef std::function KeepAliveCallback; +#endif } // namespace OC #endif