############################################################## # Name: /usr/export/home/users/otso/official/otso/docs/SCCS/s.READ-ME-FIRST # Vers: 5.4 Time: 92/09/25, 14:03:30 ############################################################## NOTICE, DISCLAIMER AND CONDITIONS OF USE Copyright (c) 1992 Technical Research Centre of Finland (VTT) Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that this notice and the reference to this notice appearing in each software module be retained unaltered, and that the name of any contributors shall not be used in advertising or publicity pertaining to distribution of the software without specific written prior permission. No contributor makes any representations about the suitability of this software for any purpose. It is provided "as is" without any express or limited warranty. NO WARRANTY ALL CONTRIBUTORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS. IN NO EVENT SHALL ANY CONTRIBUTOR BE LIABLE FOR ANY SPECIAL, PUNITIVE, INDIRECT OR CONSEQUENTIAL DAMAGES OR DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, GOODWILL, PROFITS, USE OF MONEY OR LICENSED SOFTWARE, INTERRUPTION IN USE OR AVAILABILITY OF DATA OR LICENSED SOFTWARE, STOPPAGE OF TELECOMMUNICATIONS TRAFFIC, OTHER WORK OR IMPAIRMENT OF OTHER ASSETS, WHETHER IN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR INABILITY TO USE OR PERFORMANCE OF THIS SOFTWARE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THIS SOFTWARE IS WITH YOU. SHOULD THIS SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. As used above, "contributor" includes, but is not limited to : The Technical Research Centre of Finland OTSO An Object-Oriented, C++ Language Based Environment for Development, Use, Implementation, and Interactive Testing of Telecommunication Protocols and Distributed Applications PREFACE The software described herein has been developed as a research tool. It represents an effort to help promote use of : - International Organization for Standardization (ISO) interpretation of Open Systems Interconnection (OSI), - Object-Oriented programming, and in particular the C++ programming language. ABSTRACT OTSO is a model and a set of software tools for developing portable communication protocols and distributed applications. Specifically, it is an environment for development, interactive testing, simulation, and execution. OTSO is built using the principles of object-oriented (O-O) programming, on top of the C++ programming language. OTSO supports concurrency, asynchronous communication, finite state automata, transparent distribution of objects, and automatic generation of interactive user interfaces. OTSO consists of a C++ class library, and a mini-compiler. OVERVIEW OTSO consists of - A mini-compiler ("prepro") that supports : - a small set of optional extensions to the C++ programming language - interprets information in C++ class headers - generation of interactive, textual interfaces for objects - location and distribution transparency - integrated documentation in C++ class headers - C++ Run-time support class libraries: - DVOPS Kernel library (Basic types (Strings, Frames, ...), Messages and Message queues, Runners (threaded objects), Schedulers, Container objects (FIFO, LIFO, heap, ring, priority queue, ...). - Device library - Environment (Portability) configuration library - Protocol libraries - Other An OTSO system consists of C++ objects. In order to cooperate, objects must communicate. To prevent undesirable interference in parallel execution, the control flow can be constrained by synchronization. Objects that provide services for other objects are called service providers, or servers. Objects that use the services of other objects are service users, or clients. The roles of objects can change dynamically, and most objects are both service users and providers. In OTSO, service interfaces are defined as C++ class headers. An OTSO system consists of objects. These objects communicate via messages. Protocol objects are typically derived from the OTSO class Runner. Runners can be given messages (to be put in an input queue for example) and scheduled (in order to handle the messages in the queue). Protocol objects are also derived from the abstract protocol interfaces whose messages they can handle. Syntactically, communication takes place via C++ virtual function calls. Communication is implemented using normal C++ function calls, message passing, or remote procedure calls. The run-time environment takes care of passing the messages from the sender to the receiver, and scheduling processing time for the Runners. The role of the OTSO mini-compiler "prepro" is to generate code to handle message passing, remote procedure calls, user interface, shorthand macros, etc. In fact, the PDU classes presented above were not generated by CLASN but by the OTSO mini-compiler. As OTSO interfaces are defined using C++ abstract base class headers, the mini-compiler takes these headers as input. The mini-compiler also translates the optional OTSO extensions to C++. For example, it translates state machines into C++ class member functions. OTSO supports extended finite state automata (EFSA), because they are often used for defining the behaviour of protocol objects. In OTSO, service interfaces are defined as C++ class headers and virtual function declarations. Normal C++ functions are synchronous. The caller of a synchronous method is blocked until the method has been executed. OTSO extends C++ by providing asynchronous methods. An asynchronous method does not return any value, and the caller can continue execution before the called function has been executed Q synchronization between the server and the client is not necessary. Asynchronous methods are denoted by the special OTSO "return type" async. The strong, static typing of C++ is preserved in all OTSO communication. REVISION INFORMATION This document (Version 5.1) and its companion documents are believed to accurately reflect release Version 5.1 of OTSO as of 1 June 1992. CONTACT INFORMATION Comments, bug reports, fixes, user software contributions, etc. concerning this release should be addressed to : Internet E-mail: OTSO-Bug@tel.vtt.fi. Postal Address: OTSO Development Group Attention: Juha Koivisto & James Reilly Technical Research Centre of Finland (VTT), Telecommunications Laboratory, P.O. Box 34, Otakaari 7B SF-02151 Espoo, Finland Telephone: +358-0-4565664 (Juha) +358-0-4565663 (James) Fax: +358-0-4550115 RELEASE INFORMATION If you'd like a copy of the release described in this document : Internet: If you can FTP to the Internet, you can use anonymous FTP to the host : nic.funet.fi [128.214.6.100] to retrieve the file : pub/unix/development/tools/O TSO/otso-public.tar.Z in binary mode. This is a compressed tarfile image. If you retrieve a copy of OTSO by FTP, please send an Internet E-mail message to : OTSO-Interest@tel.vtt.fi. We only look at this information internally, to get a rough idea of who, what, where, how many users are interested in OTSO. It is NOT used for bug reports, joining mailing lists, or any other purposes. FTAM/X.25: It is also possible to get these via FTAM running over e.g. X.25 but you should contact us first for more details about this. ENVIRONMENT INFORMATION You should be able to compile OTSO using SunOS 4.1.x and a Cfront 2.1 based C++ compiler, or on an HP with a Cfront 2.1 based C++ compiler. G++ is not supported right now (incompatible standard libraries). MAILING LIST DISCUSSIONS An Internet Mailing List will be maintained to allow general purpose discussion about OTSO. If you would like to join (or be deleted from) the OTSO mailing list, please notify : OTSO-Request@tel.vtt.fi. To send messages to the Mailing List, use the Internet E-mail address : OTSO@tel.vtt.fi. Bug reports should NOT be sent to these addresses, but to the address supplied in the CONTACT INFORMATION section. ACKNOWLEDGEMENTS OTSO research was originally funded by the TEKES Finsoft programme, and the Technical Research Centre of Finland during the years 1988-1991. We are grateful for their support. Lappenranta University of Technology (Lappenranta, Finland) and Nokia Telecommunications have provided valuable feedback, fixes, support and comments for OTSO. PRINTED DOCUMENTATION The following is a short list of some printed OTSO documents that are available. 1) "OTSO User's Guide and Reference Manual" VTT/TEL documentation 2) "OTSO - An Object Oriented Approach to Distributed Computation", USENIX C++ conference - 1991 (updated for Nordic Workshop on Programming Environment Research - Tampere, 1992). 3) "Object Oriented Techniques in Telecommunication Systems: Experiences With The OTSO System" TINA conference 1991 4) "Object Oriented Implementation of Telecommunication Software Using the OTSO Environment" INDC-92 conference - Otaniemi, Finland 5) "Simulation Support for the OTSO Environment" INDC-92 conference - Otaniemi, Finland HELP FILES The following files provide more help with OTSO : - HELP - INSTALL-OTSO - INTRO-OTSO - PROBLEMS-OTSO