transfering images: maximum marshaling size?
Tom Kelly
thomas.kelly@queens.oxford.ac.uk
Thu, 26 Feb 1998 09:01:58 +0000 (GMT)
> I've been playing around with transferring images through CORBA
> interfaces in OmniORB 2.4. In order to test the speed, I was sending
> images of various sizes.
>
> The results have been reasonably good, as long as the image doesn't get
> too large. For example, a 1200 x 1200 x 8bpp image is transferred in
> 0.542 seconds between a server and client in different processes on the
> same system. This is the time from when the request is made to when the
> data is received and unpacked into the native (non CORBA) image format.
>
> But, changing to an image of size 1500 x 1500 x 8bpp, I get an exception
> IDL:omg.org/CORBA/MARSHAL (it's a CORBA::SystemException). I'm not
> sure where exactly this is being thrown... Is there a maximum size for
> OmniORB marshaled objects, and where can I find information about this?
I've done something like this is the past. There is a maximum size placed
on GIOP message sizes. Page 35 of the omniORB manaul gives you the
information you need. Quoting:
"omniORB2 sets a limit on the GIOP message size that can be sent or
received. The value can be obtained by calling:
size_t omniORB::MaxMessageSize();
and can be changed by:
void omniORB::MaxMessageSize(size_t newvalue);
The exact value is somewhat arbitrary. The reason such a limit exists is
to provide some way to protect the server side from resource exhaustion.
Think about the case when the server receives a rogue GIOP(IIOP) request
message that contains a sequence length field set to 2**31. With a
reasonable message size limit, the server can reject this rogue message
straight away."
Just use the MaxMessageSize function to set a higher GIOP message size
limit.
Hope that Helps,
Tom