1 /*
2  * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <iostream>
17 #include <unistd.h>
18 #include "common/sharing_log.h"
19 #include "config.h"
20 
21 using namespace OHOS::Sharing;
22 
main()23 int main()
24 {
25     Config::GetInstance().Init();
26     sleep(1);
27     // SharingConfigureSetConfigTest_001
28     SHARING_LOGD("this is sharing_configure_demo!");
29     while (1) {
30         std::string inputCmd;
31         getline(std::cin, inputCmd);
32         if (inputCmd == "0") {
33             SharingValue::Ptr values = nullptr;
34             auto ret = Config::GetInstance().GetConfig("mediachannel", "rtmpport", "maxrecvport", values);
35             values->Print();
36             SharingValue::Ptr valueS = std::make_shared<SharingValue>(8888);
37             ret = Config::GetInstance().SetConfig("mediachannel", "rtmpport", "maxrecvport", valueS);
38             valueS->Print();
39             sleep(1);
40         } else if (inputCmd == "1") {
41             SharingDataGroupByModule::Ptr values = nullptr;
42             auto ret = Config::GetInstance().GetConfig("cfg", values);
43             std::string data = std::string("test");
44             SharingValue::Ptr valueS = std::make_shared<SharingValue>(data);
45             valueS->Print();
46             values->PutSharingValue("rtpport111", "minrecv", valueS);
47             ret = Config::GetInstance().SetConfig("cfg", values);
48             sleep(1);
49         }
50         // SharingConfigureSetConfigTest_002
51         else if (inputCmd == "2") {
52             SharingData::Ptr datas = nullptr;
53             auto ret = Config::GetInstance().GetConfig(datas);
54             ret = Config::GetInstance().SetConfig(datas);
55             sleep(1);
56         } else if (inputCmd == "3") {
57             SharingDataGroupByModule::Ptr values = nullptr;
58             auto ret = Config::GetInstance().GetConfig("mediachannel", values);
59             values->Print();
60             ret = Config::GetInstance().SetConfig("mediachannel", values);
61             sleep(1);
62         } else if (inputCmd == "4") {
63             SharingDataGroupByTag::Ptr values = nullptr;
64             auto ret = Config::GetInstance().GetConfig("mediachannel", "rtmpport", values);
65             values->Print();
66             ret = Config::GetInstance().SetConfig("mediachannel", "rtmpport", values);
67             sleep(1);
68         } else if (inputCmd == "5") {
69             SharingDataGroupByTag::Ptr values = nullptr;
70             auto ret = Config::GetInstance().GetConfig("mediachannel", "rtmpport", values);
71             values->Print();
72             SharingValue::Ptr valueS = std::make_shared<SharingValue>(8080);
73             valueS->Print();
74             values->PutSharingValue("tomcat", valueS);
75 
76             std::unordered_map<std::string, SharingValue::Ptr> datas;
77             {
78                 SharingValue::Ptr valueS1 = std::make_shared<SharingValue>(8080);
79                 datas.emplace(std::make_pair("http", valueS1));
80                 SharingValue::Ptr valueS2 = std::make_shared<SharingValue>(443);
81                 datas.emplace(std::make_pair("ssl", valueS2));
82                 values->PutSharingValues(datas);
83             }
84             bool bret1 = values->HasKey("http");
85             bool bret2 = values->IsTag("rtmpport");
86             bool bret3 = values->HasKey("http1");
87             bool bret4 = values->IsTag("rtmpport2");
88             SharingValue::Ptr value1 = values->GetSharingValue("http");
89             value1->Print();
90             std::unordered_map<std::string, SharingValue::Ptr> values1;
91             values->GetSharingValues(values1);
92             SHARING_LOGD("hasKey: %{public}d,IsTag: %{public}d,HasKey: %{public}d,IsTag: %{public}d,size: %{public}d!",
93                          bret1, bret2, bret3, bret4, values1.size());
94 
95             ret = Config::GetInstance().SetConfig("mediachannel", "rtmpport", values);
96             sleep(1);
97         } else if (inputCmd == "6") {
98             SharingDataGroupByModule::Ptr values = nullptr;
99             auto ret = Config::GetInstance().GetConfig("mediachannel", values);
100             values->Print();
101             SharingValue::Ptr valueS = std::make_shared<SharingValue>(8080);
102             valueS->Print();
103             values->PutSharingValue("apache", "tomcat", valueS);
104 
105             std::unordered_map<std::string, SharingValue::Ptr> datas;
106             {
107                 SharingValue::Ptr valueS1 = std::make_shared<SharingValue>(80);
108                 datas.emplace(std::make_pair("http", valueS1));
109                 SharingValue::Ptr valueS2 = std::make_shared<SharingValue>(443);
110                 datas.emplace(std::make_pair("ssl", valueS2));
111                 values->PutSharingValues("apache", datas);
112             }
113             SharingValue::Ptr value1 = values->GetSharingValue("apache", "http");
114             value1->Print();
115             std::unordered_map<std::string, SharingValue::Ptr> values1;
116             values->GetSharingValues("apache", values1);
117             SharingDataGroupByTag::Ptr value3 = nullptr;
118             values->GetSharingValues("apache", value3);
119             value3->Print();
120             {
121                 SharingValue::Ptr valueS = std::make_shared<SharingValue>(3306);
122                 valueS->Print();
123                 value3->PutSharingValue("mysql", valueS);
124                 value3->Print();
125             }
126             values->PutSharingValues("apache", value3);
127             values->Print();
128 
129             bool bret1 = values->HasKey("", "http");
130             bool bret2 = values->HasTag("rtmpport");
131             bool bret3 = values->HasKey("", "http1");
132             bool bret4 = values->HasTag("rtmpport2");
133             bool bret5 = values->IsModule("mediachannel");
134             bool bret6 = values->IsModule("mediachannel2");
135             SHARING_LOGD(
136                 "HasKey: %{public}d,HasTag: %{public}d,HasKey: %{public}d,HasTag: %{public}d,IsModule: %{public}d,IsModule="
137                 "%{public}d,size: %{public}d.",
138                 bret1, bret2, bret3, bret4, bret5, bret6, values1.size());
139             ret = Config::GetInstance().SetConfig("mediachannel", values);
140             sleep(1);
141         } else if (inputCmd == "7") {
142             SharingData::Ptr datas = nullptr;
143             auto ret = Config::GetInstance().GetConfig(datas);
144             datas->Print();
145 
146             std::string anyValue = std::string("007");
147             SharingValue::Ptr valueS = std::make_shared<SharingValue>(anyValue);
148             datas->PutSharingValue("id", valueS, "context", "newtag");
149             datas->Print();
150 
151             {
152                 SharingValue::Ptr valueS = std::make_shared<SharingValue>(800);
153                 valueS->Print();
154                 datas->PutSharingValue("age", valueS, "context", "newtag");
155                 datas->Print();
156             }
157             {
158                 SharingValue::Ptr valueS = std::make_shared<SharingValue>(1);
159                 valueS->Print();
160                 datas->PutSharingValue("female", valueS, "context", "newtag");
161                 datas->Print();
162             }
163             {
164                 SharingValue::Ptr valueS = std::make_shared<SharingValue>(1);
165                 valueS->Print();
166                 datas->PutSharingValue("class", valueS, "context", "newtag");
167                 datas->Print();
168             }
169 
170             {
171                 std::unordered_map<std::string, SharingValue::Ptr> mapdata;
172                 SharingValue::Ptr valueS1 = std::make_shared<SharingValue>(80);
173                 mapdata.emplace(std::make_pair("http", valueS1));
174                 SharingValue::Ptr valueS2 = std::make_shared<SharingValue>(443);
175                 mapdata.emplace(std::make_pair("ssl", valueS2));
176                 datas->PutSharingValues(mapdata, "tomcat", "web");
177                 SHARING_LOGD("mapdata size: %{public}d,", mapdata.size());
178             }
179 
180             {
181                 SharingValue::Ptr value = nullptr;
182                 value = datas->GetSharingValue("ssl", "tomcat", "web");
183                 value->Print();
184             }
185             {
186                 SharingDataGroupByModule::Ptr values = nullptr;
187                 datas->GetSharingValues(values, "tomcat");
188                 values->Print();
189             }
190             {
191                 SharingDataGroupByTag::Ptr values = nullptr;
192                 datas->GetSharingValues(values, "tomcat", "web");
193                 values->Print();
194             }
195             {
196                 std::unordered_map<std::string, SharingValue::Ptr> mapdata;
197                 datas->GetSharingValues(mapdata, "tomcat", "web");
198                 SHARING_LOGD("mapdata size: %{public}d,", mapdata.size());
199             }
200 
201             bool bret1 = datas->HasKey("http");
202             bool bret2 = datas->HasTag("rtmpport");
203             bool bret3 = datas->HasKey("http1");
204             bool bret4 = datas->HasTag("rtmpport2");
205             bool bret5 = datas->HasModule("mediachannel");
206             bool bret6 = datas->HasModule("mediachannel2");
207             SHARING_LOGD(
208                 "hasKey: %{public}d,HasTag: %{public}d,HasKey: %{public}d,HasTag: %{public}d,HasModule: %{public}d,"
209                 "HasModule="
210                 "%{public}d.",
211                 bret1, bret2, bret3, bret4, bret5, bret6);
212 
213             ret = Config::GetInstance().SetConfig(datas);
214             sleep(1);
215         }
216     }
217 
218     sleep(3);
219 
220     return 0;
221 }