Exemple #1
0
INT32 _msgBuffer::realloc( CHAR *&ptr, const UINT32 size )
{
   INT32 rc = SDB_OK ;
   if ( 0 == size )
   {
      rc = SDB_INVALIDARG ;
      goto error ;
   }

   if ( size <= _capacity )
   {
      goto done ;
   }

   ptr = ( CHAR * )SDB_OSS_REALLOC( ptr, size ) ;
   if ( NULL == ptr )
   {
      rc = SDB_OOM ;
      goto error ;
   }

   _capacity = size ;
   ossMemset( _data + _size, 0, _capacity - _size ) ;

done:
   return rc ;
error:
   goto done ;
}
   // PD_TRACE_DECLARE_FUNCTION ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT, "dmsStorageLoadOp::_allocateExtent" )
   INT32 dmsStorageLoadOp::_allocateExtent ( INT32 requestSize )
   {
      INT32 rc = SDB_OK ;
      PD_TRACE_ENTRY ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT );
      if ( requestSize < DMS_MIN_EXTENT_SZ(_pageSize) )
      {
         requestSize = DMS_MIN_EXTENT_SZ(_pageSize) ;
      }
      else if ( requestSize > DMS_MAX_EXTENT_SZ )
      {
         requestSize = DMS_MAX_EXTENT_SZ ;
      }
      else
      {
         requestSize = ossRoundUpToMultipleX ( requestSize, _pageSize ) ;
      }

      if ( !_pCurrentExtent )
      {
         _pCurrentExtent = (CHAR*)SDB_OSS_MALLOC ( requestSize ) ;
         if ( !_pCurrentExtent )
         {
            PD_LOG ( PDERROR, "Unable to allocate %d bytes memory",
                     requestSize ) ;
            rc = SDB_OOM ;
            goto error ;
         }
         _currentExtentSize = requestSize ;
         _initExtentHeader ( (dmsExtent*)_pCurrentExtent,
                             _currentExtentSize/_pageSize ) ;
      }
      else
      {
         if ( requestSize > _currentExtentSize )
         {
            CHAR *pOldPtr = _pCurrentExtent ;
            _pCurrentExtent = (CHAR*)SDB_OSS_REALLOC ( _pCurrentExtent,
                                                       requestSize ) ;
            if ( !_pCurrentExtent )
            {
               PD_LOG ( PDERROR, "Unable to realloc %d bytes memory",
                        requestSize ) ;
               _pCurrentExtent = pOldPtr ;
               rc = SDB_OOM ;
               goto error ;
            }
            _currentExtentSize = requestSize ;
         }
         _initExtentHeader ( (dmsExtent*)_pCurrentExtent,
                             _currentExtentSize/_pageSize ) ;
      }

   done :
      PD_TRACE_EXITRC ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT, rc );
      return rc ;
   error :
      goto done ;
   }
Exemple #3
0
   INT32 _pmdEDUCB::reallocBuff( INT32 len, CHAR **ppBuff, INT32 &buffLen )
   {
      INT32 rc = SDB_OK ;
      CHAR *pOld = *ppBuff ;
      INT32 oldLen = buffLen ;

      ALLOC_MAP_IT itAlloc = _allocMap.find( *ppBuff ) ;
      if ( itAlloc != _allocMap.end() )
      {
         buffLen = itAlloc->second ;
         oldLen = buffLen ;
      }
      else if ( *ppBuff != NULL || buffLen != 0 )
      {
         PD_LOG( PDERROR, "EDU[%s] realloc input buffer error",
                 toString().c_str() ) ;
         rc = SDB_SYS ;
         goto error ;
      }

      if ( buffLen >= len )
      {
         goto done ;
      }
      len = ossRoundUpToMultipleX( len, EDU_MEM_ALIGMENT_SIZE ) ;
      *ppBuff = ( CHAR* )SDB_OSS_REALLOC( *ppBuff, len ) ;
      if ( !*ppBuff )
      {
         PD_LOG( PDERROR, "Failed to realloc memory, size: %d", len ) ;
         goto error ;
      }

      buffLen = len ;

      _totalMemSize += ( len - oldLen ) ;

      _allocMap[ *ppBuff ] = buffLen ;

   done:
      return rc ;
   error:
      if ( pOld )
      {
         releaseBuff( pOld ) ;
         *ppBuff = NULL ;
         buffLen = 0 ;
      }
      goto done ;
   }
Exemple #4
0
INT32 migExport::_reallocBuffer( CHAR **ppBuffer, INT32 size, INT32 newSize )
{
   INT32 rc = SDB_OK ;
   CHAR *pTemp = NULL ;
   if ( newSize > size )
   {
      pTemp = (CHAR *)SDB_OSS_REALLOC( *ppBuffer, newSize ) ;
      if ( !pTemp )
      {
         rc = SDB_OOM ;
         PD_LOG ( PDERROR, "out of memory, rc=%d", rc ) ;
         goto error ;
      }
      *ppBuffer = pTemp ;
   }
done:
   return rc ;
error:
   goto done ;
}
Exemple #5
0
 INT32 _spdFMP::_extendReadBuf()
 {
    INT32 rc = SDB_OK ;
    CHAR *pOrgBuff = _readBuf ;
    _readBuf = ( CHAR * )SDB_OSS_REALLOC( _readBuf,
                                          _readBufSize + SPD_READ_PAGE ) ;
    if ( NULL == _readBuf )
    {
       PD_LOG( PDERROR, "failed to realloc %d bytes mem.",
               _readBufSize + SPD_READ_PAGE ) ;
       _readBuf = pOrgBuff ;
       rc = SDB_OOM ;
       goto error ;
    }
    _readBufSize += SPD_READ_PAGE ;
 done:
    return rc ;
 error:
    goto done ;
 }
 INT32 _checkBuffer ( CHAR **ppBuff, INT64 *pBuffLen, INT64 length )
 {
    INT32 rc = SDB_OK ;
    if ( length > *pBuffLen )
    {
       CHAR *pOld = *ppBuff ;
       INT32 newSize = length + 1 ;
       *ppBuff = (CHAR*)SDB_OSS_REALLOC ( *ppBuff, sizeof(CHAR)*(newSize)) ;
       if ( !*ppBuff )
       {
          rc = SDB_OOM ;
          *ppBuff = pOld ;
          goto error ;
       }
       *pBuffLen = newSize ;
    }
 done :
    return rc ;
 error :
    goto done ;
 }
Exemple #7
0
      INT32 resize( UINT32 size )
      {
         INT32 rc = SDB_OK ;
         if ( size <= _bufSize ||
              size <= _eleSize )
         {
            goto done ;
         }

         else if ( UTIL_ARRAY_DEFAULT_SIZE == _bufSize )
         {
            _dynamicBuf = ( T * )SDB_OSS_MALLOC( sizeof( T ) * size ) ;
            if ( NULL == _dynamicBuf )
            {
               rc = SDB_OOM ;
               goto error ;
            }
            _bufSize = size ;
            ossMemcpy( _dynamicBuf, _staticBuf, sizeof( T ) * UTIL_ARRAY_DEFAULT_SIZE ) ;
            _eles = _dynamicBuf ;
         }
         else
         {
            T *tmp = _dynamicBuf ;
            _dynamicBuf = ( T * )SDB_OSS_REALLOC( _dynamicBuf,
                                                  sizeof( T ) * size ) ;
            if ( NULL == _dynamicBuf )
            {
               _dynamicBuf = tmp ;
               rc = SDB_OOM ;
               goto error ;
            }
            _bufSize = size ;
            _eles = _dynamicBuf ;
         } 
      done:
         return rc ;
      error:
         goto done ;
      }
Exemple #8
0
 OSS_INLINE INT32 append( const T &t )
 {
    INT32 rc = SDB_OK ;
    if ( _eleSize < _bufSize )
    {
       _eles[_eleSize++] = t ;
    }
    else if ( UTIL_ARRAY_DEFAULT_SIZE == _bufSize )
    {
       _dynamicBuf = ( T * )SDB_OSS_MALLOC( sizeof( T ) * ( _bufSize * 2 ) ) ;
       if ( NULL == _dynamicBuf )
       {
          rc = SDB_OOM ;
          goto error ;
       }
       _bufSize *= 2 ;
       ossMemcpy( _dynamicBuf, _staticBuf, sizeof( T ) * UTIL_ARRAY_DEFAULT_SIZE ) ;
       _eles = _dynamicBuf ;
       _eles[_eleSize++] = t ;
    }
    else
    {
       T *tmp = _dynamicBuf ;
       _dynamicBuf = ( T * )SDB_OSS_REALLOC( _dynamicBuf,
                                             sizeof( T ) * _bufSize * 2 ) ;
       if ( NULL == _dynamicBuf )
       {
          _dynamicBuf = tmp ;
          rc = SDB_OOM ;
          goto error ;
       }
       _bufSize *= 2 ;
       _eles = _dynamicBuf ;
       _eles[_eleSize++] = t ;
    }
 done:
    return rc ;
 error:
    goto done ;
 }