コード例 #1
0
   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 ;
   }
コード例 #2
0
ファイル: ixmBucket.cpp プロジェクト: amaliujia/StoneDB
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;
}
コード例 #3
0
ファイル: ixmBucket.cpp プロジェクト: amaliujia/StoneDB
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;
}