Unbounded arrays and sequences

8 posts / 0 new
Last post
Offline
Last seen: 10 years 1 month ago
Joined: 11/04/2013
Posts: 2
Unbounded arrays and sequences

Hello,

I am evaluating Connext. It is a big disappointment for my application to find that Connext apparently does not support unbounded sequences. I need to support sequences with bounds in principle up to 2^31 - 1. I can discourage their use, and expect them to be very rare, but cannot just decline to support them. If used, they must cost what they cost. Moreover, they may occur inside of complex types.

1. Am I correct that a User Data Type cannot contain an array with more than 32,767 elements, period?

The only workaround I can see is to do my own serialization and transmit a single large object as a coherent and send-ordered sequence of updates to a smaller object that represents a segment of the serialized byte array. If that is the answer, then I will probably end up not making use of the User Data Type system at all.

2. Is there a better solution?

Thank you,

Chris

Organization:
Offline
Last seen: 10 years 1 month ago
Joined: 11/04/2013
Posts: 2

On second thought for 2, I'll probably convert the big objects to a relational tables representation whose rows are User Data types in Connext.

sara's picture
Offline
Last seen: 1 year 3 months ago
Joined: 01/16/2013
Posts: 128

Hi Chris,

We are releasing a new RTI Connext DDS version that is compatible wiht unboudned arrays and sequences. It is planned for later this month. I hope this is still useful for you.


Thanks,

Sara

Gerardo Pardo's picture
Offline
Last seen: 1 day 12 hours ago
Joined: 06/02/2010
Posts: 601

Hi Chris,

As Sara mentioned in Connext DDS 5.1 (and earlier) sequences must have a maximum length. If you specify an unbounded sequence in your IDL then a configurable default is used. Despite this Connext DDS 5.1 does support sending sequences much larger than 32767 elements. You just need to declare the maximum size you want. So the anwer to your first question is no.

For example:

 const MAX_LEN = 100000;
 
 struct MyTypeWithLargeSeq {
    sequence<octet, MAXLEN> octet_seq;
    sequence<long, MAX_LEN> long_seq;
};

Despite the maximum size, only the actual length will be sent or received. However the memory allocation on the sender and receiver side will allocate each data-samplet to its maximum potential size. This can result on a high use of memory.

With Connext 5.2 we support true unbounded sequence. These sequences have no hard-coded limit. And equally important the memory allocation for each data-sample is trimmed to the actual size. This saves a lot of memory.

Please contact RTI sales if you need access to this feature before the official release of RTI Connext 5.2 later this month. We have evaluation versions of this feature already available both for 5.1 and 5.2 but you need to be explicitely enabled to access these versions.

Gerardo

Offline
Last seen: 3 years 9 months ago
Joined: 09/10/2010
Posts: 32

Hello Chris,

My name is Bert Farabaugh, and I am a Field Applications Engineer for RTI.  I am available to help you with any questions you may have related to DDS and our implementation.  Please feel free to contact me at :

bertf@rti.com

 

Thank you,

Bert

 

mpichini's picture
Offline
Last seen: 8 months 3 weeks ago
Joined: 09/16/2015
Posts: 27

Hi Gerardo,

I attended the webast that introduced Connext 5.2 and it is my understanding that unbounded sequence and string are not yet supported for the java language bidning.

Is there any planned release date for this feature to be available also for java binding ?

kind regards

 

Gerardo Pardo's picture
Offline
Last seen: 1 day 12 hours ago
Joined: 06/02/2010
Posts: 601

Hi Massimo,

This is considered high priority so it will definitely be in our next release (5.3). We do not have an external date for this yet.

Given the priority we are also considering whether this is something we can include in the 5.2 maintenance release we are plannung for sometime in Q1 2016. I will update this thread once we decide on this.

Gerardo

mpichini's picture
Offline
Last seen: 8 months 3 weeks ago
Joined: 09/16/2015
Posts: 27

Hi Gherardo,

thank you for your prompt answer.

Our DDS application is developed part in java and part in c++, so we are forced to define an upper bound value for all the sequences and strings until this feature won't be available also for the java binding.

Kind regards