2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Jan Olszak <j.olszak@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
21 * @author Jan Olszak (j.olszak@samsung.com)
22 * @brief Processor's request to send a signal
25 #ifndef COMMON_IPC_INTERNALS_SIGNAL_REQUEST_HPP
26 #define COMMON_IPC_INTERNALS_SIGNAL_REQUEST_HPP
28 #include "ipc/types.hpp"
29 #include "config/manager.hpp"
30 #include "logger/logger-scope.hpp"
37 SignalRequest(const SignalRequest&) = delete;
38 SignalRequest& operator=(const SignalRequest&) = delete;
42 template<typename SentDataType>
43 static std::shared_ptr<SignalRequest> create(const MethodID methodID,
44 const FileDescriptor peerFD,
45 const std::shared_ptr<SentDataType>& data);
48 FileDescriptor peerFD;
50 std::shared_ptr<void> data;
51 SerializeCallback serialize;
54 SignalRequest(const MethodID methodID, const FileDescriptor peerFD)
57 messageID(getNextMessageID())
62 template<typename SentDataType>
63 std::shared_ptr<SignalRequest> SignalRequest::create(const MethodID methodID,
64 const FileDescriptor peerFD,
65 const std::shared_ptr<SentDataType>& data)
67 std::shared_ptr<SignalRequest> request(new SignalRequest(methodID, peerFD));
71 request->serialize = [](const int fd, std::shared_ptr<void>& data)->void {
72 LOGS("Signal serialize, peerFD: " << fd);
73 config::saveToFD<SentDataType>(fd, *std::static_pointer_cast<SentDataType>(data));
82 #endif // COMMON_IPC_INTERNALS_SIGNAL_REQUEST_HPP