Set up both config file and resouce database for the application.

Return TypeFunction nameArguments
hzEcodehdsApp::InitResources(void)

Declared in file: hzDissemino.h
Defined in file : hdsCore.cpp

Function Logic:

0:START 1:unknown 2:Return hzerr(E_NOINIT,No data directory) 3:items items cfgs cfgs items items items items 4:unknown 5:valURL fdate items 6:unknown 7:items 8:unknown 9:m_pClass_Resource 10:unknown 11:rc 12:unknown 13:rc 14:unknown 15:rc 16:unknown 17:rc 18:unknown 19:rc 20:unknown 21:rc 22:unknown 23:rc 24:unknown 25:rc 26:unknown 27:rc 28:unknown 29:items 30:items 31:Return rc 32:m_pMbr_Resource_DATE m_pMbr_Resource_PATH m_pMbr_Resource_MD5 m_pMbr_Resource_XML m_pMbr_Resource_HTM m_pMbr_Resource_Zip 33:unknown 34:unknown 35:m_pRepos_Resource 36:unknown 37:m_pStore_Resource 38:items rc 39:unknown 40:items 41:Return rc 42:rc 43:unknown 44:items 45:Return rc 46:rc 47:unknown 48:items 49:Return rc 50:unknown 51:rc 52:unknown 53:rc 54:unknown 55:rc 56:unknown 57:rc 58:unknown 59:items 60:items 61:Return rc 62:items rc 63:unknown 64:items 65:unknown 66:rc 67:unknown 68:items 69:items items items 70:items 71:Return rc

Function body:

hzEcode hdsApp::InitResources (void)
{
   //  Category: Dissemino System Initialization
   //  
   //  Set up both config file and resouce database for the application.
   _hzfunc("hdsApp::InitResources") ;
   hzMD5       valMD5 ;        //  MD5 value for resource
   hzString    valURL ;        //  Resource URL/Path
   hzString    cfgs ;          //  Config delta file
   uint32_t    fdate ;         //  Epoch date of config file
   uint32_t    n ;             //  Resource counter
   hzEcode     rc = E_OK ;     //  Return code
   //  Define class for config files
   if (!m_Datadir)
       return hzerr(E_NOINIT, "No data directory") ;
   m_pLog->Log("COMMENCING RESOURCE INIT\n") ;
   threadLog("m_Configs Population %u\n", m_Configs.Count()) ;
   cfgs = m_Datadir ;
   cfgs += "/config.cache" ;
   m_Configs.DeltaSet(cfgs) ;
   m_Configs.DeltaOpen() ;
   threadLog("Opened file %s\n", *cfgs) ;
   threadLog("m_Configs Population %u\n", m_Configs.Count()) ;
   for (n = 0; n < m_Configs.Count() ; n++)
   {
       valURL = m_Configs.GetKey(n) ;
       fdate = m_Configs.GetObj(n) ;
       threadLog("Have config file of %010u [%s]\n", fdate, *valURL) ;
   }
   //  Define class for resources
   if (!m_pClass_Resource)
   {
       m_pLog->Log("Resource class definition\n") ;
       if (rc == E_OK) m_pClass_Resource = new hdbClass(m_ADP, HDB_CLASS_DESIG_CFG) ;
       if (rc == E_OK) rc = m_pClass_Resource->InitStart(s_cls_Resource) ;
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_DATE, "xdate",   HDB_MBR_POP_SINGLE_COMPULSORY) ;     //  Date of last update
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_PATH, "string",  HDB_MBR_POP_SINGLE_COMPULSORY) ;     //  Resource URL
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_MD5,  "hashMD5", HDB_MBR_POP_SINGLE_COMPULSORY) ;     //  MD5 of the resource config XML
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_XML,  "binary",  HDB_MBR_POP_SINGLE_COMPULSORY) ;     //  Resource config XML (as previously accepted)
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_HTM,  "binary",  HDB_MBR_POP_SINGLE_OPTIONAL) ;       //  Resource proforma HTML (as per the config XML)
       if (rc == E_OK) rc = m_pClass_Resource->InitMember(s_mbr_Resource_Zip,  "binary",  HDB_MBR_POP_SINGLE_OPTIONAL) ;       //  Zipped HTML if page is inactive
       if (rc == E_OK) rc = m_pClass_Resource->InitDone() ;
       if (rc == E_OK) rc = m_ADP.RegisterDataClass(m_pClass_Resource) ;
       if (rc == E_OK)
           m_pLog->Log("Registered resource class\n") ;
       else
       {
           m_pLog->Log("Could not register resource class\n") ;
           return rc ;
       }
       m_pMbr_Resource_DATE = m_pClass_Resource->GetMember(s_mbr_Resource_DATE) ;
       m_pMbr_Resource_PATH = m_pClass_Resource->GetMember(s_mbr_Resource_PATH) ;
       m_pMbr_Resource_MD5  = m_pClass_Resource->GetMember(s_mbr_Resource_MD5) ;
       m_pMbr_Resource_XML  = m_pClass_Resource->GetMember(s_mbr_Resource_XML) ;
       m_pMbr_Resource_HTM  = m_pClass_Resource->GetMember(s_mbr_Resource_HTM) ;
       m_pMbr_Resource_Zip  = m_pClass_Resource->GetMember(s_mbr_Resource_Zip) ;
   }
   //  Set up resources repository
   if (!m_pRepos_Resource)
   {
       if (rc == E_OK) m_pRepos_Resource = new hdbObjRepos(m_ADP) ;
       if (rc == E_OK) m_pStore_Resource = new hdbBinRepos(m_ADP) ;
       m_pLog->Log("Resource Repos %p, Binary %p\n", m_pRepos_Resource, m_pStore_Resource) ;
       rc = m_pStore_Resource->Init(s_bin_Resource, m_Datadir) ;
       if (rc != E_OK)
           { m_pLog->Log("Could not init resource binary datum repository\n") ; return rc ; }
       rc = m_pStore_Resource->Open() ;
       if (rc != E_OK)
           { m_pLog->Log("Could not open resource binary datum repository\n") ; return rc ; }
       rc = m_pStore_Resource->Integ(*m_pLog) ;
       if (rc != E_OK)
           { m_pLog->Log("Could not integrity check resource binary datum repository\n") ; return rc ; }
       if (rc == E_OK) rc = m_pRepos_Resource->InitStart(m_pClass_Resource, s_rep_Resource, m_Datadir, HDB_REPOS_CACHE) ;
       if (rc == E_OK) rc = m_pRepos_Resource->InitMbrIndex(s_mbr_Resource_PATH, false) ;
       if (rc == E_OK) rc = m_pRepos_Resource->InitDone() ;
       if (rc == E_OK) rc = m_pRepos_Resource->Open() ;
       if (rc == E_OK)
           m_pLog->Log("Initialized and opened resource repository\n") ;
       else
       {
           m_pLog->Log("Could not init/open resource repository\n") ;
           return rc ;
       }
   }
   //  Load the resources into the m_ResourceMD5 map
   m_pLog->Log("LISTING Resources\n") ;
   rc = m_objResource.Init(m_pClass_Resource) ;
   if (rc != E_OK)
       m_pLog->Log("Could not init resource object\n") ;
   for (n = 0; n < m_pRepos_Resource->Count() ; n++)
   {
       rc = m_pRepos_Resource->Fetch(m_objResource, n+1);
       if (rc != E_OK)
       {
           m_pLog->Log("Could not fetch resource item %d (err=%s)\n", n+1,Err2Txt(rc)) ;
           continue ;
       }
       m_objResource.GetMbrValue(valURL, m_pMbr_Resource_PATH) ;
       m_objResource.GetMbrValue(valMD5, m_pMbr_Resource_MD5) ;
       m_pLog->Log("Resource %u: %s %s\n", n+1,valMD5.Txt(), *valURL) ;
   }
   m_pLog->Log("END of Resources list\n") ;
   return rc ;
}