2 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Rafal Krypa <r.krypa@samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
19 * @file client-offline.cpp
20 * @author Rafal Krypa <r.krypa@samsung.com>
22 * @brief Helper class for client "off-line" mode detection
25 #include <client-common.h>
26 #include <message-buffer.h>
27 #include <protocols.h>
28 #include <dpl/serialization.h>
29 #include <dpl/log/log.h>
30 #include "client-offline.h"
32 namespace SecurityManager {
34 ClientOffline::ClientOffline()
37 serviceLock = nullptr;
40 LogInfo("UID != 0, attempting only on-line mode.");
45 serviceLock = new SecurityManager::FileLocker(SecurityManager::SERVICE_LOCK_FILE, false);
46 if (serviceLock->Locked()) {
48 MessageBuffer send, recv;
50 LogInfo("Service isn't running, try to trigger it via socket activation.");
51 serviceLock->Unlock();
52 Serialization::Serialize(send, static_cast<int>(SecurityModuleCall::NOOP));
53 retval = sendToServer(SERVICE_SOCKET, send.Pop(), recv);
54 if (retval != SECURITY_MANAGER_API_SUCCESS) {
55 LogInfo("Socket activation attempt failed.");
57 offlineMode = serviceLock->Locked();
59 LogInfo("Service seems to be running now.");
62 LogError("Cannot detect off-line mode by lock.");
67 LogInfo("Working in off-line mode.");
69 LogInfo("Working in on-line mode.");
72 ClientOffline::~ClientOffline()
74 if (serviceLock != nullptr)
78 bool ClientOffline::isOffline(void)
83 } // namespace SecurityManager