Index: trunk/include/FlairCore/ConnectedSocket.h
===================================================================
--- trunk/include/FlairCore/ConnectedSocket.h	(revision 68)
+++ trunk/include/FlairCore/ConnectedSocket.h	(revision 74)
@@ -53,5 +53,5 @@
   * \brief Returns a socket on a new incoming connexion
   *
-  * \param ConnectedSocket &listeningSocket
+  * \param timeout timeout (in nanoseconds)
   */
   virtual ConnectedSocket *Accept(
@@ -65,5 +65,5 @@
   * \param unsigned int port
   * \param const distantAddress
-  * \param timeout timeout (in milliseconds)
+  * \param timeout timeout (in nanoseconds)
   */
   virtual bool Connect(const unsigned int port,
@@ -71,9 +71,9 @@
 
   /*!
-  * \brief Send a message
+  * \brief Send a message waiting up to timeout ns
   *
   * \param message message
   * \param message_len message length
-  * \param timeout timeout (in milliseconds)
+  * \param timeout timeout (in nanoseconds)
   */
   virtual ssize_t SendMessage(const char *message, size_t message_len,
@@ -83,9 +83,9 @@
   * \brief Receive a message
   *
-  * Receive a message and wait up to timeout. \n
+  * Receive a message and wait up to timeout ns. \n
   *
   * \param buf buffer to put the message
   * \param buf_len buffer length
-  * \param timeout timeout (in milliseconds)
+  * \param timeout timeout (in nanoseconds)
   *
   * \return size of the received message
Index: trunk/include/FlairCore/IODevice.h
===================================================================
--- trunk/include/FlairCore/IODevice.h	(revision 68)
+++ trunk/include/FlairCore/IODevice.h	(revision 74)
@@ -151,5 +151,4 @@
     void SetIsReady(bool status);
 
-private:
   /*!
   * \brief Update using provided datas
@@ -164,4 +163,5 @@
   virtual void UpdateFrom(const io_data *data) = 0;
 
+  private:
   class IODevice_impl *pimpl_;
 };
Index: trunk/include/FlairCore/Semaphore.h
===================================================================
--- trunk/include/FlairCore/Semaphore.h	(revision 68)
+++ trunk/include/FlairCore/Semaphore.h	(revision 74)
@@ -31,4 +31,5 @@
 
 public:
+  enum class Type { anonymous, named };
   /*!
   * \brief Constructor
@@ -39,5 +40,5 @@
   * \param name name
   */
-  Semaphore(const Object *parent, uint32_t initialValue, std::string name = "");
+  Semaphore(const Object *parent, uint32_t initialValue, std::string name = "", Type type=Type::anonymous);
 
   /*!
@@ -74,4 +75,5 @@
 private:
   class Semaphore_impl *pimpl_;
+  Type type;
 };
 
Index: trunk/include/FlairCore/SharedMem.h
===================================================================
--- trunk/include/FlairCore/SharedMem.h	(revision 68)
+++ trunk/include/FlairCore/SharedMem.h	(revision 74)
@@ -40,6 +40,7 @@
   * \param parent parent
   * \param name name
-  * \param size size of the shared memory
-  * \param blockOnRead if true reading will block if nothing written
+  * \param size size of the shared memory:w
+   *
+  * \param type mutex or producerConsumer. Mutex type is for symmetrical use (default)
   */
   SharedMem(const Object *parent, std::string name, size_t size, Type type=Type::mutex);
Index: trunk/include/FlairCore/TcpSocket.h
===================================================================
--- trunk/include/FlairCore/TcpSocket.h	(revision 68)
+++ trunk/include/FlairCore/TcpSocket.h	(revision 74)
@@ -30,11 +30,9 @@
   void Listen(const unsigned int port, const std::string localAddress = "ANY");
   TcpSocket *Accept(
-      Time timeout = 0); // should throw an exception if not a listening socket
+      Time timeout = TIME_INFINITE);
   bool Connect(const unsigned int distantPort, const std::string distantAddress,
-               Time timeout = 0); // timeout in milliseconds
-  ssize_t SendMessage(const char *message, size_t message_len,
-                      Time timeout = 0); // timeout in milliseconds
-  ssize_t RecvMessage(char *buf, size_t buf_len,
-                      Time timeout = 0); // timeout in milliseconds
+               Time timeout = TIME_INFINITE);
+  ssize_t SendMessage(const char *message, size_t message_len, Time timeout = TIME_INFINITE);
+  ssize_t RecvMessage(char *buf, size_t buf_len, Time timeout = TIME_INFINITE);
 
   uint16_t NetworkToHost16(uint16_t data);
@@ -48,6 +46,8 @@
   bool blockOnReceive;
   bool isConnected;
+  bool isListening;
   unsigned int distantPort;
   std::string distantAddress;
+  char *sendRingBuffer, *recvRingBuffer;
 };
 
