Todo List

Member OSB_LIB::Associate::addChild (OSB_DB::Session &session, Associate &child)
Possibly the activation status of the child changes! void reparent(Associate*) might be better.

Member OSB_LIB::Associate::delChild (OSB_DB::Session &session, Associate &child)
Possibly the activation status of the child changes! void reparent(Associate*) might be better.

Member OSB_LIB::BalanceSheet::lock (const OSB_DB::Session &session, bool noWait=false)
We may try to be more clever. Provide an optional argument reRead: if set to true locking will be done by contract id only, if set to false the locking criteria will include the object version.
Should we be more clever? In (programmer's) real life such a specification may prove too restrictive because it prevents incremental updates.

Member OSB_LIB::BsPage::readUsageCharges (const OSB_DB::Session &session, bool withCdr)
Rework the logic described above: start with the requirements for rating and billing. It is not making sense that billing has to read all 10-20 million Cdr (wholesale contract), on the other hand there's call accounting and bundled rating at billing time.

Member OSB_LIB::BsPage::getSubsCharges ()
Redesign is needed once we write subscription charges back to the database:
Most likely we'll have to provide an EditStatus in SubsCharge and an appropriate update function in BsPage.

Member OSB_LIB::BsStorage::writeCdrs (long recoveryId, OSB_DB::Session &session, Asn1Writer &writer)
Comprehensive doc.

Class OSB_LIB::CdrStorage
If a concrete class stores the CDR in a database table, then it will buffer the CDR in push(). However if the buffer gets too big, there might a need to flush the buffer's content, i.e., to write the CDR to the database.
For such a behavior we'd need an OSB_DB::Session as parameter for push() or some kind of callback function.

Class OSB_LIB::CpTree
List of parent - child relations.

Member OSB_LIB::Device::remove (const OSB_DB::Session &session, bool noWait)=0
Be more precise about the 2nd throw condition.

Class OSB_LIB::Id2< I >
template<typename Child, typename Parent>?
However this is meaningful only to compare with the parents object id => small benefit.

Class OSB_LIB::ImsiResource
An IMSI is always coupled to another resource, e.g., MEID or SIM card.
The question is if an IMSI is "just" an attribute of this other resource or if it can live stand-alone: The latter is expected and in this case we must decide who stores the relationship.

Class OSB_LIB::ListMgr
Provide functions init<X>(const Session&) to initialize the list pointers and read their content from the database; throw in the list access functions if a pointer is 0.

Class OSB_LIB::ListMgr
Should we provide an optional mutex (read/write) so that applications can refresh the lists?

Member OSB_LIB::NwAddress::Np
Mapping of numbering plan to resource type.

Class OSB_LIB::OsbUser
Once we support customer self-care the functionality of the class must be merged into Associate.

Member OSB_DB::PersProductGw::delPersProductItem (const Session &session, OSB_LIB::PersProductItem &item)
When and how do we check, if the item can be deleted? Exemple: Resource assignments must not be removed until the rating reproduction time has passed. Is this issue general, specific to some item types or both?

Member OSB_DB::PersProductGw::incPersProdObjVs (const Session &session, const OSB_LIB::PersProduct::Oid &ppId, long &objVs, bool &uptodate)
Remove, somehow this must go via the pers. product.

Member OSB_LIB::RatedPartyEval::setParam (int index, const std::string &param)=0
how to check all params are there?

Class OSB_LIB::RequestHandler
Declare a class Impl to hide implementation details (and to avoid exhaustive documentation:-) and define/use in the cc-file.

Class OSB_LIB::RequestHandler
The current processing logic breaks in the moment we really have >1 entity linked to a request.
Then we first need to set the preferred status of all entities and the apply the request for the cascading root only.

Class OSB_LIB::RequestHandler::Tracker
See RequestHandler: the processing steps will be broken down soon. By this additional functions like prefSet() will be provided.

Member OSB_LIB::ResourceCache::finalize (bool doLog)=0
We might think of providing an OSB_DB::Session. This would allow a concrete cache to store statistics.

Member OSB_LIB::RpeServedNwAddr::getParty (const Cdr &cdr, RatedParty *rp, OsbError *error) const
Mapping of numbering plan to resource type, see also the comment in the implementation.

Member OSB_LIB::StatusChanges::changes_
Should we introduce a flag that tell us that there are no valid status changes at all for the entity?

Class OSB_LIB::UimCard
Currently (May-06) is not clear if the class should be derived from a base class Equipment and, if so, what would be the interface of such a base class.

Class OSB_LIB::UserGroup
For common resources (such as InventoryPool) is should be possible to create a user group for the virtual module All and to grant it to a user.

File asn1tagid.h
We might think of TagRegistry: tag -> desc where the tags in use are registered.

File asn1zteprint.h
Some of the decoders provided in the implementation are not specific to ZTE but generally used in GSM/CDMA:
move them out if needed somewhere else.

File cdrasn1.h
Not all classes in this file need to be "public", e.g., all encoders and decorders that work on OSB_LIB::Cdr.
Consider a split of this header file:

File cdrtags.h
We might think of TagRegistry: tag -> desc where the tags in use are registered.

File osbaccess.h
Allow parametrisation of OSB_LIB::ModAccess and OSB_LIB::GrpAccess:
Provide an inner class Param which can have to following types (boolean should not be needed):

File osbbtea.h
Uses a hard-coded key: should be user specific.

The current implementation fills missing bytes with 0.
That's why ASCII strings can be decoded. To support any data we'd have to store the data size in the first 4 bytes during encoding and read back during decryption.

File osblog.h
Provide an enum for the log levels: Log::raw(5) is hardly meaningful.

Generated on Sat Sep 2 14:06:36 2006 for OSB Library by  doxygen 1.4.7