// PD_TRACE_DECLARE_FUNCTION ( SDB__SDB_DMSCB_DISPATCHPAGECLEANSU, "_SDB_DMSCB::dispatchPageCleanSU" ) _dmsStorageUnit *_SDB_DMSCB::dispatchPageCleanSU ( dmsStorageUnitID *suID ) { PD_TRACE_ENTRY ( SDB__SDB_DMSCB_DISPATCHPAGECLEANSU ) ; *suID = DMS_INVALID_SUID ; pmdOptionsCB *optCB = pmdGetOptionCB() ; _dmsStorageUnit *su = NULL ; SDB_ASSERT ( suID, "suID can't be NULL" ) ; _pageCleanHistory firstSU ; ossTickDelta deltaTime ; ossScopedLock _lock(&_mutex, EXCLUSIVE) ; if ( _pageCleanHistoryList.size() == 0 ) goto done ; firstSU = _pageCleanHistoryList.front() ; deltaTime = pmdGetKRCB()->getCurTime () - firstSU.first ; if ( deltaTime.toUINT64() / 1000 > (UINT64)optCB->getPageCleanInterval() ) { PD_TRACE1 ( SDB__SDB_DMSCB_DISPATCHPAGECLEANSU, PD_PACK_ULONG ( firstSU.second ) ) ; if ( NULL != _cscbVec[firstSU.second] ) { *suID = firstSU.second ; _latchVec[*suID]->lock_r() ; su = _cscbVec[*suID]->_su ; } _pageCleanHistorySet.erase ( firstSU.second ) ; _pageCleanHistoryList.pop_front () ; } done : PD_TRACE_EXIT ( SDB__SDB_DMSCB_DISPATCHPAGECLEANSU ) ; return su ; }
// PD_TRACE_DECLARE_FUNCTION ( SDB_CATALOGCB_UPDATEROUTEID, "sdbCatalogueCB::updateRouteID" ) void sdbCatalogueCB::onRegistered ( const MsgRouteID &nodeID ) { INT32 rc = SDB_OK ; PD_TRACE_ENTRY ( SDB_CATALOGCB_UPDATEROUTEID ) ; MsgRouteID id ; id.value = nodeID.value ; id.columns.serviceID = MSG_ROUTE_CAT_SERVICE ; PD_TRACE1 ( SDB_CATALOGCB_UPDATEROUTEID, PD_PACK_ULONG ( id.value ) ) ; rc = _pNetWork->updateRoute( _routeID, id ) ; if ( rc != SDB_OK ) { PD_LOG ( PDERROR, "Failed to update route(old=%d,new=%d host=%s, " "service=%s, rc=%d)", _routeID.columns.nodeID, id.columns.nodeID, _strHostName.c_str(), _strCatServiceName.c_str(), rc ); } _pNetWork->setLocalID( id ) ; _routeID.value = id.value ; PD_TRACE_EXIT ( SDB_CATALOGCB_UPDATEROUTEID ) ; }
// PD_TRACE_DECLARE_FUNCTION ( SDB_CATALOGCB_INIT, "sdbCatalogueCB::init" ) INT32 sdbCatalogueCB::init() { INT32 rc = SDB_OK ; PD_TRACE_ENTRY ( SDB_CATALOGCB_INIT ) ; _routeID.columns.serviceID = MSG_ROUTE_CAT_SERVICE ; _strHostName = pmdGetKRCB()->getHostName() ; _strCatServiceName = pmdGetOptionCB()->catService() ; IControlBlock *pClsCB = pmdGetKRCB()->getCBByType( SDB_CB_CLS ) ; IEventHolder *pHolder = NULL ; if ( pClsCB && pClsCB->queryInterface( SDB_IF_EVT_HOLDER ) ) { pHolder = (IEventHolder*)pClsCB->queryInterface( SDB_IF_EVT_HOLDER ) ; pHolder->regEventHandler( this ) ; } _pNetWork = SDB_OSS_NEW _netRouteAgent( &_catMainCtrl ) ; if ( !_pNetWork ) { PD_LOG ( PDERROR, "Failed to allocate memory for netRouteAgent" ) ; rc = SDB_OOM ; goto error ; } rc = _catMainCtrl.init() ; PD_RC_CHECK( rc, PDERROR, "Init main controller failed, rc: %d", rc ) ; rc = _catlogueMgr.init() ; PD_RC_CHECK( rc, PDERROR, "Init catlogue manager failed, rc: %d", rc ) ; rc = _catNodeMgr.init() ; PD_RC_CHECK( rc, PDERROR, "Init cat node manager failed, rc: %d", rc ) ; PD_TRACE1 ( SDB_CATALOGCB_INIT, PD_PACK_ULONG ( _routeID.value ) ) ; _pNetWork->setLocalID( _routeID ); rc = _pNetWork->updateRoute( _routeID, _strHostName.c_str(), _strCatServiceName.c_str() ); if ( rc != SDB_OK ) { PD_LOG ( PDERROR, "Failed to update route(routeID=%lld, host=%s, " "service=%s, rc=%d)", _routeID.value, _strHostName.c_str(), _strCatServiceName.c_str(), rc); goto error ; } rc = _pNetWork->listen( _routeID ); if ( rc != SDB_OK ) { PD_LOG ( PDERROR, "Failed to open listen-port(host=%s, service=%s, " "rc=%d)", _strHostName.c_str(), _strCatServiceName.c_str(), rc ); goto error ; } done: PD_TRACE_EXITRC ( SDB_CATALOGCB_INIT, rc ) ; return rc ; error: goto done ; }