Browse Prior Art Database

Message Interface Among Concurrent Processes Using an Abstract Data Type

IP.com Disclosure Number: IPCOM000060136D
Original Publication Date: 1986-Mar-01
Included in the Prior Art Database: 2005-Mar-08
Document File: 3 page(s) / 38K

Publishing Venue

IBM

Related People

Ebrahimi, M: AUTHOR [+4]

Abstract

An abstract data type is described for handling messages in a context in which the information to be communicated resides in program variables. The method provides a convenient interface between the high- level application environment and the underlying communication facility of the operating system. Consider a distributed programming environment in which processes communicate by sending messages to each other. A typical program written for this environment consists of code for local computation and code for handling of messages. The operating system usually provides the programmer with the necessary communication primitives, such as "send" and "receive". To such primitives, a message appears as a stream of bytes or characters to be transmitted from one location to another.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 44% of the total text.

Page 1 of 3

Message Interface Among Concurrent Processes Using an Abstract Data Type

An abstract data type is described for handling messages in a context in which the information to be communicated resides in program variables. The method provides a convenient interface between the high- level application environment and the underlying communication facility of the operating system. Consider a distributed programming environment in which processes communicate by sending messages to each other. A typical program written for this environment consists of code for local computation and code for handling of messages. The operating system usually provides the programmer with the necessary communication primitives, such as "send" and "receive". To such primitives, a message appears as a stream of bytes or characters to be transmitted from one location to another. To the application program, on the other hand, the message conveys meaningful information, i.e., at the application level the message text has an interpretation. The information communicated between processes consists of data that are used during local computation by both sender and receiver. Such data usually reside in program variables. The sender of a message extracts the data from program variables and incorporates it into the message. Similarly, the receiver extracts data from the message into program variables. In other words, the handling of messages involves moving of data between program variables and the message text stream. At the application level, one can thus view a message as an abstract entity composed of a collection of program variables. There is obviously a gap between the low-level view of messages as a stream of characters and the structured program variable view discussed above. The facility described here bridges this gap by providing a transparent interface between the two views. This is done by means of an abstract data type. An abstract data type is a collection of data structures and procedures (operations) which form a self-contained definition of an (abstract) object and its access mechanism. The object can only be accessed through the given operations, and the user need not worry about the object's implementation; moreover, the object is protected against mishandling. In the following, there is described an abstract type called "message", which enables the user to view messages as collections of program variables. Operations are provided to define messages and to compose and decompose message text. This discussion emphasizes the general structure of the abstract type, keeping implementation details to a minimum as they depend on the programming environment being used. Each message is maintained as a structure called a message descriptor, which consists of a header and a list of program variable descriptors. A program variable descriptor must contain sufficient information to identify the location of the corresponding program variable. However, since messages a...