Example #1
0
QDomElement
Params::toXml(QDomDocument& doc, QString const& name) const
{
	XmlMarshaller marshaller(doc);
	
	QDomElement el(doc.createElement(name));
	el.appendChild(m_distortionModel.toXml(doc, "distortion-model"));
	el.setAttribute("depthPerception", m_depthPerception.toString());
	el.setAttribute("dewarpingMode", m_dewarpingMode.toString());
	el.setAttribute("despeckleLevel", despeckleLevelToString(m_despeckleLevel));
	el.appendChild(marshaller.dpi(m_dpi, "dpi"));
	
	QDomElement cp(doc.createElement("color-params"));
	cp.setAttribute(
		"colorMode",
		formatColorMode(m_colorParams.colorMode())
	);
	
	cp.appendChild(
		m_colorParams.colorGrayscaleOptions().toXml(
			doc, "color-or-grayscale"
		)
	);
	cp.appendChild(m_colorParams.blackWhiteOptions().toXml(doc, "bw"));
	
	el.appendChild(cp);
	
	return el;
}
QDomElement
SerializableSpline::toXml(QDomDocument& doc, QString const& name) const
{
	QDomElement el(doc.createElement(name));

	QString const point_str("point");
	XmlMarshaller marshaller(doc);
	BOOST_FOREACH(QPointF const& pt, m_points) {
		el.appendChild(marshaller.pointF(pt, point_str));
	}
Example #3
0
QDomElement
Dependencies::toXml(QDomDocument& doc, QString const& name) const
{
	XmlMarshaller marshaller(doc);
	
	QDomElement el(doc.createElement(name));
	el.appendChild(marshaller.rotation(m_rotation, "rotation"));
	el.appendChild(marshaller.polygonF(m_pageOutline, "page-outline"));
	
	return el;
}
Example #4
0
QDomElement
Params::toXml(QDomDocument& doc, QString const& name) const
{
	XmlMarshaller marshaller(doc);
	
	QDomElement el(doc.createElement(name));
	el.setAttribute("mode", m_mode == MODE_AUTO ? "auto" : "manual");
	el.appendChild(marshaller.rectF(m_contentRect, "content-rect"));
	el.appendChild(marshaller.sizeF(m_contentSizeMM, "content-size-mm"));
	el.appendChild(m_deps.toXml(doc, "dependencies"));
	return el;
}
Example #5
0
QDomElement
OutputImageParams::PartialXform::toXml(QDomDocument& doc, QString const& name) const
{
	XmlMarshaller marshaller(doc);
	
	QDomElement el(doc.createElement(name));
	el.appendChild(marshaller.string(Utils::doubleToString(m_11), "m11"));
	el.appendChild(marshaller.string(Utils::doubleToString(m_12), "m12"));
	el.appendChild(marshaller.string(Utils::doubleToString(m_21), "m21"));
	el.appendChild(marshaller.string(Utils::doubleToString(m_22), "m22"));
	
	return el;
}
Example #6
0
File: ping.cpp Project: sguzwf/prun
void PingerBoost::PingWorker( WorkerPtr &worker )
{
    auto it = endpoints_.find( worker->GetHost() );
    if ( it == endpoints_.end() )
    {
        common::Config &cfg = common::Config::Instance();
        bool ipv6_only = cfg.Get<bool>( "ipv6_only" );
        udp::resolver::query query( ipv6_only ? udp::v6() : udp::v4(), worker->GetHost(), port_ );

        boost::system::error_code error;
        udp::resolver::iterator iterator = resolver_.resolve( query, error ), end;
        if ( error || iterator == end )
        {
            PLOG_DBG( "PingerBoost::PingWorker address not resolved: " << worker->GetHost() );
            return;
        }

        std::pair< EndpointMap::iterator, bool > p = endpoints_.insert(
            std::make_pair( worker->GetHost(), *iterator ) );
        it = p.first;
    }

    if ( worker->GetIP().empty() )
    {
        OnWorkerIPResolve( worker, it->second.address().to_string() );
    }

    const std::string &node_ip = it->second.address().to_string();

    common::Marshaller marshaller;
    marshaller( "host", node_ip );

    std::string msg;
    protocol_->Serialize( msg, "ping", marshaller );
    //PLOG_DBG( msg );
    //PLOG_DBG( node_ip );

    try
    {
        socket_.send_to( boost::asio::buffer( msg ), it->second );
    }
    catch( boost::system::system_error &e )
    {
        PLOG_ERR( "PingerBoost::PingWorker: send_to failed: " << e.what() << ", host : " << node_ip );
    }
}
Example #7
0
QDomElement
OutputImageParams::toXml(QDomDocument& doc, QString const& name) const
{
	XmlMarshaller marshaller(doc);
	
	QDomElement el(doc.createElement(name));
	el.appendChild(marshaller.size(m_size, "size"));
	el.appendChild(marshaller.rect(m_contentRect, "content-rect"));
	el.appendChild(m_partialXform.toXml(doc, "partial-xform"));
	el.appendChild(marshaller.dpi(m_dpi, "dpi"));
	el.appendChild(m_colorParams.toXml(doc, "color-params"));
	el.appendChild(m_distortionModel.toXml(doc, "distortion-model"));
	el.setAttribute("depthPerception", m_depthPerception.toString());
	el.setAttribute("dewarpingMode", m_dewarpingMode.toString());
	el.setAttribute("despeckleLevel", despeckleLevelToString(m_despeckleLevel));
	
	return el;
}
Example #8
0
File: Curve.cpp Project: DikBSD/STE
QDomElement
Curve::serializeXSpline(
	imageproc::XSpline const& xspline, QDomDocument& doc, QString const& name)
{
	if (xspline.numControlPoints() == 0) {
		return QDomElement();
	}

	QDomElement el(doc.createElement(name));
	XmlMarshaller marshaller(doc);

	int const num_control_points = xspline.numControlPoints();
	for (int i = 0; i < num_control_points; ++i) {
		QPointF const pt(xspline.controlPointPosition(i));
		el.appendChild(marshaller.pointF(pt, "point"));
	}
	
	return el;
}
Example #9
0
/*!
    \internal
    Constructs a DBusMessage object from \a message. The returned value must be de-referenced
    with q_dbus_message_unref. The \a capabilities flags indicates which capabilities to use.

    The \a error object is set to indicate the error if anything went wrong with the
    marshalling. Usually, this error message will be placed in the reply, as if the call failed.
    The \a error pointer must not be null.
*/
DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDBusConnection::ConnectionCapabilities capabilities,
                                                QDBusError *error)
{
    if (!qdbus_loadLibDBus()) {
        *error = QDBusError(QDBusError::Failed, QLatin1String("Could not open lidbus-1 library"));
        return 0;
    }

    DBusMessage *msg = 0;
    const QDBusMessagePrivate *d_ptr = message.d_ptr;

    switch (d_ptr->type) {
    case DBUS_MESSAGE_TYPE_INVALID:
        //qDebug() << "QDBusMessagePrivate::toDBusMessage" <<  "message is invalid";
        break;
    case DBUS_MESSAGE_TYPE_METHOD_CALL:
        // only service and interface can be empty -> path and name must not be empty
        if (!d_ptr->parametersValidated) {
            if (!QDBusUtil::checkBusName(d_ptr->service, QDBusUtil::EmptyAllowed, error))
                return 0;
            if (!QDBusUtil::checkObjectPath(d_ptr->path, QDBusUtil::EmptyNotAllowed, error))
                return 0;
            if (!QDBusUtil::checkInterfaceName(d_ptr->interface, QDBusUtil::EmptyAllowed, error))
                return 0;
            if (!QDBusUtil::checkMemberName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error, "method"))
                return 0;
        }

        msg = q_dbus_message_new_method_call(data(d_ptr->service.toUtf8()), d_ptr->path.toUtf8(),
                                             data(d_ptr->interface.toUtf8()), d_ptr->name.toUtf8());
        q_dbus_message_set_auto_start( msg, d_ptr->autoStartService );
        break;
    case DBUS_MESSAGE_TYPE_METHOD_RETURN:
        msg = q_dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN);
        if (!d_ptr->localMessage) {
            q_dbus_message_set_destination(msg, q_dbus_message_get_sender(d_ptr->reply));
            q_dbus_message_set_reply_serial(msg, q_dbus_message_get_serial(d_ptr->reply));
        }
        break;
    case DBUS_MESSAGE_TYPE_ERROR:
        // error name can't be empty
        if (!d_ptr->parametersValidated
            && !QDBusUtil::checkErrorName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error))
            return 0;

        msg = q_dbus_message_new(DBUS_MESSAGE_TYPE_ERROR);
        q_dbus_message_set_error_name(msg, d_ptr->name.toUtf8());
        if (!d_ptr->localMessage) {
            q_dbus_message_set_destination(msg, q_dbus_message_get_sender(d_ptr->reply));
            q_dbus_message_set_reply_serial(msg, q_dbus_message_get_serial(d_ptr->reply));
        }
        break;
    case DBUS_MESSAGE_TYPE_SIGNAL:
        // nothing can be empty here
        if (!d_ptr->parametersValidated) {
            if (!QDBusUtil::checkObjectPath(d_ptr->path, QDBusUtil::EmptyNotAllowed, error))
                return 0;
            if (!QDBusUtil::checkInterfaceName(d_ptr->interface, QDBusUtil::EmptyAllowed, error))
                return 0;
            if (!QDBusUtil::checkMemberName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error, "method"))
                return 0;
        }

        msg = q_dbus_message_new_signal(d_ptr->path.toUtf8(), d_ptr->interface.toUtf8(),
                                        d_ptr->name.toUtf8());
        break;
    default:
        Q_ASSERT(false);
        break;
    }

    // if we got here, the parameters validated
    // and since the message parameters cannot be changed once the message is created
    // we can record this fact
    d_ptr->parametersValidated = true;

    QDBusMarshaller marshaller(capabilities);
    QVariantList::ConstIterator it =  d_ptr->arguments.constBegin();
    QVariantList::ConstIterator cend = d_ptr->arguments.constEnd();
    q_dbus_message_iter_init_append(msg, &marshaller.iterator);
    if (!d_ptr->message.isEmpty())
        // prepend the error message
        marshaller.append(d_ptr->message);
    for ( ; it != cend; ++it)
        marshaller.appendVariantInternal(*it);

    // check if everything is ok
    if (marshaller.ok)
        return msg;

    // not ok;
    q_dbus_message_unref(msg);
    *error = QDBusError(QDBusError::Failed, QLatin1String("Marshalling failed: ") + marshaller.errorString);
    return 0;
}
Example #10
0
int
Marshal( const cMarshalType *type, const void *d, void *b )
{
  if ( IsSimpleType( type->m_type ) )
     {
       return MarshalSimpleType( type->m_type, d, b );
     }

  int                  size   = 0;
  const unsigned char *data   = d;
  unsigned char       *buffer = b;

  switch( type->m_type )
     {
       case eMtArray:
	    {
	      const size_t nelems = type->u.m_array.m_nelements;

	      size_t i;
	      for( i = 0; i < nelems; i++ )
		 {
	           const cMarshalType *elem = type->u.m_array.m_element;
	           const size_t elem_sizeof = type->u.m_array.m_element_sizeof;

		   int cc = Marshal( elem, data, buffer );
		   if ( cc < 0 )
		      {
			   CRIT( "Marshal: %s[%d]: failure, cc = %d!", type->m_name, i, cc );
			   return cc;
		      }

		   data   += elem_sizeof;
		   buffer += cc;
		   size   += cc;
		 }
	    }
	    break;

       case eMtStruct:
	    {
	      const cMarshalType *elems = &type->u.m_struct.m_elements[0];
	      size_t i;
	      for( i = 0; elems[i].m_type == eMtStructElement; i++ )
		 {
		   const cMarshalType *elem = elems[i].u.m_struct_element.m_element;
		   const size_t offset      = elems[i].u.m_struct_element.m_offset;
		   int cc = 0;

		   if ( elem->m_type == eMtUnion )
		      {
			const size_t mod2_idx = elem->u.m_union.m_mod_idx;
			const size_t mod2 = GetStructElementIntegerValue( type, mod2_idx, data );
			const cMarshalType *elem2 = GetUnionElement( elem, mod2 );
			if ( !elem2 ) {
 	                    CRIT( "Marshal: %s:%s: invalid mod value %u!",
			          type->m_name, elems[i].m_name, (unsigned int)mod2 );
			    return -EINVAL;
			}

			cc = Marshal( elem2, data + offset, buffer );
			if ( cc < 0 )
			   {
			     CRIT( "Marshal: %s:%s, mod %u: failure, cc = %d!",
			           type->m_name, elems[i].m_name, (unsigned int)mod2, cc );
			    return -EINVAL;
			   }
		      }
		   else if ( elem->m_type == eMtVarArray )
		      {
			const size_t nelems2_idx   = elem->u.m_var_array.m_nelements_idx;
			const cMarshalType *elem2  = elem->u.m_var_array.m_element;
			const size_t elem2_sizeof  = elem->u.m_var_array.m_element_sizeof;
			const size_t nelems2 = GetStructElementIntegerValue( type, nelems2_idx, data );

			// (data + offset ) points to pointer to var array content
			const unsigned char *data2;
			memcpy(&data2, data + offset, sizeof(void *));

			unsigned char *buffer2 = buffer;
			size_t i2;
			for( i2 = 0; i2 < nelems2; i2++ )
			   {
			     int cc2 = Marshal( elem2, data2, buffer2 );
			     if ( cc2 < 0 )
				{
			          CRIT( "Marshal: %s:%s[%d]: failure, cc = %d!",
			                 type->m_name, elems[i].m_name, i2, cc2 );
				  return cc2;
				}

			     data2   += elem2_sizeof;
			     buffer2 += cc2;
			     cc      += cc2;
			   }
		      }
		   else
		      {
			cc = Marshal( elem, data + offset, buffer );
			if ( cc < 0 )
			   {
			     CRIT( "Marshal: %s:%s: failure, cc = %d!",
			           type->m_name, elems[i].m_name, cc );
			     return cc;
			   }
		      }

		   buffer += cc;
		   size   += cc;
		 }
	    }
	    break;

       case eMtUserDefined:
	    {
	      tMarshalFunction marshaller = type->u.m_user_defined.m_marshaller;
	      void * user_data = type->u.m_user_defined.m_user_data;
	      size = marshaller ? marshaller( type, d, b, user_data ) : 0;
            }
	    break;

       default:
	    return -ENOSYS;
     }

  return size;
}