Archived

This forum has been archived. Please start a new discussion on GitHub.

Byte sequence zero copy with AMD in Ice 3.4x

Hello,

I have a method that should return a data buffer (a sequence of bytes). To avoid unnecessary copies I am trying to use so-called zero-copy mode that is only available in AMD/AMI methods.

I have written the following Ice definition:
module Test {

sequence<byte> ByteSeq;
interface Resolver
{
["amd"] void getData(int id, out ["cpp:array"] ByteSeq data);
};
};

When I compile it, I get a header file that contains code that does not compile. Below is a sample of a portion where my compiler fails (line 190 of the generated file):

private:
void end_getData(::Test::ByteSeq& data, const ::Ice::AsyncResultPtr&);

void ___end_getData(::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& data, ??? __ret, const ::Ice::AsyncResultPtr&);

The example worked fine in Ice 3.3.1. I wanted to move to Ice 3.4.1 to be able to use the new AMI code. In Ice 3.3.1 I was only using AMD, not AMI.

Did I miss something ? I notice the odd behaviour in both Ice 3.4.0 and Ice 3.4.1.

Thanks in advance,

Julien

Comments

  • mes
    mes California
    Hi,

    Thanks for the bug report. We'll fix this in the next release.

    Regards,
    Mark