Add keyless topics with small payloads to ddsperf
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
c603fdd4ed
commit
210fa7e78f
2 changed files with 48 additions and 14 deletions
|
@ -53,7 +53,9 @@ enum topicsel {
|
|||
KS, /* KeyedSeq type: seq#, key, sequence-of-octet */
|
||||
K32, /* Keyed32 type: seq#, key, array-of-24-octet (sizeof = 32) */
|
||||
K256, /* Keyed256 type: seq#, key, array-of-248-octet (sizeof = 256) */
|
||||
OU /* OneULong type: seq# */
|
||||
OU, /* OneULong type: seq# */
|
||||
UK16, /* Unkeyed16, type: seq#, array-of-12-octet (sizeof = 16) */
|
||||
UK1024/* Unkeyed1024, type: seq#, array-of-1020-octet (sizeof = 1024) */
|
||||
};
|
||||
|
||||
enum submode {
|
||||
|
@ -317,6 +319,8 @@ union data {
|
|||
Keyed32 k32;
|
||||
Keyed256 k256;
|
||||
OneULong ou;
|
||||
Unkeyed16 uk16;
|
||||
Unkeyed1024 uk1024;
|
||||
};
|
||||
|
||||
static void verrorx (int exitcode, const char *fmt, va_list ap)
|
||||
|
@ -529,6 +533,14 @@ static void *init_sample (union data *data, uint32_t seq)
|
|||
case OU:
|
||||
data->ou.seq = seq;
|
||||
break;
|
||||
case UK16:
|
||||
data->uk16.seq = seq;
|
||||
memset (data->uk16.baggage, 0xee, sizeof (data->uk16.baggage));
|
||||
break;
|
||||
case UK1024:
|
||||
data->uk1024.seq = seq;
|
||||
memset (data->uk1024.baggage, 0xee, sizeof (data->uk1024.baggage));
|
||||
break;
|
||||
}
|
||||
return baggage;
|
||||
}
|
||||
|
@ -791,10 +803,12 @@ static uint32_t topic_payload_size (enum topicsel tp, uint32_t bgsize)
|
|||
uint32_t size = 0;
|
||||
switch (tp)
|
||||
{
|
||||
case KS: size = 12 + bgsize; break;
|
||||
case K32: size = 32; break;
|
||||
case K256: size = 256; break;
|
||||
case OU: size = 4; break;
|
||||
case KS: size = 12 + bgsize; break;
|
||||
case K32: size = 32; break;
|
||||
case K256: size = 256; break;
|
||||
case OU: size = 4; break;
|
||||
case UK16: size = 16; break;
|
||||
case UK1024: size = 1024; break;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
@ -814,13 +828,15 @@ static bool process_data (dds_entity_t rd, struct subthread_arg *arg)
|
|||
uint32_t seq = 0, keyval = 0, size = 0;
|
||||
switch (topicsel)
|
||||
{
|
||||
case KS: {
|
||||
KeyedSeq *d = (KeyedSeq *) mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, d->baggage._length);
|
||||
case KS: {
|
||||
KeyedSeq *d = mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, d->baggage._length);
|
||||
break;
|
||||
}
|
||||
case K32: { Keyed32 *d = (Keyed32 *) mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case K256: { Keyed256 *d = (Keyed256 *) mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case OU: { OneULong *d = (OneULong *) mseq[i]; keyval = 0; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case K32: { Keyed32 *d = mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case K256: { Keyed256 *d = mseq[i]; keyval = d->keyval; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case OU: { OneULong *d = mseq[i]; keyval = 0; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case UK16: { Unkeyed16 *d = mseq[i]; keyval = 0; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
case UK1024: { Unkeyed1024 *d = mseq[i]; keyval = 0; seq = d->seq; size = topic_payload_size (topicsel, 0); } break;
|
||||
}
|
||||
(void) check_eseq (&eseq_admin, seq, keyval, size, iseq[i].publication_handle);
|
||||
if (iseq[i].source_timestamp & 1)
|
||||
|
@ -1883,6 +1899,8 @@ int main (int argc, char *argv[])
|
|||
else if (strcmp (optarg, "K32") == 0) topicsel = K32;
|
||||
else if (strcmp (optarg, "K256") == 0) topicsel = K256;
|
||||
else if (strcmp (optarg, "OU") == 0) topicsel = OU;
|
||||
else if (strcmp (optarg, "UK16") == 0) topicsel = UK16;
|
||||
else if (strcmp (optarg, "UK1024") == 0) topicsel = UK1024;
|
||||
else error3 ("%s: unknown topic\n", optarg);
|
||||
break;
|
||||
case 'M': maxwait = atof (optarg); if (maxwait <= 0) maxwait = HUGE_VAL; break;
|
||||
|
@ -1970,10 +1988,12 @@ int main (int argc, char *argv[])
|
|||
const dds_topic_descriptor_t *tp_desc = NULL;
|
||||
switch (topicsel)
|
||||
{
|
||||
case KS: tp_suf = "KS"; tp_desc = &KeyedSeq_desc; break;
|
||||
case K32: tp_suf = "K32"; tp_desc = &Keyed32_desc; break;
|
||||
case K256: tp_suf = "K256"; tp_desc = &Keyed256_desc; break;
|
||||
case OU: tp_suf = "OU"; tp_desc = &OneULong_desc; break;
|
||||
case KS: tp_suf = "KS"; tp_desc = &KeyedSeq_desc; break;
|
||||
case K32: tp_suf = "K32"; tp_desc = &Keyed32_desc; break;
|
||||
case K256: tp_suf = "K256"; tp_desc = &Keyed256_desc; break;
|
||||
case OU: tp_suf = "OU"; tp_desc = &OneULong_desc; break;
|
||||
case UK16: tp_suf = "UK16"; tp_desc = &Unkeyed16_desc; break;
|
||||
case UK1024: tp_suf = "UK1024"; tp_desc = &Unkeyed1024_desc; break;
|
||||
}
|
||||
snprintf (tpname_data, sizeof (tpname_data), "DDSPerf%cData%s", reliable ? 'R' : 'U', tp_suf);
|
||||
snprintf (tpname_ping, sizeof (tpname_ping), "DDSPerf%cPing%s", reliable ? 'R' : 'U', tp_suf);
|
||||
|
|
|
@ -4,6 +4,20 @@ struct OneULong
|
|||
};
|
||||
#pragma keylist OneULong
|
||||
|
||||
struct Unkeyed16
|
||||
{
|
||||
unsigned long seq;
|
||||
octet baggage[12];
|
||||
};
|
||||
#pragma keylist Unkeyed16
|
||||
|
||||
struct Unkeyed1024
|
||||
{
|
||||
unsigned long seq;
|
||||
octet baggage[1020];
|
||||
};
|
||||
#pragma keylist Unkeyed1024
|
||||
|
||||
struct Keyed32
|
||||
{
|
||||
unsigned long seq;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue