Hi Petteri, On 09/06/2010 11:10 AM, Petteri Tikander wrote: > Hi Denis, > > I'm implementing expiration-logic for status report and have couple of > questions. > > My expiration function under development goes through every > addresses and corresponding messages (nodes) from hash-tables, and checks > the expiration time. But when finding expired message, it cannot remove > corresponding backup-files, because in this moment backup-file contains the > whole sms-addressing information (address+numbering plan+number type), but key > of the hash-table (sms-address) doesn't. So, first I thought simply to add also > numbering plan+number type in the hash-key. So what do you think, could it be > a good idea (to include the complete address, but to waste more memory)? OK, I > can also change the function to find backup-file by not taking into account > numbering plan+number type at all. For example, I can go through backup-files, > capture just the sms-address (and message-id), and then search the correct > node from the hash-table (not necessarily nice solution). oFono supports sending SMS messages only to international (prefixed by +) or 'unknown' (not prefixed by +) numbers. So you can actually easily figure out the ton/npi and number based on the address string. This is in effect what sms_address_to_hex_string does... > > The another question is: is it enough in this moment just to implement > expiration function (and some unit-tests), as in existing sms-assembly > solution, when waiting for incoming sms-delivery messages? Seems that in the > case of sms-assembly, expiration-status for all messages is polled in some > interval. So, possibly you have already earlier discussed about this issue, > but how expiration-checking is signaled to sms-util? Will oFono-api take care > internally of triggering the expiration-status some how? Or, will oFono-api > receive expiration-checking calls outside oFono via D-bus. > For now it is enough just to implement the expiration function and a unit test. We still need to hook this up into the core somewhere. Most likely it will be a 24 hour timer and we'll also run expiration at startup if more than 24 hours have elapsed since the last check. e.g. something like: LastExpiration = settings.LastExpiration if (LastExpiration - now > 24 hours) run expiration LastExpiration = now set timer until LastExpiration + 24 hours. Regards, -Denis