The SMS stack uses the following stores to store a complete message.
The SMS messages are sent as PDUs and all the PDUs are required to display the message to the user. The PDUs should be stored until all the PDUs are received by the device. The SMS stack stores the incomplete message PDUs in message stores for persistence storage. The segmentation store and the reassembly store are both created by the GSMU DLL. The message stores are also used to store the WAP datagrams.
TSAREntry
provides
information that is useful for the clients to segment and reassemble the SMS
messages and WAP datagrams. TSAREntry provides information about the reference,
total number of parts and the index of the parts of the complete message or
datagram.
TSAREntry
class also provides get and
set methods for four non generic data items in a message.
The CSARStore
provides
the methods to create the SAR stores and store the information useful for
segmentation and reassembly. The CSARStore
contains a permanent
store and a list of TSAREntry
elements. The member functions
of the CSARStore
allow the client applications to create
a new store, add an entry, update an entry and delete the store.
The CSARStore
creates the segmentation
store as smssegst.dat
. The SMS message is split into individual
PDUs before sending them to the network. The segmentation store is used to
store the PDUs. The segmentation store enables the client applications to
receive the status report of the PDUs.
Segmentation store data
The clients can implement segmentation
store using CSmsSegmentationStore class. CSegmentationStore is
derived from CSARStore
. The segmentation store is generally
used to store SUBMIT
and COMMAND
PDUs. The
PDUs are stored as additional stream ID in the store. Each stream ID contains
the SMS address, SMS message and an array of status reference items. The segmentation
store creates a log of all sent and unsent PDUs with a log ID. The SMS stack
uses the log ID to resend the message PDUs which failed.
The CSARStore
class creates the reassembly
store as smsreast.dat
. The reassembly store is used to individual
PDUs when received from the network. Once all the PDUs of a message are received
they are reassembled by the SMS stack. A complete message is then created,
the message is ready for the client applications.
Reassembly store data
The clients can implement the reassembly store using CSmsReassemblyStore class. The CSmsReassembly class is derived from CSARStore. The CSmsReassemblyStore class provides methods that can be used by the client applications to search for a PDU, update a existing PDU, clear the store and compact the store.
The normal SMS store are not designed to handle Class 0 SMS. A new class 0 reassembly store is available to handle the class 0 SMS messages in out of disk conditions. The class 0 reassembly store contains two stores 1) A permanent file store and 2) Pre-allocated file store. The pre allocated file store is reserved exclusively for the class 0 SMS. The pre-allocated file store can be configured to reserve for pre-defined number of PDUs. The pre-allocated store can only be configured by the licensees of Symbian platform. In normal conditions the message PDUs are stored in the permanent file store. In out of disk conditions it is not possible to delete older PDUs in the permanent files store. The SMS stack uses the pre-allocated store during the out of disk conditions. When the number of PDUs exceed the specified level in the ESK file, the SMS stack deleted the older PDUs to clear up space for the new incoming PDUs. The pre-allocated file store cannot be used to store other class/ type of SMS messages. CClass0SmsReassemblyStore store provides the required methods for the clients to use the class 0 reassembly store. The class 0 reassembly store provides the same functionality as the reassembly store. The additional functionality is that the client applications are able to process an incomplete message and display it to the users.