PhoenixSocket
6.4.0
Library which integrates socket use in Phoenix
Toggle main menu visibility
Loading...
Searching...
No Matches
PMockBackend_impl.h
Go to the documentation of this file.
1
/***************************************
2
Auteur : Pierre Aubert
3
Mail : pierre.aubert@lapp.in2p3.fr
4
Licence : CeCILL-C
5
****************************************/
6
7
#ifndef __PMOCKBACKEND_IMPL_H__
8
#define __PMOCKBACKEND_IMPL_H__
9
10
#include "
PMockBackend.h
"
11
13
17
template
<
typename
T>
18
bool
socket_serialize_message
(
PMockSocket::Message
& msg,
const
T & data){
19
size_t
dataSize(data_size<T>(data));
20
msg.resize(dataSize);
21
DataStreamIter iter = (DataStreamIter)msg.data();
22
return
data_message_save<T>(iter, data);
23
}
24
25
27
31
template
<
typename
T>
32
PSendStatus::PSendStatus
PMockSocket::sendData
(
const
T & data,
PSendFlag::PSendFlag
flag){
33
if
(
p_mock
.getIsRecord()){
34
PMockSocket::Message
msg;
35
if
(
socket_serialize_message
(msg, data)){
36
return
sendMsg
(msg, flag);
37
}
else
{
38
return
PSendStatus::CANNOT_SERIALIZE_DATA
;
39
}
40
}
else
{
41
T referenceData;
42
PMockSocket::Message
referenceMsg;
43
p_mock
.getCurrentValue(referenceMsg);
//Let's get the reference message
44
if
(referenceMsg.size() != 0lu){
45
DataStreamIter iter = (DataStreamIter)referenceMsg.data();
46
check_stream_assert(data_message_load<T>(iter, referenceData));
47
std::stringstream index;
48
index <<
p_mock
.getCurrentIndex();
49
check_stream_assert(phoenix_check_stream(
"mock '"
+
p_mock
.getFileName()+
"', [mock index = "
+index.str()+
"]"
, data, referenceData));
50
}
51
return
PSendStatus::OK
;
52
}
53
}
54
56
60
template
<
typename
T>
61
PRecvStatus::PRecvStatus
PMockSocket::recvData
(T & data,
PRecvFlag::PRecvFlag
flag){
62
PRecvStatus::PRecvStatus
recvStatus =
PRecvStatus::OK
;
63
PMockSocket::Message
msg;
64
if
(
p_mock
.getIsRecord()){
65
if
(
socket_serialize_message
(msg, data)){
66
return
recvMsg
(msg, flag);
67
}
else
{
68
return
PRecvStatus::CANNOT_DESERIALIZE_DATA
;
69
}
70
}
71
else
{
72
recvStatus =
recvMsg
(msg, flag);
73
//If the message is empty we cannot initialise the given data, so, this is an error
74
if
(msg.size() != 0lu){
75
DataStreamIter iter = (DataStreamIter)msg.data();
76
if
(!data_message_load<T>(iter, data)){
77
recvStatus =
PRecvStatus::CANNOT_DESERIALIZE_DATA
;
78
}
79
}
else
{
80
recvStatus =
PRecvStatus::NO_MESSAGE_RECEIVED
;
81
}
82
}
83
return
recvStatus;
84
}
85
86
#endif
87
PMockBackend.h
socket_serialize_message
bool socket_serialize_message(PMockSocket::Message &msg, const T &data)
Serialize a message from data.
Definition
PMockBackend_impl.h:18
PMockSocket::sendData
PSendStatus::PSendStatus sendData(const T &data, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Send data with the socket.
Definition
PMockBackend_impl.h:32
PMockSocket::p_mock
PGenericVecMock< DataStreamMsg > p_mock
Mock handler.
Definition
PMockBackend.h:45
PMockSocket::sendMsg
PSendStatus::PSendStatus sendMsg(const Message &msg, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Specialisation to send a Message with the socket.
Definition
PMockBackend.cpp:76
PMockSocket::Message
DataStreamMsg Message
Define the type of message used by the PAbstractSocketManager.
Definition
PMockBackend.h:20
PMockSocket::recvMsg
PRecvStatus::PRecvStatus recvMsg(Message &msg, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieved data with the socket.
Definition
PMockBackend.cpp:90
PMockSocket::recvData
PRecvStatus::PRecvStatus recvData(T &data, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieved data with the socket.
Definition
PMockBackend_impl.h:61
PRecvFlag::PRecvFlag
PRecvFlag
describe the receiving flag of the Socket
Definition
PSocketFlag.h:35
PRecvStatus::PRecvStatus
PRecvStatus
describe the result of the recv
Definition
PSocketFlag.h:43
PRecvStatus::CANNOT_DESERIALIZE_DATA
@ CANNOT_DESERIALIZE_DATA
Definition
PSocketFlag.h:51
PRecvStatus::NO_MESSAGE_RECEIVED
@ NO_MESSAGE_RECEIVED
Definition
PSocketFlag.h:45
PRecvStatus::OK
@ OK
Definition
PSocketFlag.h:44
PSendFlag::PSendFlag
PSendFlag
describe the sending flag of the Socket
Definition
PSocketFlag.h:14
PSendStatus::PSendStatus
PSendStatus
describe the result of the send
Definition
PSocketFlag.h:22
PSendStatus::CANNOT_SERIALIZE_DATA
@ CANNOT_SERIALIZE_DATA
Definition
PSocketFlag.h:29
PSendStatus::OK
@ OK
Definition
PSocketFlag.h:23
src
PMockBackend_impl.h
Generated by
1.17.0