Symbian3/SDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-59217FA7-3078-53CA-88B3-78D6FB788271" xml:lang="en"><title>Message
Type Module Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Message Type Modules (MTMs) are polymorphic DLL plug-ins that implement
the interfaces defined by the Message Server framework to handle various message
types—such as, IMAP4, POP3, SMTP, SMS and MMS. </p>
<section><title>Purpose</title> <p>Client applications can access different
types of message and every message type must handled in a specific way. To
support a new message type within the client applications, MTMs to implement
that type must be provided. The following points are specific to each message
type, and so must be implemented in an MTM: </p> <ul>
<li id="GUID-B47F5D1A-1C45-56FE-8074-D48F8B72AA58"><p>Message structure </p> </li>
<li id="GUID-39DEC177-3210-5ED2-8095-32728E33EF7A"><p>User interface requirements </p> </li>
<li id="GUID-3BA20B3C-0922-515D-8E11-B5A7336CE263"><p>Addressing mechanism </p> </li>
<li id="GUID-3ADE85A9-3BF2-50F0-9A94-01002A440CF9"><p>Error handling mechanism </p> </li>
<li id="GUID-E0E95CA4-EB36-5D90-8313-CC608ED2ABF1"><p>MTM DLL information </p> </li>
</ul> <p>A Message Server abstraction that is used to locate and load particular
MTM components. </p></section>
<section><title>Description</title> <p>The MTM architecture is the plug-in
scheme provided by the Messaging Framework to integrate different message
transports to the Message Server. The plug-in scheme consists of four interfaces,
the UI MTM, UI Data MTM, Client MTM and Server MTM. </p> <ul>
<li id="GUID-A2763364-A20D-52B4-99FB-5D08747C22B4"><p>Client MTM manages the
message type’s data model, providing the UI MTM and client applications with
interfaces to access and to search for messages. </p> </li>
<li id="GUID-BCF8AD0F-42D9-55D3-92DE-998FBD97E5E9"><p>User Interface (UI)
Data MTM provides icons, menu text and a list of capabilities for a message
type. </p> </li>
<li id="GUID-66AFF19F-1ED2-5AF4-A079-5C8B5344E557"><p>User Interface (UI)
MTM implements the user interface required for the message type, including
a viewer, editor and dialog settings. </p> </li>
<li id="GUID-6C73D1B2-A6F6-5F26-A814-6BD38F43DE3B"><p>Server MTM provides
message transport over the network and manages a queue of outstanding client
requests, and ensures that more than one message of a given type is sent simultaneously. </p> </li>
</ul> <p>Each of the MTM DLLs is a polymorphic DLL that exports an instance
of a system-defined base class. The Message Server and client applications
use these base class interfaces to access MTM functionality in a generic and
extensible way. The MTM in turn implements a specialized version of the class
to provide specific message type functionality. </p> <p>Client applications
can load and use the UI MTM, UI Data MTM and Client MTM DLLs. The DLLs are
loaded within the client’s process space. The Server MTM DLLs are loaded within
the Message Server process. The Messaging Middleware architecture allows clients
to access the combined functionality of the Message Server and the Server
MTMs through a single server interface. The following figure shows the MTM
architecture. </p> <fig id="GUID-D9869871-08F2-5601-8A9C-1871D2AB4E1B">
<title>              MTM architecture            </title>
<image href="GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e278090_href.jpg" placement="inline"/>
</fig> </section>
<section><title>Message Server and MTMs</title> <p>The following figure shows
the relationship between the Message Server and MTMs. The grey classes are
realisations of the MTM interfaces defined by the Messaging Framework. The
Message Server depends on the Server MTM interface and controls access to
message data and delegates protocol-specific requests to Server side MTMs.
Messaging clients depend on the Client, UI and UI Data MTM interfaces and
the Message Server client API. </p> <fig id="GUID-F743115B-6934-5026-9D15-8DA5BE3A2D6F">
<title>              Relationship between Message Server and MTMs        
   </title>
<image href="GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e278106_href.jpg" placement="inline"/>
</fig> </section>
<section><title>MTM class summary</title> <p>Messaging Middleware provides
the following base classes, which defines the component interfaces for MTM
implementations. </p> <ul>
<li id="GUID-B72EC9B2-DC51-502F-A23C-303597405B13"><p>The base class for UI
MTMs is <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref>. </p> </li>
<li id="GUID-5549337B-621D-52F0-A19F-A0EA61816486"><p>The base class for UI
Data MTMs is <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref>. </p> </li>
<li id="GUID-D2E07F67-69DF-54A8-A7E2-3EA64FD74D3C"><p>The base class for Client
MTMs is <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref>. </p> </li>
<li id="GUID-42B1BC77-0D29-5627-93C2-CDCC02417B2F"><p>The base class for Server
MTMs is <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref>. </p> </li>
</ul> <p> <b> Important:</b> MTMs can also provide message type-specific functionality
that is not defined by the base class interfaces. For example, for IMAP4,
perform a full synchronization with a remote service; for POP3, connect to
a remote server and download messages. The APIs for the client interfaces
are extensible through run time type information provided by the <xref href="GUID-B3B2885E-DB79-3047-BCD9-C2A9BF08F5FD.dita"><apiname>QueryCapability</apiname></xref> API,
and the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> and <xref href="GUID-88DEB665-B4B1-3F73-A2A9-44E72C8514B4.dita"><apiname>InvokeSyncFunction</apiname></xref> APIs. </p> <p>For
information on how to implement the base classes, see the <xref href="GUID-F3E5D412-BEB5-4E0F-9CDE-1DF3F9302BC3.dita">Implementing
MTMs</xref>. </p> </section>
<section><title>MTM functions</title><p>The MTM DLLs provide the following
functions. MTMs implement them according to the requirements for the message
type: </p><ul>
<li id="GUID-56E24547-DA0C-5B01-B68C-4A928D07802F"><p>Querying functionality </p> <p>Allow
the client applications to query the supported functionality for the message
type. For example, the maximum message size or whether attachments are supported. </p> </li>
<li id="GUID-110AFD4C-09D8-585D-B078-6DCD1A4525B4"><p>Message management functionality </p> <p>Allow
the client applications to manage the messages, for example, to send, reply
and forward messages. </p> </li>
<li id="GUID-92F32F80-8E5F-56F9-B35B-99A2934C50E5"><p>Attachment management
functionality </p> <p>Allow the client applications to handle attachments.
For example, to add, remove or create an attachment for a particular message. </p> </li>
</ul></section>
</conbody><related-links>
<link href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita"><linktext>Message Server
and Store</linktext></link>
<link href="GUID-400E4702-973A-5CAC-9F9C-3A10121F856A.dita"><linktext>Types of
MTM</linktext></link>
<link href="GUID-F3E5D412-BEB5-4E0F-9CDE-1DF3F9302BC3.dita"><linktext>Implementing
MTMs</linktext></link>
</related-links></concept>