Click on the following link to download the example: TextMTM.zip
Click: browse to view the example code.
The files reproduced here are the main files contained in the examples directory. Some extra files may be needed to run the examples, and these will be found in the appropriate examples directory.
The Server-side Text MTM simulates with the local file system the actions normally undertaken by a message transport protocol. A Text service entry maps a local file directory, from which message header information can be obtained (in a similar fashion to POP3), and from which messages can be get and put.
A file or folder in the mapped directory is regarded as a remote entry, and recorded by an entry in the message index. The name of the file to which a message corresponds is stored in the index Description field, and the full folder path in the index Details field. No message store is associated with these remote entries.
Under a local folder, for example, the Inbox, each message has a message store that contains a rich text stream representing the body text.
Messages can be deleted, moved, or copied. When a local message to transferred to a Text service, the Server-side MTM constructs a new file, obtaining its name and location from the index fields. When the transfer is from the service to a local folder, the Server-side MTM creates a rich text stream and reads the file text into it.
The Text server DLL currently supports one MTM-specific
operation, KTXTMTMRefresh
, which refreshes the folder
tree below a service entry.
CMsvServerEntry
TMsvId
CMsvEntrySelection
Move,
copy, and delete operations all operate on a collection of message
entries, often involving creating new index entries, and deleting
existing ones. This common functionality is provided by the class CTxtCopyMoveBase
.
A CTxtCopyMoveBase
instance is provided with an object to perform the specific operation
required. The classes CTxtCopyToLocalOp
, CTxtCopyFromLocalOp
, CTxtCopyWithinServiceOp
, CTxtMoveToLocalOp
, CTxtMoveFromLocalOp
, CTxtMoveWithinServiceOp
and CTxtDeleteOp
each define the functionality for a specific operation.
Each of these classes is derived from CTxtActiveOper
. The move operation classes are derived from their copy counterparts,
and add the extra deletion after copying.
The contents of folders under the file system can be changed at any time outside of the application, by the user or some other application. In order for these changes to be visible in the messaging application, the Server-side MTM provides a refresh capability.
The refresh
capability is provided by the refresher class CTxtRefreshMBox
. It ensures that the current entries accurately reflect the state
of the corresponding file folder, adding or removing entries under
the service as required.