Return TypeFunction nameArguments
hzEcodehdbObjRepos::InitStart(const hdbClass*,const hzString&,const hzString&,hdbReposMode,)

Declared in file: hzDatabase.h
Defined in file : hdbObjRepos.cpp

Function Logic:

0:START 1:!this 2:hzexit 3:_hdb_ck_initstate 4:!pNative 5:Return hzerr(E_ARGUMENT,No data class supplied) 6:!pNative->IsInit() 7:Return hzerr(E_NOINIT,Supplied class (%s) is not initialized,pNative->txtName()) 8:pNative->HasBinaries() 9:eMode==HDB_REPOS_CACHE 10:hzwarn eMode 11:!name 12:Return hzerr(E_ARGUMENT,No name supplied) 13:m_pADP->GetObjRepos(name) 14:Return hzerr(E_DUPLICATE,Repository %s already exists,*name) 15:!workdir 16:Return hzerr(E_ARGUMENT,No working directory supplied for object cache %s,*name) 17:AssertDir rc 18:rc!=E_OK 19:Return hzerr(rc,Cannot assert working directory %s for object cache %s\n,*workdir,*name) 20:m_pClass m_Name m_Workdir 21:eMode==HDB_REPOS_HARD||eMode==HDB_REPOS_DUAL 22:pNative->HasBinaries() 23:m_nameBR_Datum m_pBR_Datum hdbBinRepos::Init rc 24:rc!=E_OK 25:Return hzerr(rc,Failed to initialize binary data store: Repos %s, Datum BR (%s), workdir %s\n,*m_Name,*m_nameBR_Datum,*m_Workdir) 26:!m_pBR_Delta 27:m_nameBR_Delta m_pBR_Delta hdbBinRepos::Init rc 28:rc!=E_OK 29:Return hzerr(rc,Failed to initialize binary data store %s (%s)\n,*m_nameBR_Delta,*m_Workdir) 30:eMode==HDB_REPOS_CACHE||eMode==HDB_REPOS_DUAL 31:m_pathCD m_pathCD m_pathCD m_pathCD m_pMain hdbObjRepos::_cache::Init 32:m_eReposInit hdbADP::RegisterObjRepos 33:Return E_OK

Function body:

hzEcode hdbObjRepos::InitStart (const hdbClass* pNative, const hzString& name, const hzString& workdir, hdbReposMode eMode)
{
   _hzfunc("hdbObjRepos::InitStart") ;
   hzEcode             rc ;
   if (!this)
       hzexit(E_CORRUPT, "No hdbObjRepos instance") ;
   _hdb_ck_initstate(name, m_eReposInit, HDB_CLASS_INIT_NONE) ;
   if (!pNative)
       return hzerr(E_ARGUMENT, "No data class supplied") ;
   if (!pNative->IsInit())
       return hzerr(E_NOINIT, "Supplied class (%s) is not initialized", pNative->txtName()) ;
   if (pNative->HasBinaries())
   {
       if (eMode == HDB_REPOS_CACHE)
       {
           hzwarn(E_TYPE, "Ignoring CACHE mode, using DUAL") ;
           eMode = HDB_REPOS_DUAL ;
       }
   }
   if (!name)
       return hzerr(E_ARGUMENT, "No name supplied") ;
   if (m_pADP->GetObjRepos(name))
       return hzerr(E_DUPLICATE, "Repository %s already exists", *name) ;
   if (!workdir)
       return hzerr(E_ARGUMENT, "No working directory supplied for object cache %s", *name) ;
   rc = AssertDir(*workdir, 0777);
   if (rc != E_OK)
       return hzerr(rc, "Cannot assert working directory %s for object cache %s\n", *workdir, *name) ;
   m_pClass = pNative ;
   m_Name = name ;
   m_Workdir = workdir ;
   if (eMode == HDB_REPOS_HARD || eMode == HDB_REPOS_DUAL)
   {
       if (pNative->HasBinaries())
       {
           m_nameBR_Datum = m_Name + "_br_datum" ;
           m_pBR_Datum = new hdbBinRepos(*m_pADP) ;
           rc = m_pBR_Datum->Init(m_nameBR_Datum, m_Workdir) ;
           if (rc != E_OK)
               return hzerr(rc, "Failed to initialize binary data store: Repos %s, Datum BR (%s), workdir %s\n", *m_Name, *m_nameBR_Datum, *m_Workdir) ;
       }
       if (!m_pBR_Delta)
       {
           m_nameBR_Delta = m_Name + "_br_delta" ;
           m_pBR_Delta = new hdbBinRepos(*m_pADP) ;
           rc = m_pBR_Delta->Init(m_nameBR_Delta, m_Workdir) ;
           if (rc != E_OK)
               return hzerr(rc, "Failed to initialize binary data store %s (%s)\n", *m_nameBR_Delta, *m_Workdir) ;
       }
   }
   if (eMode == HDB_REPOS_CACHE || eMode == HDB_REPOS_DUAL)
   {
       m_pathCD = m_Workdir ;
       m_pathCD += "/" ;
       m_pathCD += m_Name ;
       m_pathCD += ".cache" ;
       m_pMain = new _cache() ;
       m_pMain->Init(m_pClass) ;
   }
   m_eReposInit = HDB_REPOS_INIT_PROG ;
   m_pADP->RegisterObjRepos(this) ;
   return E_OK ;
}