<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Simon and Will, <br>
<br>
Sorry, juggling a lot here. I overlooked that in the docs (how? I'll
&nbsp;RTFM&nbsp; better next time) :-) Thanks for pointing it out. <br>
<br>
Well, I imagine 1-3 MB would be the absolute worst case scenario. I
just wanted to put some error handling on the server side. I think a
typical string size would be in the ballpark of 5-250k.&nbsp; <br>
<br>
What I've got is a model-view-controller design. A graphics program
(the controller and the first view) is communicating with a persistent
and interactive rendering program (the 2nd view). They're both reading
from the same geometric data set (the model). Now I want to send
commands to the interactive rendering program (the 2nd view) via dbus
to change the way the model is viewed/rendered (lighting, shading, and
etc.). I'd like to send the commands in the rendering program's native
format as I don't want that process burning cycles on anything but
keeping the rendering as interactive as possible. The other alternative
would be to send the data as variants and unpack and reformat them on
the client's (the rendering program's) side, which I think would be too
costly. If I separate the commands into individual ones and send them
one at a time, the strings should stay in the 1-2K range, which I am
hoping will not starve the rendering program. Does that sound like a
more reasonable use of dbus? :-)<br>
<br>
Ryan<br>
<br>
BTW, as a new user of dbus, I've got to say it rocks!<br>
<br>
<br>
Simon McVittie wrote:
<blockquote cite="mid:20100415100745.GA22158@reptile.pseudorandom.co.uk"
 type="cite">
  <pre wrap="">On Thu, 15 Apr 2010 at 10:48:50 +0100, Will Thompson wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">On 15/04/10 10:36, Ryan Heniser wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Can't find it in the docs. So, I'd assume the size is limited by memory
size, like most string implementations.
      </pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!---->
<a class="moz-txt-link-rfc2396E" href="http://dbus.freedesktop.org/doc/dbus-specification.html">&lt;http://dbus.freedesktop.org/doc/dbus-specification.html&gt;</a> says:

"Given all this, the types are marshaled on the wire as follows:
...
STRING. A UINT32 indicating the string's length in bytes excluding its
terminating nul, followed by non-nul string data of the given length,
followed by a terminating nul byte."

so you have a 2**32 byte limit imposed by the serialization format; but in a
D-Bus message,

"The maximum length of a message, including header, header alignment
padding, and body is 2 to the 27th power or 134217728"

which is 128MB.

The default session bus configuration allows messages this large (actually
larger, but I suspect the 128MB limit is also enforced):

/etc/dbus-1/session.conf:
  &lt;limit name="max_message_size"&gt;1000000000&lt;/limit&gt;

but the default system bus configuration does not override the hard-coded
default of 32MB, which limits it further:

bus/bus.c:
      parser-&gt;limits.max_message_size = _DBUS_ONE_MEGABYTE * 32;

(yes, this would be more visible if system.conf explicitly repeated all the
default settings).

  </pre>
  <blockquote type="cite">
    <pre wrap="">(But I'm suspicious of passing 3MB strings over D-Bus. :))
    </pre>
  </blockquote>
  <pre wrap=""><!---->
What Will said - there is likely to be a way to do this that doesn't involve
copying the string into the D-Bus daemon, then back out into the client,
checking it for UTF-8 validity at each step.

Regards,
    Simon
_______________________________________________
dbus mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freedesktop.org/mailman/listinfo/dbus">http://lists.freedesktop.org/mailman/listinfo/dbus</a>
  </pre>
</blockquote>
<br>
</body>
</html>