⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hbservercontainer.cxx

📁 Vovida 社区开源的 SIP 协议源码
💻 CXX
📖 第 1 页 / 共 2 页
字号:
    }    for (vector < Data > ::iterator i = itsCDRList.begin();            i != itsCDRList.end(); ++i)    {        listofServers->push_back(*i);    }}/** * Get List of Active Servers of a certain type   * @param  type  the type of server to search for    * @param  listofServers  list of all servers in container that matches the type.   */voidHBServerContainer::getListofActive( const ServerType type, Sptr < vector < Data > > & listofServers ){    /// function not used in heartbeat server at this time}/** * Add a server object that send messages to snmp.    * @param  key  Server's address    * @param  serverType  type of server.   */voidHBServerContainer::addServerWithSnmp( const Data& key,                                      const ServerType serverType ){    cpLog( LOG_DEBUG, "HBServerContainer::addServerWithSnmp %s",           convertToString(serverType) );    /// create a Server with 'new'    Sptr < ServerWithSnmp > server = new ServerWithSnmp(serverType);    WriteLockHelper tableHelper(tableLock);    /// insert the Server in the map    //serverList.insert(pair< Sptr<Data>, Sptr<Server> >(key, server));    serverList[key] = server;}/** * Deal with a heartbeat event from the given server * @param  key  Server who sent the heartbeat * @return  True if server is recognized, false if not */boolHBServerContainer::processHeartbeat( const Data& key){    Sptr < Server > serverPtr;    if (search( key, serverPtr) )    {        ReadLockHelper tableHelper(tableLock);        //cpLog(LOG_DEBUG, "Server found");        Sptr < ServerWithSnmp > serverWithSnmpPtr;        /// print data contained in the server object        switch (serverPtr->getType() )        {            case SERVER_JS:            case SERVER_FS:            case SERVER_MS:            case SERVER_RS:            case SERVER_POS:            case SERVER_CDR:            {                serverWithSnmpPtr.dynamicCast(serverPtr);                serverWithSnmpPtr->processHeartbeat(key);            }            break;            default:            break;        };        displayServer(*serverPtr);        return true;    }    else    {        return false;    }}/** * Check all servers to see if they are still actively heartbeating */voidHBServerContainer::doHouseKeeping(){    Data serverId;    Sptr < Server > serverPtr;    cpLog( LOG_DEBUG_HB, "");    cpLog( LOG_DEBUG_HB, "****** do HouseKeeping *****");    ReadLockHelper tableHelper(tableLock);    if ( !serverList.empty() )    {        Sptr < ServerWithSnmp > serverWithSnmpPtr;        for ( TableIter i = serverList.begin(); i != serverList.end(); ++i)        {            serverId = i->first;            serverPtr = i->second;            //cpLog( LOG_DEBUG, "%s", serverId.logData() );            if ( serverPtr->getStatus() != Inactive )                cpLog( LOG_DEBUG_HB, "%s", serverId.logData() );            switch (serverPtr->getType() )            {                case SERVER_JS:                case SERVER_FS:                case SERVER_MS:                case SERVER_RS:                case SERVER_POS:                case SERVER_CDR:                {                    serverWithSnmpPtr.dynamicCast(serverPtr);                    serverWithSnmpPtr->doHouseKeeping(serverId);                }                break;                default:                break;            }        }    }    else    {        cpLog( LOG_DEBUG_HB, "nothing in server container");    }    cpLog( LOG_DEBUG_HB, "****** finished HouseKeeping *****");    cpLog( LOG_DEBUG_HB, "");}/** * A change was made to the RS's in the provisioning server.  * Delete the stored RS server list and recreate it with the new data. */voidHBServerContainer::updateRSsFromPS(){    {        WriteLockHelper rsHelper(rsLock);        /// delete all RSs in Server Container        for (vector < Data > ::iterator i = itsRSList.begin();                i < itsRSList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete RS: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear RSList        itsRSList.clear();    }    /// reconfigure RSs from scratch    configRedirectServers();    displayLists();}/** * A change was made to the MS's in the provisioning server.  * Delete the stored MS server list and recreate it with the new data. */voidHBServerContainer::updateMSsFromPS(){    {        WriteLockHelper msHelper(msLock);        /// delete all MSs in Server Container        for (vector < Data > ::iterator i = itsMSList.begin();                i < itsMSList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete MS: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear MSList        itsMSList.clear();    }    /// reconfigure MSs from scratch    configMarshalServers();    displayLists();}/** * A change was made to the FS's in the provisioning server.  * Delete the stored FS server list and recreate it with the new data. */voidHBServerContainer::updateFSsFromPS(){    {        WriteLockHelper fsHelper(fsLock);        /// delete all FSs in Server Container        for (vector < Data > ::iterator i = itsFSList.begin();                i < itsFSList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete FS: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear FSList        itsFSList.clear();    }    /// reconfigure FSs from scratch    configFeatureServers();    displayLists();}/** * A change was made to the JS's in the provisioning server.  * Delete the stored JS server list and recreate it with the new data. */voidHBServerContainer::updateJSsFromPS(){    {        WriteLockHelper jsHelper(jsLock);        /// delete all JSs in Server Container        for (vector < Data > ::iterator i = itsJSList.begin();                i < itsJSList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete JS: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear JSList        itsJSList.clear();    }    /// reconfigure JSs from scratch    configJtapiServers();    displayLists();}/** * A change was made to the POS's in the provisioning server.  * Delete the stored POS server list and recreate it with the new data. */voidHBServerContainer::updatePOSsFromPS(){    {        WriteLockHelper posHelper(posLock);        for (vector < Data > ::iterator i = itsPOSList.begin();                i < itsPOSList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete POS: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear POSList        itsPOSList.clear();    }    /// reconfigure POSs from scratch    configPolicyServers();    displayLists();}/** * A change was made to the CDR's in the provisioning server.  * Delete the stored CDR server list and recreate it with the new data. */voidHBServerContainer::updateCDRsFromPS(){    {        WriteLockHelper cdrHelper(cdrLock);        for (vector < Data > ::iterator i = itsCDRList.begin();                i < itsCDRList.end(); ++i)        {            cpLog( LOG_DEBUG, "delete CDR: %s", i->logData() );            Data server(*i);            /// delete from Server Container            remove(server);        }        /// clear CDRList        itsPOSList.clear();    }    /// reconfigure CDRs from scratch    configCdrServers();    displayLists();}/** * A change was made to the Global Config Parms Data on the provisioning server.  * Delete the stored parameter(s) and replace it with new values. */voidHBServerContainer::updateHBParmsFromPS(){    cpLog( LOG_DEBUG, "updating Heartbeat Parms in RSServerContainer");    ProvisionInterface& pif = ProvisionInterface::instance();    try    {        WriteLockHelper tableHelper(tableLock);        /// get pointer to global config object        VGlobalConfigData globalConfigData;        pif.getConfigData(globalConfigData);        int newValue = globalConfigData.getMaxMissedHB();        int oldValue = serverList.begin()->second->getMaxMissedHB();        cpLog( LOG_DEBUG, "maxMissedHB old:%d new: %d", oldValue, newValue );        if (( !serverList.empty() ) && ( oldValue != newValue ))        {            Data serverId;            Sptr < Server > serverPtr;            for ( TableIter i = serverList.begin(); i != serverList.end(); ++i)            {                serverId = i->first;                serverPtr = i->second;                serverPtr->setMaxMissedHB( newValue );            }        }    }    catch (VIoException& e)    {        cpLog(LOG_ALERT, "Failed to get data from Provisioning Server, reason %s", e.getDescription().c_str());    }    catch (VException& e)    {        cpLog(LOG_ALERT, "Failed to connect to Provisioning Server, reason %s", e.getDescription().c_str());    }}/** * Display lists of server by type. */voidHBServerContainer::displayLists(){    ReadLockHelper jsHelper(jsLock);    ReadLockHelper fsHelper(fsLock);    ReadLockHelper msHelper(msLock);    ReadLockHelper rsHelper(rsLock);    ReadLockHelper posHelper(posLock);    ReadLockHelper cdrHelper(cdrLock);    cpLog( LOG_DEBUG, "----------- Jtapi Servers ---------");    for (vector < Data > ::iterator i = itsJSList.begin();            i < itsJSList.end(); ++i)    {        cpLog( LOG_DEBUG, "JS: %s", i->logData() );    }    cpLog( LOG_DEBUG, "----------- Feature Servers ---------");    for (vector < Data > ::iterator i = itsFSList.begin();            i < itsFSList.end(); ++i)    {        cpLog( LOG_DEBUG, "FS: %s", i->logData() );    }    cpLog( LOG_DEBUG, "----------- Marshal Servers ---------");    for (vector < Data > ::iterator i = itsMSList.begin();            i < itsMSList.end(); ++i)    {        cpLog( LOG_DEBUG, "MS: %s", i->logData() );    }    cpLog( LOG_DEBUG, "----------- Redirect Servers --------");    for (vector < Data > ::iterator i = itsRSList.begin();            i < itsRSList.end(); ++i)    {        cpLog( LOG_DEBUG, "RS: %s", i->logData() );    }    cpLog( LOG_DEBUG, "----------- Policy Servers --------");    for (vector < Data > ::iterator i = itsPOSList.begin();            i < itsPOSList.end(); ++i)    {        cpLog( LOG_DEBUG, "POS: %s", i->logData() );    }    cpLog( LOG_DEBUG, "----------- Cdr Servers --------");    for (vector < Data > ::iterator i = itsCDRList.begin();            i < itsCDRList.end(); ++i)    {        cpLog( LOG_DEBUG, "CDR: %s", i->logData() );    }}/** * The Provisioning Server is notifying us of a change in RS's. */voidupdateHBRedirectServers(const string& data, const string& fileName, bool){    /// update RS list    HBServerContainer::instance().updateRSsFromPS();}/** * The Provisioning Server is notifying us of a change in MS's. */voidupdateHBMarshalServers(const string& data, const string& fileName, bool){    /// update MS list    HBServerContainer::instance().updateMSsFromPS();}/** * The Provisioning Server is notifying us of a change in FS's. */voidupdateHBFeatureServers(const string& data, const string& fileName, bool){    /// update FS list    HBServerContainer::instance().updateFSsFromPS();}/** * The Provisioning Server is notifying us of a change in JS's. */voidupdateHBJtapiServers(const string& data, const string& fileName, bool){    /// update JS list    HBServerContainer::instance().updateJSsFromPS();}/** * The Provisioning Server is notifying us of a change in POS's. */voidupdateHBPolicyServers(const string& data, const string& fileName, bool){    /// update POS list    HBServerContainer::instance().updatePOSsFromPS();}/** * The Provisioning Server is notifying us of a change in CDR's. */voidupdateHBCdrServers(const string& data, const string& fileName, bool){    /// update CDR list    HBServerContainer::instance().updateCDRsFromPS();}/** * The Provisioning Server is notifying us of a change in Heartbeat Parms. */voidupdateHBHeartbeatParms(const string& data, const string& fileName, bool){    /// update Heartbeat Parms    HBServerContainer::instance().updateHBParmsFromPS();}// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -