void CHSHandlerClass::HandleDeleteClass(CHSPacket * pPacket)
{
    CHSPDeleteClass *pDelete = static_cast < CHSPDeleteClass * >(pPacket);
    CHSPDeleteClassResponse cmdResponse;

    cmdResponse.SetPacketAddress(pDelete->GetPacketAddress());
    cmdResponse.m_bDeleted = true;

    // Check to see if any ships remain with that class.
    // If so, don't allow it to be deleted.
    THSUniverseIterator tIter;
    HS_BOOL8 bIter;
    for (bIter = CHSUniverseDB::GetInstance().GetFirstUniverse(tIter); bIter;
         bIter = CHSUniverseDB::GetInstance().GetNextUniverse(tIter))
    {
        CHSUniverse *pUniverse = tIter.pValue;

        // Search ships in the universe
        THSObjectIterator tIterator;
        HS_BOOL8 bContinue;
        for (bContinue = pUniverse->GetFirstObject(tIterator, HST_SHIP);
             bContinue;
             bContinue = pUniverse->GetNextObject(tIterator, HST_SHIP))
        {
            if (tIterator.pValue)
            {
                CHSShip *pShip = static_cast < CHSShip * >(tIterator.pValue);
                if (pShip->ClassNum() == pDelete->m_uiClassID)
                {
                    // This class is still in use.
                    cmdResponse.m_bDeleted = false;
                    break;
                }
            }
        }

        if (bContinue)
        {
            // Inner loop exited prematurely.
            break;
        }
    }

    // Can we delete this class?
    if (cmdResponse.m_bDeleted)
    {
        cmdResponse.m_bDeleted =
            CHSClassDB::GetInstance().RemoveClass(pDelete->m_uiClassID);
    }

    HSNetwork.SendPacket(cmdResponse);
}