INT32 _CoordCB::init () { INT32 rc = SDB_OK ; CoordGroupInfo *pGroupInfo = NULL ; UINT32 catGID = CATALOG_GROUPID ; UINT16 catNID = SYS_NODE_ID_BEGIN + CLS_REPLSET_MAX_NODE_SIZE ; MsgRouteID id ; pmdOptionsCB *optCB = pmdGetOptionCB() ; vector< _pmdAddrPair > catAddrs = optCB->catAddrs() ; _pNetWork = SDB_OSS_NEW _netRouteAgent( &_multiRouteAgent ) ; if ( !_pNetWork ) { PD_LOG( PDERROR, "Failed to alloc memory for net agent" ) ; rc = SDB_OOM ; goto error ; } _multiRouteAgent.setNetWork( _pNetWork ) ; pGroupInfo = SDB_OSS_NEW CoordGroupInfo( CAT_CATALOG_GROUPID ) ; if ( !pGroupInfo ) { PD_LOG( PDERROR, "Failed to alloc memory for group info" ) ; rc = SDB_OOM ; goto error ; } _catGroupInfo = CoordGroupInfoPtr( pGroupInfo ) ; for ( UINT32 i = 0 ; i < catAddrs.size() ; ++i ) { if ( 0 == catAddrs[i]._host[ 0 ] ) { break ; } id.columns.groupID = catGID ; id.columns.nodeID = catNID++ ; id.columns.serviceID = MSG_ROUTE_CAT_SERVICE ; addCatNodeAddr( id, catAddrs[i]._host, catAddrs[i]._service ) ; } pmdGetStartup().ok( TRUE ) ; pmdGetKRCB()->setGroupName( COORD_GROUPNAME ) ; { MsgRouteID id ; id.value = MSG_INVALID_ROUTEID ; id.columns.groupID = COORD_GROUPID ; pmdSetNodeID( id ) ; } done: return rc ; error: goto done ; }
// 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 ; }