blob: 1c1dcf967b27c7a6e7231e1e19b786b7d8a90797 [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
Matthew Barthfd05d642019-11-14 15:01:57 -060018#include "json_config.hpp"
19#else
Brad Bishop76596b22017-06-13 14:39:13 -040020#include "generated.hpp"
Matthew Barthfd05d642019-11-14 15:01:57 -060021#endif
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070022#include <sdeventplus/event.hpp>
Matthew Barthf3e70472019-12-03 13:33:20 -060023#include <sdeventplus/source/signal.hpp>
Matthew Barth2d2caa32020-05-26 11:07:24 -050024#include <stdplus/signal.hpp>
25
26#include <functional>
Matthew Barth293477d2017-02-17 15:39:36 -060027
28int main(void)
29{
Brad Bishop8e9a8e72017-06-08 23:21:03 -040030 using namespace phosphor::fan;
Brad Bishop8e9a8e72017-06-08 23:21:03 -040031
Matthew Barth3a429d92019-12-05 16:58:27 -060032 auto bus = sdbusplus::bus::new_default();
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070033 auto event = sdeventplus::Event::get_default();
Matthew Barth3a429d92019-12-05 16:58:27 -060034 bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
Matthew Barthb8034452017-02-17 16:39:46 -060035
Matthew Barth5060b102019-12-16 10:46:35 -060036#ifdef PRESENCE_USE_JSON
Matthew Barthfd05d642019-11-14 15:01:57 -060037 // Use json file for presence config
Matthew Barth5060b102019-12-16 10:46:35 -060038 presence::JsonConfig config(bus);
Matthew Barth2d2caa32020-05-26 11:07:24 -050039 for (auto& p : presence::JsonConfig::get())
Matthew Barthfd05d642019-11-14 15:01:57 -060040 {
41 p->monitor();
42 }
Matthew Barthf3e70472019-12-03 13:33:20 -060043
44 stdplus::signal::block(SIGHUP);
Matthew Barth2d2caa32020-05-26 11:07:24 -050045 sdeventplus::source::Signal signal(
46 event, SIGHUP,
47 std::bind(&presence::JsonConfig::sighupHandler, &config,
48 std::placeholders::_1, std::placeholders::_2));
Matthew Barthfd05d642019-11-14 15:01:57 -060049#else
Matthew Barth2d2caa32020-05-26 11:07:24 -050050 for (auto& p : presence::ConfigPolicy::get())
Matthew Barthb8034452017-02-17 16:39:46 -060051 {
Brad Bishop372b22c2017-07-12 15:57:14 -040052 p->monitor();
Matthew Barthb8034452017-02-17 16:39:46 -060053 }
Matthew Barthfd05d642019-11-14 15:01:57 -060054#endif
Matthew Barthb8034452017-02-17 16:39:46 -060055
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070056 return event.loop();
Matthew Barth293477d2017-02-17 15:39:36 -060057}