コード例 #1
0
ファイル: wg_msgrouter.cpp プロジェクト: tordj/WonderGUI
int MsgRouter::deleteRoutesTo( const Receiver_p& _pReceiver )
{
    Receiver * pReceiver = _pReceiver.rawPtr();
    int nDeleted = 0;

    // Delete from source routes

    for( auto it = m_sourceRoutes.begin() ; it != m_sourceRoutes.end() ; it++ )
    {
        Route * p = it->second.first();
        while( p )
        {
            if( p->receiver() == pReceiver )
            {
                Route * pNext = p->next();
                delete p;					// Receiver is dead, delete route.
                nDeleted++;
                p = pNext;
            }
            else
                p = p->next();

        }
    }

    // Delete from type routes

    for( auto it = m_typeRoutes.begin() ; it != m_typeRoutes.end() ; it++ )
    {
        Route * p = it->second.first();
        while( p )
        {
            if( p->receiver() == pReceiver )
            {
                Route * pNext = p->next();
                delete p;					// Receiver is dead, delete route.
                nDeleted++;
                p = pNext;
            }
            else
                p = p->next();
        }
    }

    return nDeleted;
}
コード例 #2
0
ファイル: wg_msgrouter.cpp プロジェクト: tordj/WonderGUI
bool  MsgRouter::endBroadcast( const Receiver_p& _pReceiver )
{
    Receiver * pReceiver = _pReceiver.rawPtr();
    Route * p = m_broadcasts.first();
    while( p )
    {
        if( p->receiver() == pReceiver )
        {
            delete p;
            return true;
        }

        p = p->next();
    }
    return false;
}