Mixe for Privacy and Anonymity in the Internet
CAXMLCostConfirmation.hpp
Go to the documentation of this file.
00001 #ifndef __CAXMLCOSTCONFIRMATION__
00002 #define __CAXMLCOSTCONFIRMATION__
00003 #ifdef PAYMENT
00004 #include "xml/DOM_Output.hpp"
00005 #include "CAPriceInfo.hpp"
00006 
00012 class CAXMLCostConfirmation
00013   {
00014     
00015     private:
00016       SINT32 setValues();
00017       CAXMLCostConfirmation();
00018       
00019       UINT64        m_lTransferredBytes;
00020       UINT64        m_lAccountNumber;
00021       UINT32        m_id; //id of the CC, only set after storing it in the BI's database
00022       CAPriceInfo**     m_priceCerts; 
00023       UINT32        m_priceCertsLen;
00024       UINT8*        m_pStrPIID;
00025       XERCES_CPP_NAMESPACE::DOMDocument*  m_domDocument;
00026       static const char* const ms_pStrElemName;
00027       
00028       SINT32 checkLen(UINT32 a_hashNumber)
00029       {
00030         if (a_hashNumber < 0 || a_hashNumber > m_priceCertsLen - 1)
00031         {
00032           return E_UNKNOWN;
00033         }
00034         return E_SUCCESS;
00035       }
00036       
00037     public:
00042       static CAXMLCostConfirmation* getInstance(UINT8 * strXmlData,UINT32 strXMlDataLen);
00047       static CAXMLCostConfirmation* getInstance(DOMElement* elemRoot);
00048       ~CAXMLCostConfirmation();
00049       
00050       UINT32 getNumberOfHashes()
00051       {
00052         return m_priceCertsLen;
00053       }
00054       
00055       SINT32 getPosition(UINT32 a_hashNumber)
00056       {
00057         if (checkLen(a_hashNumber) != E_SUCCESS)
00058         {
00059           return E_UNKNOWN;
00060         }
00061         
00062         return m_priceCerts[a_hashNumber]->getPosition();
00063       }
00064       
00065       UINT8* getPriceCertHash(UINT32 a_hashNumber) 
00066       {
00067         if (checkLen(a_hashNumber) != E_SUCCESS)
00068         {
00069           return NULL;
00070         }
00071         return m_priceCerts[a_hashNumber]->getPriceCertHash();
00072       }
00073       
00074       UINT8* getMixId(UINT32 a_hashNumber) 
00075       {
00076         if (checkLen(a_hashNumber) != E_SUCCESS)
00077         {
00078           return NULL;
00079         }
00080         return m_priceCerts[a_hashNumber]->getMixId();
00081       }
00082       
00084       UINT8* dumpToMem(UINT32* pLen)
00085         {
00086           if(m_domDocument==NULL)
00087             return NULL;
00088           return DOM_Output::dumpToMem(m_domDocument,pLen);
00089         }
00090 
00092       SINT32 toXMLString(UINT8* buff,UINT32* bufflen)
00093         {
00094           if(DOM_Output::dumpToMem(m_domDocument,buff,bufflen)!=E_SUCCESS)
00095             return E_UNKNOWN;
00096           buff[*bufflen]=0;
00097           return E_SUCCESS;
00098         }
00099 
00100       UINT64 getTransferredBytes()
00101         {
00102           return m_lTransferredBytes;
00103         }
00104       
00105       UINT64 getAccountNumber()
00106         {
00107           return m_lAccountNumber;
00108         }
00109       
00110 
00111       UINT32 getID() 
00112             {
00113           return m_id;
00114         }
00115       
00116 //dangerous and currently not needed?     
00117 //      CAPriceInfo** getPriceCerts()
00118 //        {
00119 //          return m_priceCerts;  
00120 //        }
00121       
00125       UINT8* getPIID() 
00126         {
00127           UINT8* pTmpStr = NULL;
00128           if(m_pStrPIID!=NULL)
00129             {
00130               pTmpStr = new UINT8[strlen((char*)m_pStrPIID)+1];
00131               strcpy((char*)pTmpStr, (char*)m_pStrPIID);
00132             }
00133           return pTmpStr;
00134         }
00135         
00136       static const char* const getXMLElementName()
00137         {
00138           return ms_pStrElemName;
00139         }
00140       
00141        XERCES_CPP_NAMESPACE::DOMDocument* getXMLDocument()
00142       {
00143         return m_domDocument;
00144       }
00145       
00146 
00147       
00148   };
00149 
00150 #endif //PAYMENT
00151 #endif