Beispiel #1
0
INT32 _ossModuleHandle::resolveAddress (
                          const CHAR *pFunctionName,
                          OSS_MODULE_PFUNCTION *pFunctionAddress )
{
   INT32 rc = SDB_OK ;
   PD_TRACE_ENTRY ( SDB_OSSMODULEHANDLE_RESOLVEADDRESS ) ;
   if ( !pFunctionName || !pFunctionAddress )
   {
      rc = SDB_INVALIDARG ;
      goto error ;
   }
   PD_TRACE2 ( SDB_OSSMODULEHANDLE_RESOLVEADDRESS,
               PD_PACK_STRING ( _moduleName ),
               PD_PACK_STRING ( pFunctionName )) ;
   SDB_ASSERT ( _isInitialized,
                "handle must be initialized before resolve address" ) ;
#if defined (_LINUX)
   *pFunctionAddress = (OSS_MODULE_PFUNCTION)dlsym ( _moduleHandle,
                                                     (CHAR*)pFunctionName ) ;
   if ( !*pFunctionAddress )
   {
      PD_LOG ( PDERROR, "Failed to find function %s: %s",
               pFunctionName, dlerror () ) ;
      rc = SDB_SYS ;
      goto error ;
   }
#elif defined (_WINDOWS)
   *pFunctionAddress = (OSS_MODULE_PFUNCTION)GetProcAddress (
         _moduleHandle,
         (LPCSTR)pFunctionName ) ;
   if ( !*pFunctionAddress )
   {
      rc = ossGetLastError () ;
      PD_LOG ( PDERROR, "Failed to find function %s: %d",
               pFunctionName, rc ) ;
      OSSMODULEHANDLE_ERR(rc) ;
      goto error ;
   }
#endif
done :
   PD_TRACE_EXITRC ( SDB_OSSMODULEHANDLE_RESOLVEADDRESS, rc ) ;
   return rc ;
error :
   goto done ;
}
Beispiel #2
0
 // PD_TRACE_DECLARE_FUNCTION ( SDB_CATALOGCB_INSERTGROUPID, "sdbCatalogueCB::insertGroupID" )
 void sdbCatalogueCB::insertGroupID( UINT32 grpID, BOOLEAN isActive )
 {
    PD_TRACE_ENTRY ( SDB_CATALOGCB_INSERTGROUPID ) ;
    PD_TRACE2 ( SDB_CATALOGCB_INSERTGROUPID,
                PD_PACK_UINT ( grpID ),
                PD_PACK_UINT ( isActive ) ) ;
    if ( grpID >= CAT_DATA_GROUP_ID_BEGIN )
    {
       ossScopedLock _lock(&_GrpIDMutex, EXCLUSIVE) ;
       if ( isActive )
       {
          _grpIdMap.insert( GRP_ID_MAP::value_type(grpID, grpID) );
       }
       else
       {
          _deactiveGrpIdMap.insert( GRP_ID_MAP::value_type(grpID, grpID) );
       }
       _iCurGrpId = _iCurGrpId > grpID ? _iCurGrpId : ++grpID ;
    }
    PD_TRACE_EXIT ( SDB_CATALOGCB_INSERTGROUPID ) ;
 }