Return TypeFunction nameArguments
hzEcodehdbBinRepos::Init(const hzString&,const hzString&,)

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

Function Logic:

0:START 1:m_nInitState 2:Return hzerr(E_INITDUP,Resource already initialized) 3:!name 4:Return hzerr(E_ARGUMENT,No name) 5:!opdir 6:Return hzerr(E_ARGUMENT,Repository %s: No working directory,*name) 7:m_pADP->GetBinRepos(name) 8:Return hzerr(E_DUPLICATE,Binary datum cron %s already exists,*name) 9:m_Name m_Workdir 10:lstat(*m_Workdir,&fs)==-1 11:AssertDir rc 12:rc!=E_OK 13:Return hzerr(rc,Could not assert working dir of %s,*m_Workdir) 14:m_FileIndx m_FileData 15:lstat(*m_FileIndx,&fs)==-1 16:m_nPopulation m_nSeqId 17:m_nPopulation m_nSeqId 18:lstat(*m_FileData,&fs)==-1 19:m_nSize 20:m_nSize 21:hdbBinRepos::Count Err2Txt hdbADP::RegisterBinRepos rc hdbADP::CountBinRepos Err2Txt m_nInitState 22:Return E_OK

Function body:

hzEcode hdbBinRepos::Init (const hzString& name, const hzString& opdir)
{
   _hzfunc("hdbBinRepos::Init") ;
   FSTAT       fs ;
   ifstream    is ;
   hzEcode     rc ;
   if (m_nInitState)
       return hzerr(E_INITDUP, "Resource already initialized") ;
   if (!name)
       return hzerr(E_ARGUMENT, "No name") ;
   if (!opdir)
       return hzerr(E_ARGUMENT, "Repository %s: No working directory", *name) ;
   if (m_pADP->GetBinRepos(name))
       return hzerr(E_DUPLICATE, "Binary datum cron %s already exists", *name) ;
   m_Name = name ;
   m_Workdir = opdir ;
   threadLog("called with cron name %s and workdir %s\n", *m_Name, *m_Workdir) ;
   if (lstat(*m_Workdir, &fs) == -1)
   {
       rc = AssertDir(*m_Workdir, 0777);
       if (rc != E_OK)
           return hzerr(rc, "Could not assert working dir of %s", *m_Workdir) ;
   }
   m_FileIndx = m_Workdir + "/" + m_Name + ".idx" ;
   m_FileData = m_Workdir + "/" + m_Name + ".dat" ;
   if (lstat(*m_FileIndx, &fs) == -1)
       m_nSeqId = m_nPopulation = 0;
   else
       m_nSeqId = m_nPopulation = fs.st_size / sizeof(_datum_hd) ;
   if (lstat(*m_FileData, &fs) == -1)
       m_nSize = 0;
   else
       m_nSize = fs.st_size ;
   threadLog("A Initialized %s (%p) count %u (size %u) with err=%s\n", *m_Name, this, Count(), m_nSize, Err2Txt(rc)) ;
   rc = m_pADP->RegisterBinRepos(this) ;
   threadLog("B Initialized %s (%p) count %d with files %s and %s. err=%s\n",
       *m_Name, this, m_pADP->CountBinRepos(), *m_FileIndx, *m_FileData, Err2Txt(rc)) ;
   m_nInitState = 1;
   return E_OK ;
}