Add notification daemon
[platform/core/security/askuser.git] / src / agent / notification-daemon / main.cpp
1 /*
2  *  Copyright (c) 2016 Samsung Electronics Co.
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  */
16 /**
17  * @file        src/notification-daemon/main.cpp
18  * @author      Oskar Ĺšwitalski <o.switalski@samsung.com>
19  * @brief       Main askuser notification daemon file
20  */
21
22 #include <clocale>
23 #include <csignal>
24 #include <cstdlib>
25 #include <string>
26 #include <systemd/sd-daemon.h>
27 #include <thread>
28 #include <unistd.h>
29
30 #include <exception/Exception.h>
31 #include <log/alog.h>
32
33 #include "GuiRunner.h"
34 #include "AskUserTalker.h"
35
36 int main()
37 {
38     using namespace AskUser::Notification;
39     init_agent_log();
40
41     char *locale = setlocale(LC_ALL, "");
42     ALOGD("Current locale is: <" << locale << ">");
43
44     try {
45         GuiRunner gui;
46         AskUserTalker askUserTalker(&gui);
47
48         int ret = sd_notify(0, "READY=1");
49         if (ret == 0) {
50             ALOGW("Agent was not configured to notify its status");
51         } else if (ret < 0) {
52             ALOGE("sd_notify failed: [" << ret << "]");
53         }
54
55         askUserTalker.run();
56
57     } catch (std::exception &e) {
58         ALOGE("Askuser-notification stopped because of: <" << e.what() << ">.");
59     } catch (...) {
60         ALOGE("Askuser-notification stopped because of unknown unhandled exception.");
61     }
62
63     return 0;
64 }