Exemple #1
0
	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;
	}
Exemple #2
0
	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;
	}
Exemple #3
0
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;
}