void Statistics::writeTimerFired()
{
    ASSERT(RunLoop::isMain());

    Vector<StringCapture> hashesToAdd;
    copyToVector(m_hashesToAdd, hashesToAdd);
    m_hashesToAdd.clear();

    Vector<std::pair<StringCapture, StoreDecision>> storeDecisionsToAdd;
    copyToVector(m_storeDecisionsToAdd, storeDecisionsToAdd);
    m_storeDecisionsToAdd.clear();

    shrinkIfNeeded();

    serialBackgroundIOQueue().dispatch([this, hashesToAdd, storeDecisionsToAdd] {
        if (!m_database.isOpen())
            return;

        WebCore::SQLiteTransactionInProgressAutoCounter transactionCounter;
        WebCore::SQLiteTransaction writeTransaction(m_database);
        writeTransaction.begin();

        addHashesToDatabase(hashesToAdd);
        addStoreDecisionsToDatabase(storeDecisionsToAdd);

        writeTransaction.commit();
    });
}
示例#2
0
int SList::readTransaction(string fname)
{
	ifstream readTransaction(fname);
	if(readTransaction.good())
	{
		queue<string> trans;
		getline(readTransaction,temp); //transaction ID
		trans.push(temp);
		getline(readTransaction,temp); //num jobs
		trans.push(temp);
		stringtoothers(temp,numJobs);
		getline(readTransaction,temp);
		while(numJobs>0)
		{
			numJobs--;
			getline(readTransaction,job); //what job it is
			trans.push(job);
			getline(readTransaction,temp); //since all jobs have at least one line, take in one line first.
			trans.push(temp);
			if(!job.compare("SALE")||!job.compare("RESTOCK"))
			{
				getline(readTransaction,temp);
				trans.push(temp);
			}
			else if(!job.compare("ADD"))
			{
				for(int i=0;i<5;i++)
				{
					getline(readTransaction,temp);
					trans.push(temp);
				}
			}
			getline(readTransaction,temp);
		}
		storeTrans.push(trans);
	
	readTransaction.close();
	storeExistingBatch(0); //need to copy out from existing file
	numT++;
	writeTransaction();
	return 1;
	}
	else
	{
		readTransaction.close();
		return 0;
	}
}
示例#3
0
void MyMoneyStorageXML::writeTransactions(QDomElement& transactions)
{
  MyMoneyTransactionFilter filter;
  filter.setReportAllSplits(false);
  QList<MyMoneyTransaction> list;
  m_storage->transactionList(list, filter);
  transactions.setAttribute("count", list.count());

  QList<MyMoneyTransaction>::ConstIterator it;

  signalProgress(0, list.count(), i18n("Saving transactions..."));

  int i = 0;
  for (it = list.constBegin(); it != list.constEnd(); ++it) {
    writeTransaction(transactions, *it);
    signalProgress(++i, 0);
  }
}
示例#4
0
      void executeRequest( const QgsServerRequest& request, QgsServerResponse& response,
                           const QgsProject* project )
      {
        QgsServerRequest::Parameters params = request.parameters();
        QString versionString = params.value( "VERSION" );

        // Set the default version
        if ( versionString.isEmpty() )
        {
          versionString = version(); // defined in qgswfsutils.h
        }

        // Get the request
        QString req = params.value( QStringLiteral( "REQUEST" ) );
        if ( req.isEmpty() )
        {
          throw QgsServiceException( QStringLiteral( "OperationNotSupported" ),
                                     QStringLiteral( "Please check the value of the REQUEST parameter" ) );
        }

        if ( QSTR_COMPARE( req, "GetCapabilities" ) )
        {
          writeGetCapabilities( mServerIface, project, versionString, request, response );
        }
        else if ( QSTR_COMPARE( req, "GetFeature" ) )
        {
          writeGetFeature( mServerIface, project, versionString, request, response );
        }
        else if ( QSTR_COMPARE( req, "DescribeFeatureType" ) )
        {
          writeDescribeFeatureType( mServerIface, versionString, request, response );
        }
        else if ( QSTR_COMPARE( req, "Transaction" ) )
        {
          writeTransaction( mServerIface, versionString, request, response );
        }
        else
        {
          // Operation not supported
          throw QgsServiceException( QStringLiteral( "OperationNotSupported" ),
                                     QStringLiteral( "Request %1 is not supported" ).arg( req ) );
        }
      }
示例#5
0
void SList::writeTransaction()
{
	ofstream writeTransaction("batchjobs.txt");

	writeTransaction<<numT<<endl<<endl;
	int countT=numT;
	while(countT>0)
	{
		countT--;
		writeTransaction<<storeTrans.front().front()<<endl; //transaction ID
		storeTrans.front().pop();
		stringtoothers(storeTrans.front().front(),numJobs);
		writeTransaction<<storeTrans.front().front()<<endl<<endl; //num jobs
		storeTrans.front().pop();
		while(numJobs>0)
		{
			numJobs--;
			job=storeTrans.front().front();
			writeTransaction<<storeTrans.front().front()<<endl;//what job it is
			storeTrans.front().pop();
			writeTransaction<<storeTrans.front().front()<<endl; //since all jobs have at least one line, write out one line first.
			storeTrans.front().pop();
			if(!job.compare("SALE")||!job.compare("RESTOCK"))
			{
				writeTransaction<<storeTrans.front().front()<<endl;
				storeTrans.front().pop();
			}
			else if(!job.compare("ADD"))
			{
				for(int i=0;i<5;i++)
				{
					writeTransaction<<storeTrans.front().front()<<endl;
					storeTrans.front().pop();
				}
			}
			writeTransaction<<endl;
		}
		storeTrans.pop();
	}
	writeTransaction.close();
}
void Statistics::bootstrapFromNetworkCache(const String& networkCachePath)
{
    ASSERT(!RunLoop::isMain());

    LOG(NetworkCache, "(NetworkProcess) Bootstrapping the network cache statistics database from the network cache...");

    Vector<StringCapture> hashes;
    traverseCacheFiles(networkCachePath, [&hashes](const String& hashString, const String&) {
        Key::HashType hash;
        if (!Key::stringToHash(hashString, hash))
            return;

        hashes.append(hashString);
    });

    WebCore::SQLiteTransactionInProgressAutoCounter transactionCounter;
    WebCore::SQLiteTransaction writeTransaction(m_database);
    writeTransaction.begin();

    addHashesToDatabase(hashes);

    writeTransaction.commit();
}