// Server stores a map of BASKET_ID to BASKET_ACCOUNT_ID. bool Transactor::addBasketAccountID(const Identifier& BASKET_ID, const Identifier& BASKET_ACCOUNT_ID, const Identifier& BASKET_CONTRACT_ID) { Identifier theBasketAcctID; if (lookupBasketAccountID(BASKET_ID, theBasketAcctID)) { Log::Output(0, "User attempted to add Basket that already exists.\n"); return false; } String strBasketID(BASKET_ID), strBasketAcctID(BASKET_ACCOUNT_ID), strBasketContractID(BASKET_CONTRACT_ID); idToBasketMap_[strBasketID.Get()] = strBasketAcctID.Get(); contractIdToBasketAccountId_[strBasketContractID.Get()] = strBasketAcctID.Get(); return true; }
bool MainFile::SaveMainFileToString(String& strMainFile) { Tag tag("notaryServer"); // We're on version 2.0 since adding the master key. tag.add_attribute("version", OTCachedKey::It()->IsGenerated() ? "2.0" : version_); tag.add_attribute("notaryID", server_->m_strNotaryID.Get()); tag.add_attribute("serverNymID", server_->m_strServerNymID.Get()); tag.add_attribute("transactionNum", formatLong(server_->transactor_.transactionNumber())); if (OTCachedKey::It()->IsGenerated()) // If it exists, then serialize it. { OTASCIIArmor ascMasterContents; if (OTCachedKey::It()->SerializeTo(ascMasterContents)) { tag.add_tag("cachedKey", ascMasterContents.Get()); } else Log::vError( "%s: Failed trying to write master key to notary file.\n", __FUNCTION__); } for (auto& it : server_->transactor_.contractsMap_) { Contract* pContract = it.second; OT_ASSERT_MSG(nullptr != pContract, "nullptr contract pointer in MainFile::SaveMainFile.\n"); // This is like the Server's wallet. pContract->SaveContractWallet(tag); } // Save the basket account information for (auto& it : server_->transactor_.idToBasketMap_) { String strBasketID = it.first.c_str(); String strBasketAcctID = it.second.c_str(); const Identifier BASKET_ACCOUNT_ID(strBasketAcctID); Identifier BASKET_CONTRACT_ID; bool bContractID = server_->transactor_.lookupBasketContractIDByAccountID( BASKET_ACCOUNT_ID, BASKET_CONTRACT_ID); if (!bContractID) { Log::vError("%s: Error: Missing Contract ID for basket ID %s\n", __FUNCTION__, strBasketID.Get()); break; } String strBasketContractID(BASKET_CONTRACT_ID); TagPtr pTag(new Tag("basketInfo")); pTag->add_attribute("basketID", strBasketID.Get()); pTag->add_attribute("basketAcctID", strBasketAcctID.Get()); pTag->add_attribute("basketContractID", strBasketContractID.Get()); tag.add_tag(pTag); } server_->transactor_.voucherAccounts_.Serialize(tag); std::string str_result; tag.output(str_result); strMainFile.Concatenate("%s", str_result.c_str()); return true; }