$VER: 10.21 (28-Aug-93) COPYRIGHT This document is (C) 1992 by Martin Horneffer. It may freely be copied and distributed, as long as the text is unchanged and this copyright notice is left intact. GENERAL UMS stands for "Universal Message System". This means that UMS allows to treat and read all kinds of messages ('e-mail' and 'news') as universally and efficiently as possible. The user should not need to care about what network a message comes from or goes to/through and what format is used, he or she should be able to concentrate totally on the messages' contents. In order to achieve this goal, UMS does two things: 1) define an universal format for messages where messages in all formats and from all networks can be stored in without loss of information and nevertheless being randomly interchangeable. 2) implement a central, network-independent database-mamagement that allows to store and read/retrieve messages in the UMS format as efficiently as possible. For the message format, please read the separate documentation. The implementation of the Message Base Processor ('MBP') is based on the server/client- concept. Clients address the server to get or put messages. The server manages the storage and retrieval of messages and controls the different client's access-rights to the system. The common interface between client and server is a set of functions described in this document. Clients are - simple USERS that read and write messages (using programs called 'newsreaders'), - a special kind of user, the 'SYSOP', which has additional rights and tools to administer the system, - IMPORTERS, that get messages form other systems and put them into the local system after converting them to the UMS format, and - EXPORTERS, that look for all NEW messages in the system and send them to other systems after converting them into the specific format. The MBP controls which user may read what message and, in the same way, which exporter needs to export or forward what message. It cares about whether a message can or cannot be correctly sent to its destination. The MBP also performs dupe-checking and reply-chaining on Message-IDs. TAGS UMS uses some bit-masking in tag values to indicate some special types of tag data: if bit 13 is set (tag & 0x2000), the tag data is a STRPTR, i.e. a pointer to a null-terminated string. if bit 14 is set (tag & 0x4000), the tag is considered a 'var- parameter' (e.g. LONG *). I.e. the tag.data entry must contain a pointer to the real data, which will be set/changed by the called function. if both bits 13 and 14 are set ((tag & 0x6000)==0x6000), the tag is a pointer to a string pointer which will be set/changed (STRPTR *). if none of these bits is set, the data in most cases is a simple integer parameter (e.g. LONG or LONGBITS).