/* // Copyright (c) 2018 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. */ #pragma once #include #include #include #include #include #include #include #include #include static constexpr const char* sysdStartUnit = "StartUnit"; static constexpr const char* sysdStopUnit = "StopUnit"; static constexpr const char* sysdRestartUnit = "RestartUnit"; static constexpr const char* sysdReloadMethod = "Reload"; static constexpr const char* sysdGetJobMethod = "GetJob"; static constexpr const char* sysdReplaceMode = "replace"; static constexpr const char* dBusGetAllMethod = "GetAll"; static constexpr const char* dBusGetMethod = "Get"; static constexpr const char* sysdService = "org.freedesktop.systemd1"; static constexpr const char* sysdObjPath = "/org/freedesktop/systemd1"; static constexpr const char* sysdMgrIntf = "org.freedesktop.systemd1.Manager"; static constexpr const char* sysdUnitIntf = "org.freedesktop.systemd1.Unit"; static constexpr const char* sysdSocketIntf = "org.freedesktop.systemd1.Socket"; static constexpr const char* dBusPropIntf = "org.freedesktop.DBus.Properties"; static constexpr const char* stateMasked = "masked"; static constexpr const char* stateEnabled = "enabled"; static constexpr const char* stateDisabled = "disabled"; static constexpr const char* subStateRunning = "running"; static constexpr const char* subStateListening = "listening"; using ListUnitsType = std::tuple; enum class ListUnitElements { name, descriptionString, loadState, activeState, subState, followedUnit, objectPath, queuedJobType, jobType, jobObject }; static inline std::string addInstanceName(const std::string& instanceName, const std::string& suffix) { return (instanceName.empty() ? "" : suffix + instanceName); } void checkAndThrowInternalFailure(boost::system::error_code& ec, const std::string& msg); void systemdDaemonReload( const std::shared_ptr& conn, boost::asio::yield_context yield); void systemdUnitAction(const std::shared_ptr& conn, boost::asio::yield_context yield, const std::string& unitName, const std::string& actionMethod); void systemdUnitFilesStateChange( const std::shared_ptr& conn, boost::asio::yield_context yield, const std::vector& unitFiles, const std::string& unitState, bool maskedState, bool enabledState);