#ifndef _POS_DB_H_ #define _POS_DB_H_ #include "sha1.h" #include "log.h" #include "nameserver.h" #include #include #include #include class PosDb { public: PosDb(const char * fn); uint32_t getAccountFromHash(const SHA1Hash & hash); std::list getHashesFromAccount(uint32_t account); std::list getHashesFromAccount(std::string account); int32_t getAccountBalance(const SHA1Hash & hash); int32_t getAccountBalance(uint32_t account); int32_t getAccountBalance(std::string account); uint64_t associateHash(const SHA1Hash & hash, uint32_t account); uint64_t associateHash(const SHA1Hash & hash, std::string account); uint64_t deassociateHash(const SHA1Hash & hash); int32_t getUPCPrice(UPC upc); uint64_t setUPCPrice(UPC upc, int32_t price); uint64_t doTransaction(const SHA1Hash & hash, int32_t delta); uint64_t doTransaction(const uint32_t account, int32_t delta); uint64_t doTransaction(std::string account, int32_t delta); uint64_t revertTransaction(uint64_t serial); int32_t getStock(UPC upc); uint64_t doStockChange(UPC upc, int32_t delta); private: void acceptLogEntry(const LogEntry & l); std::multimap account_to_hash; std::map account_to_balance; std::map upc_to_stock; std::map upc_to_price; std::map serial_to_object; Log log; NameServer ns; }; typedef std::multimap::iterator ath_it; typedef std::map::iterator atb_it; typedef std::map::iterator uts_it; typedef std::map::iterator sto_it; typedef std::pair ath_it_r; #endif