Merge "Partial Implementation of US1574:"
[platform/upstream/iotivity.git] / csdk / controller / core / include / core / Service.hpp
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef SERVICE_H_
22 #define SERVICE_H_
23
24 // ============================================================================
25 // Includes
26 // ============================================================================
27 #include <string>
28 #include <memory>
29 #include <set>
30 #include "Characteristic.hpp"
31
32 // ============================================================================
33 // Namespace
34 // ============================================================================
35 namespace Intel {
36 namespace CCFL {
37 namespace API {
38
39 class Service {
40         // ============================================================
41         // Type Definition(s)
42         // ============================================================
43         public:
44                 typedef std::shared_ptr<Service> SharedPtr;
45                 typedef std::weak_ptr<Service> WeakPtr;
46
47         // ============================================================
48         // Destructor
49         // ============================================================
50         public:
51                 virtual ~Service() {}
52
53         // ============================================================
54         // Public Method(s)
55         // ============================================================
56         public:
57
58                 virtual const std::string& getName() const = 0;
59                 virtual const std::set<Characteristic::SharedPtr>& getCharacteristics() const = 0;
60 };
61
62 }
63 }
64 }
65
66
67 #endif /* SERVICE_H_ */