PhoenixZMQ  2.0.0
Library which integrates zeromq use in Phoenix
PGenericSocketManager_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 __PGENERIC_SOCKET_MANAGER_H_IMPL__
8 #define __PGENERIC_SOCKET_MANAGER_H_IMPL__
9 
10 #include "PGenericSocketManager.h"
11 
13 
15 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
17  initialisationPGenericSocketManager(mode);
18 }
19 
21 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
23  clear();
24 }
25 
27 
29 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
31  p_mode = mode;
32 }
33 
35 
37 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
39  return p_mode;
40 }
41 
43 
48 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
49 bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::addClientSocket(const _TSocketKey & name, const typename _TBackend::Param & param, const typename _TMockBackend::Param & mockParam)
50 {
52  bool b(socket != NULL);
53  if(b){
54  b &= socket->createClientSocket(param, mockParam);
55  if(b){
56  p_mapSocket[name] = socket;
57  }
58  }
59  return b;
60 }
61 
63 
68 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
69 bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::addServerSocket(const _TSocketKey & name, const typename _TBackend::Param & param, const typename _TMockBackend::Param & mockParam)
70 {
72  bool b(socket != NULL);
73  if(b){
74  b &= socket->createServerSocket(param, mockParam);
75  if(b){
76  p_mapSocket[name] = socket;
77  }
78  }
79  return b;
80 }
81 
83 
85 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
87  typename std::map<_TSocketKey, PGenericSocket<_TBackend, _TMockBackend>* >::iterator it(p_mapSocket.find(name));
88  if(it != p_mapSocket.end()){
89  delete it->second;
90  p_mapSocket.erase(it);
91  }
92 }
93 
95 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
97  for(typename std::map<_TSocketKey, PGenericSocket<_TBackend, _TMockBackend>* >::iterator it(p_mapSocket.begin()); it != p_mapSocket.end(); ++it){
98  delete it->second;
99  }
100  p_mapSocket.clear();
101 }
102 
104 
109 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
110 bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PSendFlag::PSendFlag flag){
111  PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
112  if(socket != NULL){
113  return socket->sendMsg(msg, flag);
114  }else{
115  return false;
116  }
117 }
118 
120 
125 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
126 bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PRecvFlag::PRecvFlag flag){
127  PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
128  if(socket != NULL){
129  return socket->recvMsg(msg, flag);
130  }else{
131  return false;
132  }
133 }
134 
136 
139 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
141 {
142  typename std::map<_TSocketKey, PGenericSocket<_TBackend, _TMockBackend>* >::iterator it(p_mapSocket.find(name));
143  if(it != p_mapSocket.end()){
144  return it->second;
145  }else{
146  return NULL;
147  }
148 }
149 
151 
154 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
156  typename std::map<_TSocketKey, PGenericSocket<_TBackend, _TMockBackend>* >::const_iterator it(p_mapSocket.find(name));
157  return it != p_mapSocket.end();
158 }
159 
161 
164 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
166  typename std::map<_TSocketKey, PGenericSocket<_TBackend, _TMockBackend>* >::const_iterator it(p_mapSocket.find(name));
167  if(it != p_mapSocket.end()){
168  return it->second->isConnected();
169  }
170  return false;
171 }
172 
173 
175 
177 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
179  p_mode = mode;
180 }
181 
182 
183 
184 
185 
186 #endif
187 
188 
189 
bool isSocketExist(const _TSocketKey &name) const
Say if the socket exist with the given name.
bool isConnected(const _TSocketKey &name) const
Say if the given socket is connected.
bool addServerSocket(const _TSocketKey &name, const typename _TBackend::Param &param, const typename _TMockBackend::Param &mockParam)
Create a server socket.
bool sendMsg(const _TSocketKey &name, typename _TBackend::Message &msg, PSendFlag::PSendFlag flag=PSendFlag::BLOCK)
Send message on the given socket.
PGenericSocket< _TBackend, _TMockBackend > * getSocket(const _TSocketKey &name)
Get a socket by name (or key)
bool addClientSocket(const _TSocketKey &name, const typename _TBackend::Param &param, const typename _TMockBackend::Param &mockParam)
Create a client socket.
void removeSocket(const _TSocketKey &name)
Remove the given socket.
PGenericSocketManager(PSocketMode::PSocketMode mode=PSocketMode::NO_MOCK)
Default constructor of PGenericSocketManager.
void setMode(PSocketMode::PSocketMode mode)
Set if the current PGenericSocketManager is a mock.
virtual ~PGenericSocketManager()
Destructor of PGenericSocketManager.
PSocketMode::PSocketMode getMode() const
Get if the current PGenericSocketManager is a mock.
bool recvMsg(const _TSocketKey &name, typename _TBackend::Message &msg, PRecvFlag::PRecvFlag flag=PRecvFlag::BLOCK)
Recieve message from the given socket.
void clear()
Clear the map of socket.
void initialisationPGenericSocketManager(PSocketMode::PSocketMode mode)
Initialisation function of the class PGenericSocketManager.
Abstract socket which has a mock mode to avoid heavy socket backend for unit tests.
bool recvMsg(typename _TBackend::Message &msg, PRecvFlag::PRecvFlag flag)
Recieve message from the given socket.
bool sendMsg(typename _TBackend::Message &msg, PSendFlag::PSendFlag flag)
Send message on the given socket.
bool createClientSocket(const typename _TBackend::Param &param, const typename _TMockBackend::Param &mockParam)
Create a client socket.
bool createServerSocket(const typename _TBackend::Param &param, const typename _TMockBackend::Param &mockParam)
Create a server socket.
PRecvFlag
describe the recieving flag of the Socket
Definition: PSocketFlag.h:20
PSendFlag
describe the sending flag of the Socket
Definition: PSocketFlag.h:12
PSocketMode
describe the mode of the Socket
Definition: PSocketMode.h:12