blob: e374c12381ad0c6889da3f32f5964dba1811d185 [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 <functional>
24#include <stdplus/signal.hpp>
25#include <sdeventplus/source/signal.hpp>
Matthew Barth293477d2017-02-17 15:39:36 -060026
27int main(void)
28{
Brad Bishop8e9a8e72017-06-08 23:21:03 -040029 using namespace phosphor::fan;
Brad Bishop8e9a8e72017-06-08 23:21:03 -040030
Matthew Barth3a429d92019-12-05 16:58:27 -060031 auto bus = sdbusplus::bus::new_default();
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070032 auto event = sdeventplus::Event::get_default();
Matthew Barth3a429d92019-12-05 16:58:27 -060033 bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
Matthew Barthb8034452017-02-17 16:39:46 -060034
Matthew Barth5060b102019-12-16 10:46:35 -060035#ifdef PRESENCE_USE_JSON
Matthew Barthfd05d642019-11-14 15:01:57 -060036 // Use json file for presence config
Matthew Barth5060b102019-12-16 10:46:35 -060037 presence::JsonConfig config(bus);
Matthew Barthfd05d642019-11-14 15:01:57 -060038 for (auto& p: presence::JsonConfig::get())
39 {
40 p->monitor();
41 }
Matthew Barthf3e70472019-12-03 13:33:20 -060042
43 stdplus::signal::block(SIGHUP);
44 sdeventplus::source::Signal signal(event, SIGHUP,
45 std::bind(&presence::JsonConfig::sighupHandler,
46 &config, std::placeholders::_1, std::placeholders::_2));
Matthew Barthfd05d642019-11-14 15:01:57 -060047#else
Brad Bishop372b22c2017-07-12 15:57:14 -040048 for (auto& p: presence::ConfigPolicy::get())
Matthew Barthb8034452017-02-17 16:39:46 -060049 {
Brad Bishop372b22c2017-07-12 15:57:14 -040050 p->monitor();
Matthew Barthb8034452017-02-17 16:39:46 -060051 }
Matthew Barthfd05d642019-11-14 15:01:57 -060052#endif
Matthew Barthb8034452017-02-17 16:39:46 -060053
William A. Kennington III1cfc2f12018-10-19 17:29:46 -070054 return event.loop();
Matthew Barth293477d2017-02-17 15:39:36 -060055}