Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/**
* @copyright Copyright (c) 2021-2022 B-com http://www.b-com.com/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* World Storage API
* API ensuring interoperability between an authoring tool and a World Storage service
*
* The version of the OpenAPI document: 0.0.1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
#include <signal.h>
#include <boost/log/core.hpp>
#include <core/Log.h>
#include <xpcf/xpcf.h>
#include <api/service/IServiceWorldGraph.h>
namespace xpcf = org::bcom::xpcf;
using namespace SolAR;
using namespace SolAR::api;
// Global service instance
SRef<service::IServiceWorldGraph> worldGraphService = 0;
// Function called when interruption signal is triggered to close the service.
static void SigInt(int /* signo */) {
LOG_INFO("\n\n===> Program interruption\n");
LOG_INFO("Stop World Graph Service");
if (worldGraphService != 0) {
worldGraphService->stop();
}
LOG_INFO("World Graph Service stopped");
exit(0);
}
int main() {
try {
#if NDEBUG
boost::log::core::get()->set_logging_enabled(false);
#endif
//init the logger
LOG_ADD_LOG_TO_CONSOLE();
LOG_INFO("program is running");
// Signal interruption function (Ctrl + C)
signal(SIGINT, SigInt);
/* instantiate component manager*/
/* this is needed in dynamic mode */
SRef<xpcf::IComponentManager> xpcfComponentManager = xpcf::getComponentManagerInstance();
if(xpcfComponentManager->load("SolARService_World_Storage_conf.xml")!=org::bcom::xpcf::_SUCCESS)
{
LOG_ERROR("Failed to load the configuration file SolARService_World_Storage_conf.xml");
return -1;
}
worldGraphService = xpcfComponentManager->resolve<service::IServiceWorldGraph>();
// init and start the World Graph Service
worldGraphService->init();
worldGraphService->start();
return EXIT_SUCCESS;
}
catch (xpcf::Exception e)
{
LOG_ERROR("Exception raised : \n {}", e.what())
return -1;
}
return 0;
}