Beispiel #1
0
void QxThreadPool::initServices()
{
   QMutexLocker locker(& m_mutex);
   qRegisterMetaType<qx::service::QxTransaction_ptr>("qx::service::QxTransaction_ptr");
   qRegisterMetaType<qx::service::QxTransaction_ptr>("QxTransaction_ptr");
   for (long l = 0; l < QxConnect::getSingleton()->getThreadCount(); l++)
   {
      QxThread * pNewThread = new QxThread(this);
      QObject::connect(pNewThread, SIGNAL(error(const QString &, qx::service::QxTransaction_ptr)), this, SIGNAL(error(const QString &, qx::service::QxTransaction_ptr)));
      QObject::connect(pNewThread, SIGNAL(transactionStarted(qx::service::QxTransaction_ptr)), this, SIGNAL(transactionStarted(qx::service::QxTransaction_ptr)));
      QObject::connect(pNewThread, SIGNAL(transactionFinished(qx::service::QxTransaction_ptr)), this, SIGNAL(transactionFinished(qx::service::QxTransaction_ptr)));
      m_lstAllServices.append(pNewThread);
      m_lstAvailable.enqueue(pNewThread);
      pNewThread->start();
   }
}
Beispiel #2
0
//-----------------------------------------------------------------------------
IBPP::Statement& MetadataLoader::getStatement(const std::string& sql)
{
    Q_ASSERT(transactionStarted());

    IBPP::Statement stmt;
    IBPPStatementListIterator it = findStatement(sql);
    if (it != statementsM.end())
    {
        stmt = (*it);
        statementsM.erase(it);
    }
    else
    {
        stmt = IBPP::StatementFactory(databaseM, transactionM, sql);
    }
    statementsM.push_front(stmt);
    limitListSize();
    return statementsM.front();
}
Beispiel #3
0
void QxThread::doProcess(QTcpSocket & socket)
{
    if (! socket.setSocketDescriptor(m_iSocketDescriptor))
    {
        Q_EMIT error("[QxOrm] invalid socket descriptor : cannot start transaction", QxTransaction_ptr());
        return;
    }

    qx_bool bReadOk = readSocket(socket);
    if (! bReadOk) {
        Q_EMIT error(QString("[QxOrm] unable to read request from socket : '") + bReadOk.getDesc() + QString("'"), QxTransaction_ptr());
        return;
    }
    if (! m_bIsRunning) {
        return;
    }

    Q_EMIT transactionStarted(m_pTransaction);
    try {
        m_pTransaction->executeServer();
    }
    catch (const qx::exception & x) {
        qx_bool xb = x.toQxBool();
        m_pTransaction->setMessageReturn(xb);
    }
    catch (const std::exception & e) {
        m_pTransaction->setMessageReturn(qx_bool(QX_ERROR_UNKNOWN, e.what()));
    }
    catch (...) {
        m_pTransaction->setMessageReturn(qx_bool(QX_ERROR_UNKNOWN, "unknown error"));
    }
    if (! m_bIsRunning) {
        return;
    }

    qx_bool bWriteOk = writeSocket(socket);
    if (! bWriteOk) {
        Q_EMIT error(QString("[QxOrm] unable to write reply to socket : '") + bWriteOk.getDesc() + QString("'"), m_pTransaction);
    }
    Q_EMIT transactionFinished(m_pTransaction);
}
Beispiel #4
0
//-----------------------------------------------------------------------------
IBPP::Statement MetadataLoader::createStatement(const std::string& sql)
{
    Q_ASSERT(transactionStarted());

    return IBPP::StatementFactory(databaseM, transactionM, sql);
}
Beispiel #5
0
//-----------------------------------------------------------------------------
IBPP::Blob MetadataLoader::createBlob()
{
    Q_ASSERT(transactionStarted());

    return IBPP::BlobFactory(databaseM, transactionM);
}