Exemplo n.º 1
0
void SpaceNodeConnection::handleConnectionEvent(
    const Network::Stream::ConnectionStatus status,
    const std::string&reason)
{
    bool did_connect = status == Network::Stream::Connected;
    if (!did_connect) {
        mConnecting = false;
        invokeAndClearCallbacks(did_connect);
        mConnectCB(status, reason);
    }
    else {
        OHDP::SpaceNodeID self_id(mSpace, OHDP::NodeID::self());
        OHSSTBaseDatagramLayerPtr baseDatagramLayer =
            mContext->ohSSTConnMgr()->createDatagramLayer(
                self_id, mContext, mOHDPService
            );
        mContext->ohSSTConnMgr()->connectStream(
            OHSSTEndpoint(self_id, 0), // Local port is random
            OHSSTEndpoint(OHDP::SpaceNodeID(mSpace, OHDP::NodeID(mServer)), OBJECT_SPACE_PORT),
            std::tr1::bind( &SpaceNodeConnection::handleStreamConnected, this,
                status, reason,
                std::tr1::placeholders::_1, std::tr1::placeholders::_2
            )
        );
    }
}
 void connect(bool first)
 {
     log_debug << self_id() << " start_prim " << first;
     start_prim_ = first;
     closing_    = false;
     shift_to(S_NON_PRIM);
 }