As part of an effort to convert a legacy system to DDS I'm working on a Routing Service Adapter that commmunicates over a socket with the legacy system. For messages that only go one place we just pull them off the wire and pull out some key fields to filter on but the message is basicly a variable length binary blob.
The .idl looks like this.
struct LegacyEvents
{
int32 message_type;
sequence<char,LEGACY_BODY_MAX_LENGTH> body;
};