Overview of the LiMo Messaging Plug-insPlug-ins Classifying Plug-insThere are two dimension to classify plug-ins. The first dimension classifies the plug-in according to the following two categories:
The next figure shows the messaging system and the role of the Messaging Framework, plug-ins and applications in creating and receiving messages.
Messaging System Architecture Filter Plug-inThere are two groups of functionality that filter plug-ins provide:
Transport Plug-inThe transport plug-in is a bridge between the framework and the network. There are two occasions when this plug-in is used:
Framework Storage Plug-inThe framework storage plug-in provides the storage related functionality, such as adding, updating, deleting, querying, counting, moving and getting common information of messages, accounts and folders. This common information is a collection of the generic information from each service-specific message plug-in storage, such as SMS, MMS, Email, and i-Mode messaging. The detail data will be stored in service-specific message storage plug-in. Please refer to Message storage plug-in.The purpose of creating the common information is for improving performance. The functions, such as adding, updating, deleting, moving data, in framework storage plug-ins will be called by message storage plug-in's corresponding functions to synchronize common information. The other functions of Framework Storage Plug-in, such as querying and sorting, will be called directly by MAPI Storage corresponding methods for performance reasons. The definition of this interface is in Msg_Framework_Storage_Interface.h. Message Storage Plug-inEach service-specific message storage plug-in provides the service-specific storage related functionality, such as adding, updating, deleting, moving and getting detail information of messages and accounts. Each service-specific message storage plug-in has its own detail information of message and account.The purpose of creating the service-specific message detail information is to store the service-specific data. For example, the SMS storage plug-in has the specific knowledge on SMS format, and additional data that generic message structure does not cover. Each function of the message storage plug-in will be called by the corresponding functions in MAPI storage APIs. The functions in message storage plug-in, such as adding, updating, deleting, and moving data, SHOULD call framework storage plug-in's corresponding methods to synchronize common information. The definition of this interface is in Msg_Plugin_Storage_Interface.h. Storage RegistryRegistry file information has the following format:[Groupname] mediatype= storeId= canDeregister= name= path=
[storage-registry-item1] mediatype=1 storeId=2 canDeregister=0 name= *** path=/usr/local/... [storage-registry-item2] mediatype=2 storeId=1 canDeregister=1 name= *** path=/usr/local/...
There is only one storage registry file. All storage id information shall be written into it. Application developers MUST predefine standard storage ids and write the supported storage information into the storage registry file. Storage SubsystemThe following diagram represents the storage subsystem architecture.
Storage Subsystem Architecture Option 1 Alternately, you can combine the framework storage plug-in and the message storage plug-in into one, as the diagram below shows.
Storage Subsystem Architecture Option 2 Plug-in ConfigurationPlug-in developers MUST provide a plug-in configuration file in the following format:
[Groupname] type= name= capability= alive= language= queryrule= sorttype= Note: queryrule and sorttype are used only for framework storage plug-in configuration. The rest of the fields are for all plug-ins.
[limo-transport-sms] type=1 name=/usr/lib/libsmstransprovider.so capability=2:0,2:1 alive=0 language=c Suppose a filter plug-in supports the following filter ids: 1, 2, 3, 4, and 5. The configuration item should look like the following:
[limo-filter] type=1 name=/usr/lib/libfilter.so capability=1,2,3,4,5 alive=0 language=c
There is only one plug-in configuration file. All plug-ins' information shall be written there. Plug-in InterfacesThe following table describes the interfaces that plug-in developers must implement.
Generated on Mon Mar 31 01:01:00 2008 by
1.5.4
|