[mapguide-internals] Generating Xml for "Select Features"
Kenneth, GEOGRAF A/S
ks at geograf.dk
Tue Jun 26 07:25:55 EDT 2007
When using the "Select Features" from the Http API, the result comes
back in Xml.
The call chain is:
ProxyFeatureReader::ToXml()
MgByteSource::MgByteSource(char* data, int len)
ByteSourceMemoryImpl::ByteSourceMemoryImpl(char* data, int len)
MgByte::MgByte(char* data, int len, AllocatorType allocator)
When the size of the Xml to return grows, MgByte throws an exception in
line 34:
if (len > MgByte::MaxSize && allocator != MgByte::None)
{
throw new MgArgumentOutOfRangeException(L"MgByte.MgByte",
__LINE__, __WFILE__, NULL, L"", NULL);
}
This happens because the ByteSourceMemoryImpl does not pass an
AllocatorType argument, and thus defaults to MgByte::None.
A simple solution would be to fix this error in ByteSourceMemoryImpl,
but I don't have enough overview to see if this has other implications.
I will happily submit a patch for ByteSourceMemoryImpl, but is that an
acceptable solution?
I would prefer if the code was changed, so that
ProxyFeatureReader::ToXml() took a stream as input, and wrote to that
stream.
That would also improve response/perfomance time, as the current
implementation buffers the entire result, and also uses the std::string
+ operator, which has a high overhead for large strings.
Is the second solution something that could be accepted as a patch? I
so, I will happily submit a patch for it.
--
Regards, Kenneth, GEOGRAF A/S
More information about the mapguide-internals
mailing list