INT32 _rtnContextMain::_processSubContext ( rtnSubContext * subContext, BOOLEAN & skipData ) { INT32 rc = SDB_OK ; if ( !_hasProcessor || 0 == subContext->recordNum() ) { goto done ; } if ( subContext->getProcessType() > (INT64)RTN_CTX_PROCESSOR_BEGIN && subContext->getProcessType() < (INT64)RTN_CTX_PROCESSOR_END ) { rc = _processData( subContext->getProcessType(), subContext->getDataID(), subContext->front(), subContext->remainLength(), subContext->recordNum() ) ; PD_RC_CHECK( rc, PDERROR, "Failed to process data, rc: %d", rc ) ; skipData = TRUE ; } else if ( needCheckData() ) { rc = _processData( RTN_CTX_PROCESSOR_NONE, subContext->getDataID(), subContext->front(), subContext->remainLength(), subContext->recordNum() ) ; PD_RC_CHECK( rc, PDERROR, "Failed to check data, rc: %d", rc ) ; } if ( skipData ) { rc = subContext->popAll() ; PD_RC_CHECK( rc, PDERROR, "Failed to skip context, rc: %d", rc ) ; } done : return rc ; error : goto done ; }
int ixmBucketManager::findIndex(BSONObj &record, dmsRecordID &recordID) { int rc = EDB_OK; unsigned int hashNum = 0; unsigned int random = 0; ixmEleHash eleHash; rc = _processData(record, recordID, hashNum, eleHash, random); PD_RC_CHECK(rc, PDERROR, "Failed to process data, rc = %d", rc); rc = _bucket[random]->findIndex ( hashNum, eleHash); PD_RC_CHECK(rc, PDERROR, "Failed to find index, rc = %d", rc); recordID = eleHash.recordID; done: return rc; error: goto done; }
int ixmBucketManager::isIDExist(BSONObj &record) { int rc = EDB_OK; unsigned int hashNum = 0; unsigned int random = 0; ixmEleHash eleHash; dmsRecordID recordID; rc = _processData(record, recordID, hashNum, eleHash, random); if(rc) { PD_LOG(PDERROR, "Failed to process data, rc = %d", rc); goto error ; } rc = _bucket[random]->isIDExist(hashNum, eleHash); if(rc) { PD_LOG(PDERROR, "Failed to create index, rc = %d", rc); goto error; } done: return rc; error: goto done; }