093245b3c0e43661433911bda62a874e00a88393
[platform/upstream/iotivity.git] / service / resource-encapsulation / include / RCSAddress.h
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics 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 OIC_SERVICE_RCSADDRESS_H
22 #define OIC_SERVICE_RCSADDRESS_H
23
24 #include <string>
25 #include <memory>
26
27 namespace OIC
28 {
29     namespace Service
30     {
31         class RCSAddressDetail;
32
33         /**
34          * This is to specify a target address to discover.
35          *
36          * @see RCSDiscoveryManager
37          */
38         class RCSAddress
39         {
40         public:
41             /**
42              * Factory method for multicast.
43              *
44              */
45             static RCSAddress multicast();
46
47             /**
48              * Factory method for unicast.
49              *
50              * @param address A physical address for the target.
51              */
52             static RCSAddress unicast(const std::string& address);
53
54             /**
55              * @overload
56              */
57             static RCSAddress unicast(std::string&& address);
58
59         private:
60             RCSAddress(const std::shared_ptr< RCSAddressDetail >&);
61
62         private:
63             std::shared_ptr< RCSAddressDetail > m_detail;
64
65             friend class RCSAddressDetail;
66         };
67     }
68 }
69
70 #endif // OIC_SERVICE_RCSADDRESS_H