ITransfersSubscription& TransfersConsumer::addSubscription(const AccountSubscription& subscription) { if (subscription.keys.viewSecretKey != m_viewSecret) { throw std::runtime_error("TransfersConsumer: view secret key mismatch"); } auto& res = m_subscriptions[subscription.keys.address.spendPublicKey]; if (res.get() == nullptr) { res.reset(new TransfersSubscription(m_currency, subscription)); m_spendKeys.insert(subscription.keys.address.spendPublicKey); updateSyncStart(); } return *res; }
TransfersConsumer::TransfersConsumer(const CryptoNote::Currency& currency, INode& node, const SecretKey& viewSecret) : m_node(node), m_viewSecret(viewSecret), m_currency(currency) { updateSyncStart(); }
bool TransfersConsumer::removeSubscription(const AccountPublicAddress& address) { m_subscriptions.erase(address.spendPublicKey); m_spendKeys.erase(address.spendPublicKey); updateSyncStart(); return m_subscriptions.empty(); }
TransfersConsumer::TransfersConsumer(const CryptoNote::Currency& currency, INode& node, Logging::ILogger& logger, const SecretKey& viewSecret) : m_node(node), m_viewSecret(viewSecret), m_currency(currency), m_logger(logger, "TransfersConsumer") { updateSyncStart(); }