diff --git a/src/PEmptyBackend.cpp b/src/PEmptyBackend.cpp
index 1e12673e851174a806f72f846726d2aaf08ae950..7dbdfa714803525711c134f04cf1b4647a052b35 100644
--- a/src/PEmptyBackend.cpp
+++ b/src/PEmptyBackend.cpp
@@ -76,20 +76,20 @@ bool PEmptyBackend::createServerSocket(PEmptyBackend::Socket & socket, const PEm
 ///Send message on the given socket
 /**	@param socket : socket to be used
  * 	@param msg : message to be sent
- * 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+ * 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
  * 	@return true on success, false otherwise
 */
-bool PEmptyBackend::send(PEmptyBackend::Socket & socket, const PEmptyBackend::Message & msg, int flags){
+bool PEmptyBackend::send(PEmptyBackend::Socket & socket, const PEmptyBackend::Message & msg, PSendFlag::PSendFlag flag){
 	return true;
 }
 
 ///Recieve message from the given socket
 /**	@param socket : socket to be used
  * 	@param msg : message to be recieved
- * 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+ * 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
  * 	@return true on success, false otherwise
 */
-bool PEmptyBackend::recv(PEmptyBackend::Socket & socket, PEmptyBackend::Message & msg, int flags){
+bool PEmptyBackend::recv(PEmptyBackend::Socket & socket, PEmptyBackend::Message & msg, PRecvFlag::PRecvFlag flag){
 	return false;
 }
 
diff --git a/src/PEmptyBackend.h b/src/PEmptyBackend.h
index a621b9188b1af4e11d7db1da0afab10779ef0154..b5e0c0937867b219a0b656c9813edac9054c7cfe 100644
--- a/src/PEmptyBackend.h
+++ b/src/PEmptyBackend.h
@@ -7,6 +7,7 @@
 #ifndef __PEMPTY_BACKEND_H__
 #define __PEMPTY_BACKEND_H__
 
+#include "PSocketFlag.h"
 #include "phoenix_mock_socket.h"
 
 ///@brief Set of parameters to be passed to create a socket with mock backend
@@ -26,15 +27,6 @@ class PEmptyBackend{
 		typedef std::vector<char> Message;
 		///Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketManager
 		typedef PEmptyParam Param;
-		///Type of the send flag
-		typedef int SendFlag;
-		///Type of the recv flag
-		typedef int RecvFlag;
-		
-		///Default send flags of the PZmqBackend used by the PAbstractSocketManager
-		static const int defaultSendFlag = 0;
-		///Default recv flags of the PZmqBackend used by the PAbstractSocketManager
-		static const int defaultRecvFlag = 0;
 		
 		PEmptyBackend();
 		
@@ -47,9 +39,10 @@ class PEmptyBackend{
 		static bool createClientSocket(Socket & socket, const PEmptyParam & param);
 		static bool createServerSocket(Socket & socket, const PEmptyParam & param);
 		
-		static bool send(Socket & socket, const Message& msg, int flags);
-		static bool recv(Socket & socket, Message& msg, int flags);
-				
+		static bool send(Socket & socket, const Message& msg, PSendFlag::PSendFlag flag);
+		
+		static bool recv(Socket & socket, Message& msg, PRecvFlag::PRecvFlag flag);
+		
 		static void msgResize(Message& msg, size_t sizeMsg);
 		static size_t msgSize(const Message& msg);
 		static const char* msgData(const Message& msg);
diff --git a/src/PGenericSocket.h b/src/PGenericSocket.h
index 44f60b464cf755d514c27859e1e68eb9c1c51e36..e0d299be07d1fc4c6e058847ba12fd427bb00ff9 100644
--- a/src/PGenericSocket.h
+++ b/src/PGenericSocket.h
@@ -8,6 +8,7 @@
 #define __PGENERIC_SOCKET_H__
 
 #include "PSocketMode.h"
+#include "PSocketFlag.h"
 #include "phoenix_mock_socket.h"
 
 ///@brief Abstract socket which has a mock mode to avoid heavy socket backend for unit tests
@@ -22,11 +23,11 @@ class PGenericSocket{
 		
 		///Send message on the given socket
 		/**	@param data : data to be sent
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+		* 	@param flag : flag to be used to send the message (BLOCK, NON_BLOCK, etc)
 		* 	@return true on success, false otherwise
 		*/
-		template<typename U, typename _TFlag>
-		bool sendData(const U & data, _TFlag flags){
+		template<typename U>
+		bool sendData(const U & data, PSendFlag::PSendFlag flag){
 			size_t dataSize(data_size<U>(data));
 			bool b(true);
 			
@@ -35,7 +36,7 @@ class PGenericSocket{
 				_TMockBackend::msgResize(msg, dataSize);
 				char* iter = _TMockBackend::msgData(msg);
 				if(data_message_save<char*, U>(iter, data)){			//Save the message
-					b &= _TMockBackend::send(p_mockSocket, msg, (typename _TMockBackend::SendFlag)flags);
+					b &= _TMockBackend::send(p_mockSocket, msg, flag);
 				}else{
 					b = false;
 				}
@@ -45,46 +46,27 @@ class PGenericSocket{
 				_TBackend::msgResize(msg, dataSize);
 				char* iter = _TBackend::msgData(msg);
 				if(data_message_save<char*, U>(iter, data)){			//Save the message
-					b &= _TBackend::send(p_socket, msg, (typename _TBackend::SendFlag)flags);
+					b &= _TBackend::send(p_socket, msg, flag);
 				}else{
 					b = false;
 				}
 			}
 			return b;
 		}
-		
-		///Send message on the given socket
-		/**	@param msg : message to be sent
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename _TFlag>
-		bool sendMsg(typename _TBackend::Message & msg, _TFlag flags){
-			size_t dataSize(msg.size());
-			bool b(true);
-			if(p_mode != PSocketMode::NO_MOCK){
-				typename _TMockBackend::Message vecTmp;
-				_TMockBackend::msgResize(vecTmp, dataSize);
-				memcpy(_TMockBackend::msgData(vecTmp), _TBackend::msgData(msg), dataSize);
-				b &= _TMockBackend::send(p_mockSocket, vecTmp, (typename _TMockBackend::SendFlag)flags);
-			}
-			if(p_mode != PSocketMode::MOCK){
-				b &= _TBackend::send(p_socket, msg, (typename _TBackend::SendFlag)flags);
-			}
-			return b;
-		}
+
+		bool sendMsg(typename _TBackend::Message & msg, PSendFlag::PSendFlag flag);
 		
 		///Recieve message from the given socket
 		/**	@param data : data to be recieved
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+		* 	@param flag : flag to be used to send the message (BLOCK, NON_BLOCK, etc)
 		* 	@return true on success, false otherwise
 		*/
-		template<typename U, typename _TFlag>
-		bool recvData(U & data, _TFlag flags){
+		template<typename U>
+		bool recvData(U & data, PRecvFlag::PRecvFlag flag){
 			bool b(true);
 			if(p_mode == PSocketMode::NO_MOCK){	//Normal mode
 				typename _TBackend::Message msg;
-				b &= _TBackend::recv(p_socket, msg, (typename _TBackend::RecvFlag)flags);
+				b &= _TBackend::recv(p_socket, msg, flag);
 				//If the message is empty we cannot initialise the given data, so, this is an error
 				b &= _TBackend::msgSize(msg) != 0lu;
 				if(b){
@@ -93,7 +75,7 @@ class PGenericSocket{
 				}
 			}else if(p_mode == PSocketMode::MOCK){	//Mock mode
 				typename _TMockBackend::Message msg;
-				b &= _TMockBackend::recv(p_mockSocket, msg, (typename _TMockBackend::RecvFlag)flags);
+				b &= _TMockBackend::recv(p_mockSocket, msg, flag);
 				//If the message is empty we cannot initialise the given data, so, this is an error
 				b &= _TMockBackend::msgSize(msg) != 0lu;
 				if(b){
@@ -102,7 +84,7 @@ class PGenericSocket{
 				}
 			}else{					//Mock record mode
 				typename _TBackend::Message msg;
-				b &= _TBackend::recv(p_socket, msg, (typename _TBackend::RecvFlag)flags);
+				b &= _TBackend::recv(p_socket, msg, flag);
 				//If the message is empty we cannot initialise the given data, so, this is an error
 				b &= _TBackend::msgSize(msg) != 0lu;
 				if(b){
@@ -114,43 +96,14 @@ class PGenericSocket{
 						size_t dataSize(_TBackend::msgSize(msg));
 						_TMockBackend::msgResize(msgMock, dataSize);
 						memcpy(_TMockBackend::msgData(msgMock), _TBackend::msgData(msg), dataSize);
-						b &= _TMockBackend::recv(p_mockSocket, msgMock, (typename _TMockBackend::RecvFlag)flags);
+						b &= _TMockBackend::recv(p_mockSocket, msgMock, flag);
 					}
 				}
 			}
 			return b;
 		}
 		
-		///Recieve message from the given socket
-		/**	@param msg : message to be recieved
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename _TFlag>
-		bool recvMsg(typename _TBackend::Message & msg, _TFlag flags){
-			bool b(true);
-			if(p_mode == PSocketMode::NO_MOCK){	//Normal mode
-				b &= _TBackend::recv(p_socket, msg, (typename _TBackend::RecvFlag)flags);
-			}else if(p_mode == PSocketMode::MOCK){	//Mock mode
-				typename _TMockBackend::Message msgMock;
-				b &= _TMockBackend::recv(p_mockSocket, msgMock, (typename _TMockBackend::RecvFlag)flags);
-				if(b){
-					size_t dataSize(_TMockBackend::msgSize(msgMock));
-					_TBackend::msgResize(msg, dataSize);
-					memcpy(_TBackend::msgData(msg), _TMockBackend::msgData(msgMock), dataSize);
-				}
-			}else{					//Mock record mode
-				b &= _TBackend::recv(p_socket, msg, (typename _TBackend::RecvFlag)flags);
-				if(b){
-					typename _TMockBackend::Message msgMock;
-					size_t dataSize(_TBackend::msgSize(msg));
-					_TMockBackend::msgResize(msgMock, dataSize);
-					memcpy(_TMockBackend::msgData(msgMock), _TBackend::msgData(msg), dataSize);
-					b &= _TMockBackend::recv(p_mockSocket, msgMock, (typename _TMockBackend::RecvFlag)flags);
-				}
-			}
-			return b;
-		}
+		bool recvMsg(typename _TBackend::Message & msg, PRecvFlag::PRecvFlag flag);
 		
 		void close();
 		bool isConnected() const;
diff --git a/src/PGenericSocketManager.h b/src/PGenericSocketManager.h
index 227099e441420b9e29f18f53f335cbd0582d15fe..1862e4b4dc18dc0dc74e2e196a839c63e5b998ea 100644
--- a/src/PGenericSocketManager.h
+++ b/src/PGenericSocketManager.h
@@ -22,6 +22,7 @@ class PGenericSocketManager{
 		virtual ~PGenericSocketManager();
 		
 		void setMode(PSocketMode::PSocketMode mode);
+		PSocketMode::PSocketMode getMode() const;
 		bool addClientSocket(const _TSocketKey & name, const typename _TBackend::Param & param, const typename _TMockBackend::Param & mockParam);
 		bool addServerSocket(const _TSocketKey & name, const typename _TBackend::Param & param, const typename _TMockBackend::Param & mockParam);
 		
@@ -31,88 +32,38 @@ class PGenericSocketManager{
 		///Send data on the given socket
 		/**	@param name : name of the socket to be used
 		* 	@param data : data to be sent
+		* 	@param flag : flag to be used to send the message (BLOCK, NON_BLOCK, etc)
 		* 	@return true on success, false otherwise
 		*/
 		template<typename U>
-		bool sendData(const _TSocketKey & name, const U & data){
-			return sendData(name, data, _TBackend::defaultSendFlag);
-		}
-		
-		///Send data on the given socket
-		/**	@param name : name of the socket to be used
-		* 	@param data : data to be sent
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename U, typename _TFlag>
-		bool sendData(const _TSocketKey & name, const U & data, _TFlag flags){
+		bool sendData(const _TSocketKey & name, const U & data, PSendFlag::PSendFlag flag = PSendFlag::BLOCK){
 			PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
 			if(socket != NULL){
-				return socket->sendData(data, flags);
+				return socket->sendData(data, flag);
 			}else{
 				return false;
 			}
 		}
-		bool sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg);
 		
-		///Send message on the given socket
-		/**	@param name : name of the socket to be used
-		* 	@param msg : message to be sent
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename _TFlag>
-		bool sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg, _TFlag flags){
-			PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
-			if(socket != NULL){
-				return socket->sendMsg(msg, flags);
-			}else{
-				return false;
-			}
-		}
+		bool sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PSendFlag::PSendFlag flag = PSendFlag::BLOCK);
 		
 		///Recieve data from the given socket
 		/**	@param name : name of the socket to be used
 		* 	@param data : data to be recieved
+		* 	@param flags : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
 		* 	@return true on success, false otherwise
 		*/
 		template<typename U>
-		bool recvData(const _TSocketKey & name, U & data){
-			return recvData(name, data, _TBackend::defaultRecvFlag);
-		}
-		///Recieve data from the given socket
-		/**	@param name : name of the socket to be used
-		* 	@param data : data to be recieved
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename U, typename _TFlag>
-		bool recvData(const _TSocketKey & name, U & data, _TFlag flags){
+		bool recvData(const _TSocketKey & name, U & data, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK){
 			PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
 			if(socket != NULL){
-				return socket->recvData(data, flags);
+				return socket->recvData(data, flag);
 			}else{
 				return false;
 			}
 		}
 		
-		bool recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg);
-		
-		///Recieve message from the given socket
-		/**	@param name : name of the socket to be used
-		* 	@param msg : message to be recieved
-		* 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
-		* 	@return true on success, false otherwise
-		*/
-		template<typename _TFlag>
-		bool recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg, _TFlag flags){
-			PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
-			if(socket != NULL){
-				return socket->recvMsg(msg, flags);
-			}else{
-				return false;
-			}
-		}
+		bool recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PRecvFlag::PRecvFlag flag = PRecvFlag::BLOCK);
 		
 		PGenericSocket<_TBackend, _TMockBackend>* getSocket(const _TSocketKey & name);
 		bool isSocketExist(const _TSocketKey & name) const;
diff --git a/src/PGenericSocketManager_impl.h b/src/PGenericSocketManager_impl.h
index fd4d1c2ef053b64378952d554ae0f27409a56d96..879055a0d492616f3d0a95360061cded18dbe2f8 100644
--- a/src/PGenericSocketManager_impl.h
+++ b/src/PGenericSocketManager_impl.h
@@ -31,6 +31,14 @@ void PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::setMode(PSock
 	p_mode = mode;
 }
 
+///Get if the current PGenericSocketManager is a mock
+/**	@return Mode of the Socket (no mock, mock, mock_record)
+*/
+template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
+PSocketMode::PSocketMode PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::getMode() const{
+	return p_mode;
+}
+
 ///Create a client socket
 /**	@param name : name (key) to get the socket
  * 	@param param : extra customisable parameters for the creation of the socket (depends on the backend)
@@ -95,21 +103,33 @@ void PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::clear(){
 ///Send message on the given socket
 /**	@param name : name of the socket to be used
 * 	@param msg : message to be sent
+* 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
 * 	@return true on success, false otherwise
 */
 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
-bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg){
-	return sendMsg(name, msg, _TBackend::defaultSendFlag);
+bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::sendMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PSendFlag::PSendFlag flag){
+	PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
+	if(socket != NULL){
+		return socket->sendMsg(msg, flag);
+	}else{
+		return false;
+	}
 }
 
 ///Recieve message from the given socket
 /**	@param name : name of the socket to be used
 * 	@param msg : message to be recieved
+* 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
 * 	@return true on success, false otherwise
 */
 template<typename _TSocketKey, typename _TBackend, typename _TMockBackend>
-bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg){
-	return recvMsg(name, msg, _TBackend::defaultRecvFlag);
+bool PGenericSocketManager<_TSocketKey, _TBackend, _TMockBackend>::recvMsg(const _TSocketKey & name, typename _TBackend::Message & msg, PRecvFlag::PRecvFlag flag){
+	PGenericSocket<_TBackend, _TMockBackend> * socket = getSocket(name);
+	if(socket != NULL){
+		return socket->recvMsg(msg, flag);
+	}else{
+		return false;
+	}
 }
 
 ///Get a socket by name (or key)
diff --git a/src/PGenericSocket_impl.h b/src/PGenericSocket_impl.h
index 86f2bc990cb94a3219c9eb19dc42cebad0868504..f3d1fc6f34096a1efa2a23b615cd3f0452fffcc5 100644
--- a/src/PGenericSocket_impl.h
+++ b/src/PGenericSocket_impl.h
@@ -57,6 +57,58 @@ bool PGenericSocket<_TBackend, _TMockBackend>::createServerSocket(const typename
 	return b;
 }
 
+///Send message on the given socket
+/**	@param msg : message to be sent
+* 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
+* 	@return true on success, false otherwise
+*/
+template<typename _TBackend, typename _TMockBackend>
+bool PGenericSocket<_TBackend, _TMockBackend>::sendMsg(typename _TBackend::Message & msg, PSendFlag::PSendFlag flag){
+	size_t dataSize(msg.size());
+	bool b(true);
+	if(p_mode != PSocketMode::NO_MOCK){
+		typename _TMockBackend::Message vecTmp;
+		_TMockBackend::msgResize(vecTmp, dataSize);
+		memcpy(_TMockBackend::msgData(vecTmp), _TBackend::msgData(msg), dataSize);
+		b &= _TMockBackend::send(p_mockSocket, vecTmp, flag);
+	}
+	if(p_mode != PSocketMode::MOCK){
+		b &= _TBackend::send(p_socket, msg, flag);
+	}
+	return b;
+}
+
+///Recieve message from the given socket
+/**	@param msg : message to be recieved
+* 	@param flag : flags to be used to send the message (BLOCK, NON_BLOCK, etc)
+* 	@return true on success, false otherwise
+*/
+template<typename _TBackend, typename _TMockBackend>
+bool PGenericSocket<_TBackend, _TMockBackend>::recvMsg(typename _TBackend::Message & msg, PRecvFlag::PRecvFlag flag){
+	bool b(true);
+	if(p_mode == PSocketMode::NO_MOCK){	//Normal mode
+		b &= _TBackend::recv(p_socket, msg, flag);
+	}else if(p_mode == PSocketMode::MOCK){	//Mock mode
+		typename _TMockBackend::Message msgMock;
+		b &= _TMockBackend::recv(p_mockSocket, msgMock, flag);
+		if(b){
+			size_t dataSize(_TMockBackend::msgSize(msgMock));
+			_TBackend::msgResize(msg, dataSize);
+			memcpy(_TBackend::msgData(msg), _TMockBackend::msgData(msgMock), dataSize);
+		}
+	}else{					//Mock record mode
+		b &= _TBackend::recv(p_socket, msg, flag);
+		if(b){
+			typename _TMockBackend::Message msgMock;
+			size_t dataSize(_TBackend::msgSize(msg));
+			_TMockBackend::msgResize(msgMock, dataSize);
+			memcpy(_TMockBackend::msgData(msgMock), _TBackend::msgData(msg), dataSize);
+			b &= _TMockBackend::recv(p_mockSocket, msgMock, flag);
+		}
+	}
+	return b;
+}
+
 ///Close the socket
 template<typename _TBackend, typename _TMockBackend>
 void PGenericSocket<_TBackend, _TMockBackend>::close(){
diff --git a/src/PMockBackend.cpp b/src/PMockBackend.cpp
index a1562f6458ede06c5f0157f792106750a6f42f18..bcab258a399de1e17a3500b32578b523d736601d 100644
--- a/src/PMockBackend.cpp
+++ b/src/PMockBackend.cpp
@@ -74,10 +74,10 @@ bool PMockBackend::createServerSocket(PMockBackend::Socket & socket, const PMock
 ///Send message on the given socket
 /**	@param socket : socket to be used
  * 	@param msg : message to be sent
- * 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+ * 	@param flag : flag to be used to send the message (BLOCK, NON_BLOCK, etc)
  * 	@return true on success, false otherwise
 */
-bool PMockBackend::send(PMockBackend::Socket & socket, const PMockBackend::Message & msg, int flags){
+bool PMockBackend::send(PMockBackend::Socket & socket, const PMockBackend::Message & msg, PSendFlag::PSendFlag flag){
 	bool b(true);
 	if(socket.param.isMockRecord){	//If we record all events
 		socket.vecMessage.push_back(msg);
@@ -102,10 +102,10 @@ bool PMockBackend::send(PMockBackend::Socket & socket, const PMockBackend::Messa
 ///Recieve message from the given socket
 /**	@param socket : socket to be used
  * 	@param msg : message to be recieved
- * 	@param flags : flags to be used to send the message (none, dontwait, sndmore, etc)
+ * 	@param flag : flag to be used to send the message (BLOCK, NON_BLOCK, etc)
  * 	@return true on success, false otherwise
 */
-bool PMockBackend::recv(PMockBackend::Socket & socket, PMockBackend::Message & msg, int flags){
+bool PMockBackend::recv(PMockBackend::Socket & socket, PMockBackend::Message & msg, PRecvFlag::PRecvFlag flag){
 	if(socket.param.isMockRecord){	//If we record all events
 		socket.vecMessage.push_back(msg);
 	}else{
diff --git a/src/PMockBackend.h b/src/PMockBackend.h
index 04f8b1f6d18b799303942ae22024dd1eee4a4a65..7544b56660f3781e25ff705d58c6b0fe3237315d 100644
--- a/src/PMockBackend.h
+++ b/src/PMockBackend.h
@@ -7,6 +7,7 @@
 #ifndef __PMOCKBACKEND_H__
 #define __PMOCKBACKEND_H__
 
+#include "PSocketFlag.h"
 #include "phoenix_mock_socket.h"
 
 ///@brief Set of parameters to be passed to create a socket with mock backend
@@ -42,15 +43,6 @@ class PMockBackend{
 		typedef std::vector<char> Message;
 		///Define the type of extra parameters which can be used to create a Socket used by the PAbstractSocketManager
 		typedef PMockParam Param;
-		///Type of the send flag
-		typedef int SendFlag;
-		///Type of the recv flag
-		typedef int RecvFlag;
-		
-		///Default send flags of the PZmqBackend used by the PAbstractSocketManager
-		static const int defaultSendFlag = 0;
-		///Default recv flags of the PZmqBackend used by the PAbstractSocketManager
-		static const int defaultRecvFlag = 0;
 		
 		PMockBackend();
 		
@@ -60,8 +52,8 @@ class PMockBackend{
 		static bool createClientSocket(Socket & socket, const PMockParam & param);
 		static bool createServerSocket(Socket & socket, const PMockParam & param);
 		
-		static bool send(Socket & socket, const Message& msg, int flags);
-		static bool recv(Socket & socket, Message& msg, int flags);
+		static bool send(Socket & socket, const Message& msg, PSendFlag::PSendFlag flag);
+		static bool recv(Socket & socket, Message& msg, PRecvFlag::PRecvFlag flag);
 				
 		static void msgResize(Message& msg, size_t sizeMsg);
 		static size_t msgSize(const Message& msg);
diff --git a/src/PSocketFlag.h b/src/PSocketFlag.h
new file mode 100644
index 0000000000000000000000000000000000000000..415f06c51ee3090adb787751d4442c05daf0fda3
--- /dev/null
+++ b/src/PSocketFlag.h
@@ -0,0 +1,27 @@
+/***************************************
+	Auteur : Pierre Aubert
+	Mail : pierre.aubert@lapp.in2p3.fr
+	Licence : CeCILL-C
+****************************************/
+
+#ifndef __PSOCKET_FLAG_H__
+#define __PSOCKET_FLAG_H__
+
+namespace PSendFlag{
+	///@brief describe the sending flag of the Socket
+	enum PSendFlag{
+		BLOCK,		//Normal usage of the Socket. Blocking until a message is sent
+		NON_BLOCK	//The Socket send does not stop the execution of the program
+	};
+}
+
+namespace PRecvFlag{
+	///@brief describe the recieving flag of the Socket
+	enum PRecvFlag{
+		BLOCK,		//Normal usage of the Socket. Blocking until a message comes
+		NON_BLOCK	//The Socket recv does not stop the execution of the program
+	};
+}
+
+#endif
+