Merge "Partial Implementation of US1574:"
[platform/upstream/iotivity.git] / csdk / controller / core / include / core / Description.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 DESCRIPTION_H_
22 #define DESCRIPTION_H_
23
24 // ============================================================================
25 // Includes
26 // ============================================================================
27 #include <string>
28 #include <memory>
29 #include <functional>
30 #include "Service.hpp"
31
32 // ============================================================================
33 // Namespace
34 // ============================================================================
35 namespace Intel {
36 namespace CCFL {
37 namespace API {
38
39 // ============================================================================
40 // Class
41 // ============================================================================
42 class DescriptionGetResult {
43         // ============================================================
44         // Destructor
45         // ============================================================
46         public:
47                 virtual ~DescriptionGetResult() {}
48
49         // ============================================================
50         // Public Method(s)
51         // ============================================================
52         public:
53                 virtual QueryResultType getResult() const = 0;
54                 virtual const std::set<Service::SharedPtr>& getServices() const = 0;
55 };
56
57 typedef std::function<void (const DescriptionGetResult&)> DescriptionGetFunction;
58
59 // ============================================================================
60 // Class
61 // ============================================================================
62 class Description {
63         // ============================================================
64         // Type Definition(s)
65         // ============================================================
66         public:
67                 typedef std::shared_ptr<Description> SharedPtr;
68                 typedef std::weak_ptr<Description> WeakPtr;
69
70         // ============================================================
71         // Destructor
72         // ============================================================
73         public:
74                 virtual ~Description() {}
75
76         // ============================================================
77         // Public Method(s)
78         // ============================================================
79         public:
80                 virtual const std::set<Service::SharedPtr>& getServices() const = 0;
81 };
82
83 }
84 }
85 }
86
87 #endif /* DESCRIPTION_H_ */