bool FindTxById(const ConstBuf& txid, Tx *ptx) override { EXT_LOCK (MtxSqlite) { DbDataReader dr = m_cmdFindTx.Bind(1, *(Int64*)txid.P).ExecuteReader(); if (!dr.Read()) return false; if (ptx) { ptx->EnsureCreate(); ptx->SetReducedHash(txid); LoadFromDb(*ptx, dr); } } return true; }
bool FindTx(const HashValue& hash, Tx *ptx) override { EXT_LOCK (MtxSqlite) { DbDataReader dr = m_cmdFindTx.Bind(1, ReducedHashValue(hash)).ExecuteReader(); if (!dr.Read()) return false; if (ptx) { ptx->EnsureCreate(); ptx->SetHash(hash); LoadFromDb(*ptx, dr); } } return true; }
int CPVRChannelGroup::Load(void) { /* make sure this container is empty before loading */ Unload(); int iChannelCount = LoadFromDb(); CLog::Log(LOGDEBUG, "PVRChannelGroup - %s - %d channels loaded from the database for group '%s'", __FUNCTION__, iChannelCount, m_strGroupName.c_str()); Update(); if (size() - iChannelCount > 0) { CLog::Log(LOGDEBUG, "PVRChannelGroup - %s - %d channels added from clients to group '%s'", __FUNCTION__, (int) size() - iChannelCount, m_strGroupName.c_str()); } m_bLoaded = true; return size(); }
bool CPVRChannelGroupInternal::Persist(void) { bool bReturn = false; bool bRefreshChannelList = false; CPVRDatabase *database = CPVRManager::Get()->GetTVDatabase(); if (!database || !database->Open()) return bReturn; CLog::Log(LOGDEBUG, "CPVRChannelGroupInternal - %s - persisting %d channels", __FUNCTION__, size()); bReturn = true; for (unsigned int iChannelPtr = 0; iChannelPtr < size(); iChannelPtr++) { /* if this channel has an invalid ID, reload the list afterwards */ bRefreshChannelList = at(iChannelPtr).channel->ChannelID() <= 0; bReturn = at(iChannelPtr).channel->Persist(true) && bReturn; } if (bReturn) { if (bRefreshChannelList) { database->CommitInsertQueries(); CLog::Log(LOGDEBUG, "PVRChannelGroup - %s - reloading the channels list to get channel IDs", __FUNCTION__); Unload(); bReturn = LoadFromDb(true) > 0; } if (bReturn) bReturn = CPVRChannelGroup::Persist(); } database->Close(); return bReturn; }