PhoenixSocket  4.0.1
Library which integrates socket unix use in Phoenix
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
17template<typename T>
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
31template<typename T>
33 if(p_mock.getIsRecord()){
35 if(socket_serialize_message(msg, data)){
36 return sendMsg(msg, flag);
37 }else{
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
60template<typename T>
64 if(p_mock.getIsRecord()){
65 if(socket_serialize_message(msg, data)){
66 return recvMsg(msg, flag);
67 }else{
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)){
78 }
79 }else{
81 }
82 }
83 return recvStatus;
84}
85
86#endif
87
bool socket_serialize_message(PMockSocket::Message &msg, const T &data)
Serialize a message from data.
PSendStatus::PSendStatus sendData(const T &data, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Send data with the socket.
PGenericVecMock< DataStreamMsg > p_mock
Mock handler.
PSendStatus::PSendStatus sendMsg(const Message &msg, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Specialisation to send a Message with the socket.
DataStreamMsg Message
Define the type of message used by the PAbstractSocketManager.
PRecvStatus::PRecvStatus recvMsg(Message &msg, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieved data with the socket.
PRecvStatus::PRecvStatus recvData(T &data, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieved data with the socket.
PRecvFlag
describe the receiving flag of the Socket
Definition PSocketFlag.h:41
PRecvStatus
describe the result of the recv
Definition PSocketFlag.h:52
@ CANNOT_DESERIALIZE_DATA
Definition PSocketFlag.h:60
@ NO_MESSAGE_RECEIVED
Definition PSocketFlag.h:54
PSendFlag
describe the sending flag of the Socket
Definition PSocketFlag.h:14
PSendStatus
describe the result of the send
Definition PSocketFlag.h:25
@ CANNOT_SERIALIZE_DATA
Definition PSocketFlag.h:32