Message Stores

The SMS stack uses the following stores to store a complete message.

Segmentation and reassembly (SAR) stores

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.

Segmentation 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.

Reassembly store

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.

Class 0 reassembly 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.