Exemple #1
0
void SenderImpl::process()
{
    OperationDescriptor_ptr op = m_config->operation();

    Holder srcHolder = op->get_holder(m_request);

    // preFunc
    m_evaluator.pre(m_request);
    if (m_evaluator.hasError()) throw m_evaluator.error();

    // processors
    typedef QList< RequestProcessor_ptr > processors_t;
    const processors_t& processors = m_config->processors();

    for (processors_t::const_iterator it = processors.begin();
            it != processors.end(); ++it)
    {
        applyProcessor(m_request, *it, srcHolder);
    }

    // postFunc
    m_evaluator.post(m_request);
    if (m_evaluator.hasError()) throw m_evaluator.error();

    // Clone request
    // We can't emit a request we're going to modify
    Request_ptr request = op->create_request();
    Holder dstHolder = op->get_holder(request);

    op->copy(srcHolder, dstHolder);

    // emit request
    emit sendRequest(request);
    m_config->notifyRequestSent(request);
}
Exemple #2
0
void SenderImpl::start(Sender_weak weak)
{
    Sender_ptr ptr (weak.lock());

    if (!ptr)
        return;

    m_evaluator.evaluate(m_config->code());

    bool hasErr = m_evaluator.hasError();

    if (!hasErr)
    {
        OperationDescriptor_ptr op = m_config->operation();

        // Clone the original request
        // We can't modify an emited request
        Holder srcHolder = op->get_holder(m_config->request());

        m_request = op->create_request();
        Holder dstHolder = op->get_holder(m_request);

        op->copy(srcHolder, dstHolder);

        // m_request is the working request
        m_evaluator.init(m_request);

        hasErr = m_evaluator.hasError();
    }

    if (!hasErr)
    {
        m_timer.expires_from_now(
                boost::posix_time::milliseconds(
                    m_config->initDelay()));

        m_timer.async_wait(
                boost::bind(&SenderImpl::handleTimeout,
                    this, weak, _1));
    }
    else
    {
        m_config->notifyFinished();

        emit finished(m_config);

        emit error(m_evaluator.error());
    }
}
QMimeData *    ScriptModel::mimeData(const QModelIndexList& indexes) const
{
    if (indexes.size() == 2) // both columns
    {
        int pos = indexToPosition(indexes.at(0));

        std::ostringstream oss;

        const LogEntry& entry = m_entries.at(pos);

        OperationDescriptor_ptr reflective =
            entry.reflective;

        core::holder holder = reflective->get_holder(entry.req);

        json::write(oss, reflective, holder);

        QMimeData *mimeData = new QMimeData;
        mimeData->setText(oss.str().c_str());

        return mimeData;
    }

    return NULL;
}
void ScriptModel::append(corbasim::core::request_ptr req,
        int pos)
{
    LogEntry entry;
    entry.dateTime = QDateTime::currentDateTime();

    OperationDescriptor_ptr op =
        m_instance->get_reflective_by_tag(req->get_tag());

    if (!op) return;

    entry.reflective = op;

    beginInsertRows(QModelIndex(), pos, pos);

    core::holder hold = op->get_holder(req);
    Node_ptr node(new Node(op, hold));
    m_nodes.insert(pos, node);

    // List
    entry.req = req;
    entry.text = QString("Outgoing call ") + op->get_name();
    entry.icon = &m_outputIcon;

    // Background Color
    entry.color = QColor(Qt::yellow);

    m_entries.insert(pos, entry);

    endInsertRows();
}