INT32 _rtnLobWindow::init( INT32 pageSize ) { INT32 rc = SDB_OK ; SDB_ASSERT( DMS_DO_NOT_CREATE_LOB < pageSize, "invalid arguments" ) ; SDB_ASSERT( _writeData.empty(), "impossible" ) ; if ( !ossIsPowerOf2( pageSize, &_logarithmic ) ) { PD_LOG( PDERROR, "invalid page size:%d, it should be a power of 2", pageSize ) ; rc = SDB_INVALIDARG ; goto error ; } _pool = ( CHAR * )SDB_OSS_MALLOC( pageSize ) ; if ( NULL == _pool ) { PD_LOG( PDERROR, "failed to allocate mem." ) ; rc = SDB_OOM ; goto error ; } _pageSize = pageSize ; done: return rc ; error: goto done ; }
// PD_TRACE_DECLARE_FUNCTION ( SDB__DPSRPCMGR_INIT, "_dpsReplicaLogMgr::init" ) INT32 _dpsReplicaLogMgr::init ( const CHAR *path, UINT32 pageNum ) { INT32 rc = SDB_OK; PD_TRACE_ENTRY ( SDB__DPSRPCMGR_INIT ); SDB_ASSERT ( path, "path can't be NULL" ) ; _transCB = sdbGetTransCB() ; _pages = SDB_OSS_NEW _dpsLogPage[pageNum]; if ( NULL == _pages ) { rc = SDB_OOM; PD_LOG (PDERROR, "new _dpsLogPage[pageNum] failed!" ); goto error; } for ( UINT32 i = 0; i < pageNum; i++ ) { _pages[i].setNumber( i ); } _totalSize = DPS_DEFAULT_PAGE_SIZE * pageNum; _idleSize.init( _totalSize ); _pageNum = pageNum ; if ( ossIsPowerOf2( pageNum ) ) { DPS_SUB_BIT = ~pageNum ; } rc = _logger.init( path ); if ( rc ) { PD_LOG ( PDERROR, "Failed to initial log files, rc = %d", rc ) ; goto error; } if ( !_logger.getStartLSN( FALSE ).invalid() ) { rc = _restore () ; if ( SDB_OK == rc ) { PD_LOG ( PDEVENT, "Dps restore succeed, file lsn[%lld], buff " "lsn[%lld], current lsn[%lld], expect lsn[%lld]", _logger.getStartLSN().offset, _getStartLsn().offset, _currentLsn.offset, _lsn.offset ) ; } else { PD_LOG ( PDERROR, "Dps restore failed[rc:%d]", rc ) ; goto error ; } } done: PD_TRACE_EXITRC ( SDB__DPSRPCMGR_INIT, rc ); return rc; error: goto done; }