[LCOV] Prepare to measure the line coverage
[platform/upstream/csr-framework.git] / src / framework / common / connection.cpp
1 /*
2  *  Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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        connection.cpp
18  * @author      Kyungwook Tak (k.tak@samsung.com)
19  * @version     1.0
20  * @brief
21  */
22 #include "common/connection.h"
23
24 #include <utility>
25
26 extern "C" void __gcov_flush();
27
28 namespace Csr {
29
30 Connection::Connection(Socket &&socket) noexcept :
31         m_socket(std::move(socket))
32 {
33 }
34
35 Connection::Connection(Connection &&other) noexcept :
36         m_socket(std::move(other.m_socket))
37 {
38 }
39
40 Connection::~Connection()
41 {
42 }
43
44 Connection &Connection::operator=(Connection &&other) noexcept
45 {
46         if (this == &other)
47                 return *this;
48
49         this->m_socket = std::move(other.m_socket);
50         return *this;
51 }
52
53 void Connection::send(const RawBuffer &buf) const
54 {
55         __gcov_flush();
56         std::lock_guard<std::mutex> lock(this->m_mSend);
57         this->m_socket.write(buf);
58 }
59
60 RawBuffer Connection::receive() const
61 {
62         std::lock_guard<std::mutex> lock(this->m_mRecv);
63         return this->m_socket.read();
64 }
65
66 SockId Connection::getSockId() const noexcept
67 {
68         return this->m_socket.getSockId();
69 }
70
71 int Connection::getFd() const noexcept
72 {
73         return this->m_socket.getFd();
74 }
75
76 const Credential &Connection::getCredential()
77 {
78         if (this->m_cred)
79                 return *this->m_cred;
80
81         this->m_cred = Credential::get(getFd());
82
83         return *this->m_cred;
84 }
85
86 }