Create the subscriber data class and repository
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbADP::InitSubscribers | (hzString&,) |
Declared in file: hzDatabase.h
Defined in file : hdbADP.cpp
Function Logic:
Function body:
hzEcode hdbADP::InitSubscribers (hzString& dataDir)
{
// Create the subscriber data class and repository
_hzfunc("hdbADP::InitSubscribers") ;
// hdbObjRepos* pRepos ; // Subscriber repository pointer
hzString S ; // Temporary string
hzEcode rc = E_OK ; // Return code
if (!this)
hzexit(E_CORRUPT, "No ADP instance") ;
if (m_pClassSubscriber)
rc = hzerr(E_DUPLICATE, "Subscriber class already declared") ;
S = "subscriber" ;
if (m_mapObjRepos.Exists(S))
rc = hzerr(E_DUPLICATE, "This function has already been called") ;
if (!dataDir)
rc = hzerr(E_ARGUMENT, "No application data directory") ;
if (rc != E_OK)
return rc ;
// Allocate and initialize subscriber class
m_pClassSubscriber = new hdbClass(*this, HDB_CLASS_DESIG_SYS) ;
rc = m_pClassSubscriber->InitStart(S) ;
if (rc == E_OK) { S = "username" ; rc = m_pClassSubscriber->InitMember(S, datatype_STRING, HDB_MBR_POP_SINGLE_COMPULSORY) ; }
if (rc == E_OK) { S = "userpass" ; rc = m_pClassSubscriber->InitMember(S, datatype_STRING, HDB_MBR_POP_SINGLE_COMPULSORY) ; }
if (rc == E_OK) { S = "userEmail" ; rc = m_pClassSubscriber->InitMember(S, datatype_EMADDR, HDB_MBR_POP_SINGLE_OPTIONAL) ; }
if (rc == E_OK) { S = "userUID" ; rc = m_pClassSubscriber->InitMember(S, datatype_UINT32, HDB_MBR_POP_SINGLE_OPTIONAL) ; }
if (rc == E_OK) { S = "userType" ; rc = m_pClassSubscriber->InitMember(S, datatype_STRING, HDB_MBR_POP_SINGLE_OPTIONAL) ; }
if (rc == E_OK)
{
rc = m_pClassSubscriber->InitDone() ;
// Obtain member pointers
m_pMbr_Subscriber_username = m_pClassSubscriber->GetMember(0);
m_pMbr_Subscriber_userpass = m_pClassSubscriber->GetMember(1);
m_pMbr_Subscriber_email = m_pClassSubscriber->GetMember(2);
m_pMbr_Subscriber_UID = m_pClassSubscriber->GetMember(3);
m_pMbr_Subscriber_type = m_pClassSubscriber->GetMember(4);
}
// Resister subscriber class
if (rc == E_OK)
rc = RegisterDataClass(m_pClassSubscriber) ;
if (rc != E_OK)
hzexit(rc, "Could not init subsriber class") ;
// Create and initialize susscriber repository
m_pReposSubscriber = new hdbObjRepos(*this) ;
if (!m_pReposSubscriber)
hzexit(E_MEMORY, "No subsciber cache allocated") ;
rc = m_pReposSubscriber->InitStart(m_pClassSubscriber, m_pClassSubscriber->strName(), dataDir, HDB_REPOS_CACHE) ;
if (rc != E_OK)
hzexit(rc, "Could not init subsriber repos") ;
// S = "username" ;
rc = m_pReposSubscriber->InitMbrIndex(m_pMbr_Subscriber_username, true) ;
if (rc != E_OK)
hzexit(rc, "Could not init subsriber repos index") ;
rc = m_pReposSubscriber->InitDone() ;
if (rc != E_OK)
hzexit(rc, "Could not complete subsriber repos initialization") ;
// Resister subscriber repository
rc = m_mapObjRepos.Insert(m_pReposSubscriber->strName(), m_pReposSubscriber) ;
/*
** if (rc == E_OK)
** {
** m_pMbr_Subscriber_username = m_pClassSubscriber->GetMember(0) ;
** m_pMbr_Subscriber_userpass = m_pClassSubscriber->GetMember(1) ;
** m_pMbr_Subscriber_email = m_pClassSubscriber->GetMember(2) ;
** m_pMbr_Subscriber_UID = m_pClassSubscriber->GetMember(3) ;
** m_pMbr_Subscriber_type = m_pClassSubscriber->GetMember(4) ;
** }
** */
return rc ;
}