blob: 5c1fbc9a69966608072a23b4e18f32903f6ee6f8 [file] [log] [blame]
Matthew Barth5c15b792017-03-01 11:17:00 -06001/**
2 * Copyright © 2017 IBM Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Matthew Barthfd05d642019-11-14 15:01:57 -060016#include "config.h"
Matthew Barth5060b102019-12-16 10:46:35 -060017#ifdef PRESENCE_USE_JSON
Matt Spinler0daedd12021-01-25 14:46:03 -060018#include "json_config.hpp"
Jolie Ku1a568652020-08-24 16:32:15 +080019#include "json_parser.hpp"
Matthew Barthfd05d642019-11-14 15:01:57 -060020#else
Brad Bishop76596b22017-06-13 14:39:13 -040021#include "generated.hpp"
Matthew Barthfd05d642019-11-14 15:01:57 -060022#endif
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070023#include <sdeventplus/event.hpp>
Matthew Barthf3e70472019-12-03 13:33:20 -060024#include <sdeventplus/source/signal.hpp>
Matthew Barth2d2caa32020-05-26 11:07:24 -050025#include <stdplus/signal.hpp>
26
27#include <functional>
Matthew Barth293477d2017-02-17 15:39:36 -060028
29int main(void)
30{
Brad Bishop8e9a8e72017-06-08 23:21:03 -040031 using namespace phosphor::fan;
Brad Bishop8e9a8e72017-06-08 23:21:03 -040032
Matthew Barth3a429d92019-12-05 16:58:27 -060033 auto bus = sdbusplus::bus::new_default();
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070034 auto event = sdeventplus::Event::get_default();
Matthew Barth3a429d92019-12-05 16:58:27 -060035 bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
Matthew Barthb8034452017-02-17 16:39:46 -060036
Matthew Barth5060b102019-12-16 10:46:35 -060037#ifdef PRESENCE_USE_JSON
Matt Spinler0daedd12021-01-25 14:46:03 -060038
Matthew Barth5060b102019-12-16 10:46:35 -060039 presence::JsonConfig config(bus);
Matt Spinler0daedd12021-01-25 14:46:03 -060040
41 // jsonConfig will call config::start when
42 // the conf file is available.
43 phosphor::fan::JsonConfig jsonConfig{
Matthew Barth5b839912021-06-21 14:46:34 -050044 std::bind(&presence::JsonConfig::start, &config)};
Matthew Barthf3e70472019-12-03 13:33:20 -060045
46 stdplus::signal::block(SIGHUP);
Matthew Barth2d2caa32020-05-26 11:07:24 -050047 sdeventplus::source::Signal signal(
48 event, SIGHUP,
49 std::bind(&presence::JsonConfig::sighupHandler, &config,
50 std::placeholders::_1, std::placeholders::_2));
Matthew Barthfd05d642019-11-14 15:01:57 -060051#else
Matthew Barth2d2caa32020-05-26 11:07:24 -050052 for (auto& p : presence::ConfigPolicy::get())
Matthew Barthb8034452017-02-17 16:39:46 -060053 {
Brad Bishop372b22c2017-07-12 15:57:14 -040054 p->monitor();
Matthew Barthb8034452017-02-17 16:39:46 -060055 }
Matthew Barthfd05d642019-11-14 15:01:57 -060056#endif
Matthew Barthb8034452017-02-17 16:39:46 -060057
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070058 return event.loop();
Matthew Barth293477d2017-02-17 15:39:36 -060059}