Re: New Features Question
Jonathan Houser <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
Benjamin,
> Well it's really up to you... but if you do decide to post the diff or
> a URL to the diff... other developers can eye the code and give you
> feedback (if they feel like it, of course).
Good idea. :) Here's the current location of said diff file.
http://66.255.55.23/interop.diff
If anyone knows of a better way to do the structure handling (ie.
submit_sm vs. data_sm and their items, ie. data_coding) in a better way,
it'd be much appreciated. I tried to do some dynamic casting with the
same code for both cases (only consolidated into one instance of said
code), just re-casting a void pointer to the individual structure with
no success. Most of the code is identical (ie. handling the "+",
checking the length, etc.). The big two-tier switch statement was the
best I could figure out with the deadline I had to get it working in.
An example of what I meant above is something like:
void* ptr;
...
switch (command_id)
{
case COMMAND_ID_SUBMIT_SM:
pdu = smpp_pdu_create(submit_sm,
counter_increase(smpp->message_id_counter));
ptr = &pdu->u.submit_sm;
#undef DYN_CAST
#define DYN_CAST struct submit_sm*
break;
case COMMAND_ID_DATA_SM:
pdu = smpp_pdu_create(data_sm,
counter_increase(smpp->message_id_counter));
ptr = &pdu->u.data_sm;
#undef DYN_CAST
#define DYN_CAST struct data_sm*
break;
...
((DYN_CAST)ptr)->source_addr = octstr_duplicate(msg->sms.sender);
((DYN_CAST)ptr)->destination_addr = octstr_duplicate(msg->sms.receiver);
I thought I was really smooth until I remembered that #define's
are pre-processor and essentially just lump the code into the place of
the token, thus the above only worked for data_sm as it's #define came
last. <sigh> I'd rather not duplicate 2-300 lines of code just because
of the structure's oddities. So like I said, if there are any tricks to
handling this struct of structs, please let me know.
> It's a free world. ;-) And yay for it!
Agreed. :P
Jon