- Member CAAccountingDBInterface::__markAsSettled (UINT64 accountNumber, UINT8 *cascadeId, UINT64 a_transferredBytes)
- what to do if there was a new CC stored while we were busy settling the old one?
- Member CAAccountingDBInterface::__storeCostConfirmation (CAXMLCostConfirmation &cc, UINT8 *ccCascade)
- optimize - maybe do check and insert/update in one step??
- Member CAAccountingDBInterface::markAsSettled (UINT64 accountNumber, UINT8 *cascadeId, UINT64 a_transferredBytes)
- what to do if there was a new CC stored while we were busy settling the old one?
- Member CAAccountingInstance::handleChallengeResponse_internal (tAiAccountingInfo *pAccInfo, DOMElement *root)
We need this trick so that the program does not freeze with active AI ThreadPool!!!!
Dangerous, as this may collide with previous accounts that have been used and deleted before... There should be something like an expiration date for the account status, e.g. 1 month
We need this trick so that the program does not freeze with active AI ThreadPool!!!!
- Member CAAccountingInstance::handleJapPacket_internal (fmHashTableEntry *pHashEntry, bool a_bControlMessage, bool a_bMessageToJAP)
- We need this trick so that the program does not freeze with active AI ThreadPool!!!!
- Member CAAccountingInstance::m_pSettleThread
- initialize this member
- Member CAAccountingInstance::processJapMessage (fmHashTableEntry *pHashEntry, const XERCES_CPP_NAMESPACE::DOMDocument *a_DomDoc)
- this does not work yet due to errors in CAMutex!!! if (handleFunc) { pItem = new aiQueueItem; pItem->pDomDoc = new DOM_Document(a_DomDoc); pItem->pAccInfo = pHashEntry->pAccountingInfo; pItem->handleFunc = handleFunc;
- Class CAAccountingSettleThread
- make SLEEP_SECONDS a configure option
- Member CACmdLnOptions::buildDefaultConfig (XERCES_CPP_NAMESPACE::DOMDocument *a_doc, bool bForLastMix)
MixType can be chosen randomly between FirstMix and MiddleMix but not LastMix! sk13: ok this is a hack - but this way it can also create configurations for LastMixes which makes testing of the dynamic szenario much easier...
Add a list of default InfoServices to the default configuration
Add Description section because InfoService doesn't accept MixInfos without Location or Operator
- Member CACmdLnOptions::saveToFile (XERCES_CPP_NAMESPACE::DOMDocument *a_doc, const UINT8 *a_strFileName)
- Check for errors
- Member CAConditionVariable::wait (UINT32 msTimeout)
- add something better here....
- Member CAFirstMix::doUserLogin_internal (CAMuxSocket *pNewUSer, UINT8 perrIP[4])
- Cleanup of runing thread if mix restarts...
- Member CAFirstMixA::loop ()
- check if thread is closed
- Member CAHttpClient::parseHTTPHeader (UINT32 *contentLength, UINT32 *statusCode=NULL, UINT32 msTimeOut=3000)
: Verify that "HTTP/1.1 200 OK" must be the first line!
: Maybe set an other statusCode in case of an error ?
- Member CASocket::create (SINT32 type, bool a_bShowTypicalError)
- Not thread safe!
- Member CASocket::getLocalIP (UINT8 r_Ip[4])
- : Question: Correct for Unix domain sockets?
- Member createDOMDocument ()
think about timezone handling
think about timezone handling
- Member integrateDOMNode (const DOMNode *srcNode, DOMNode *dstNode, bool recursive, bool replace)
- : check!
- Member memtrim (UINT8 *out, const UINT8 *in, UINT32 len)
- replace UINT32 size with SINT32 size
- Member parseS64 (const UINT8 *str, SINT64 &value)
- code if we do not have native UINT64
- Member parseU64 (const UINT8 *str, UINT64 &value)
- code if we do not have native UINT64
- Member parseUINT16 (const UINT8 *str, UINT16 &value)
- think about timezone handling