int PeerNode::Connect() { int result = 0; boost::recursive_mutex::scoped_lock L(m_mutex); // if already connected then return if( m_bConnected == true ) return 0; // else connects // makes connection via connection manager interface ConnectionManagerPtr pConnMgr = ConnectionManager::GetConnectionManager(); ConnectionPtr pConn = m_pConn; if(pConn == NULL) { pConn = pConnMgr->Connect(m_ipAddress, m_listenPort); if( pConn == NULL ) { Log(ERR, L"Could not make connection to Peer Node with ip - %s, port - %d\n", m_ipAddress, m_port); if( this->IsCoordinatorNode() ) { // try connecting to backups pConn = ConnectBackups(); } if( pConn == NULL ) { return -1; } } } else { pConn->Connect(m_ipAddress, m_listenPort); } //m_pConn.reset(); m_pConn = pConn; m_pConn->SetPeerNode(shared_from_this()); m_pConn->Start(); m_bConnected = true; return result; }