/**
  * The a particular socket's connection failed
  * This function will call all substreams disconnected methods
  */
 template <class ErrorCode> void connectionFailedCallback(const ASIOSocketWrapper* whichSocket, const ErrorCode &error) {
     unsigned int which=0;
     for (std::vector<ASIOSocketWrapper>::iterator i=mSockets.begin(),ie=mSockets.end(); i!=ie; ++i,++which) {
         if (&*i==whichSocket)
             break;
     }
     connectionFailedCallback(which==mSockets.size()?0:which,error.message());
 }
 /**
  * The connection failed to connect before any sockets had been established (ex: host not found)
  * This function will call all substreams disconnected methods
  */
 template <class ErrorCode> void connectionFailedCallback(const ErrorCode& error) {
     connectionFailedCallback(error.message());
 }
 /**
  * The a particular socket's connection failed
  * This function will call all substreams disconnected methods
  */
 template <class ErrorCode> void connectionFailedCallback(unsigned int whichSocket, const ErrorCode& error) {
     connectionFailedCallback(whichSocket,error.message());
 }
void MultiplexedSocket::connectionFailedCallback(unsigned int whichSocket, const std::string& error) {
    connectionFailedCallback(error);
    //FIXME do something with the socket specifically that failed.
}