channel TestChannel {
   message {
      uint8 dummy_byte; // so structure is not aligned
      uint32 data_size;
      uint64 *data[data_size] @marshall;
   } ShortDataSubMarshall;

   message {
      int8 name[] @end;
   } ArrayMessage;

    message {
        uint8 res1 @zero;
        uint16 n;
        uint32 res2 @zero;
    } Zeroes;

    message {
        uint32 num_of_channels;
        uint16 channels[num_of_channels] @end;
    } @ctype(SpiceMsgChannels) channels_list;

    message {
        uint32 dummy[2];
        uint8 data[] @end;
    } LenMessage;
};

protocol Spice {
    TestChannel main = 1;
};
