3 Known Problems and Workarounds
4 Differences from SunSoft ToolTalk
6 Examples on IRIS Workstations
- 1 - 1. Introduction ToolTalk is an interprocess message passing facility developed and licensed by SunSoft. It is used by independent applications to communicate with each other without having direct knowledge of each other. Applications communicate by creating and sending ToolTalk messages. The ToolTalk service receives these messages, determines the recipients, then delivers the messages to the appropriate ToolTalk client applications. For detailed documentation, please read the following manuals: o ToolTalk Programmer's Guide (available as an option) o ToolTalk Setup and Administration Guide. Developers are encouraged to read both of these manuals. Note: Packaged with this software is a separate sheet that contains the Software License Agreement. This software is provided to you solely under the terms and conditions of the Software License Agreement. Please take a few moments to review the Agreement. This document contains the following chapters: 1. Introduction 2. Installation Information 3. Known Problems and Workarounds 4. Differences from SunSoft ToolTalk 5. Documentation Notes 6. Examples on IRIS Workstations 1.1 Release_Identification_Information Following is the release identification information for ToolTalk: - 2 - Software Option Product ToolTalk Version 1.2.1 (Corresponds to SunSoft ToolTalk 1.0.1) Product Code ToolTalk 1.2.1 System Software Requirements IRIX 5.2 1.2 Hardware_Requirements You should have at least 16 Mbytes of RAM to run ToolTalk. Furthermore, many of the programs have large address spaces and therefore use a large amount of swap space. Silicon Graphics suggests that if you see the tools being killed due to lack of swap space, you increase the swap space by using the ``swap'' administrative interface. 1.3 On-Line_Release_Notes After you install the on-line documentation for a product (the relnotes subsystem), you can view the release notes on your screen. If you have a graphics system, select ``Release Notes'' from the Tools submenu of the Toolchest. This displays the grelnotes(1) graphical browser for the on-line release notes. Refer to the grelnotes(1) man page for information on options to this command. If you do not have a graphics system, you can use the relnotes command. Refer to the relnotes(1) man page for accessing the on-line release notes. 1.4 On-line_man_Pages The following man pages are provided on-line with ToolTalk: install_tt(1) tt_type_comp(1) ttcopy(1) ttmv(1) ttrm(1) ttrmdir(1) ttsession(1) tttar(1) ttapi(3) ttdbserverd(8) ttdbck(8) To access an on-line man page, type: man- 3 - 1.5 Product_Support Silicon Graphics, Inc., provides a comprehensive product support and maintenance program for its products. If you are in North America and would like support for your Silicon Graphics-supported products, contact the Technical Assistance Center at 1-800-800-4SGI. Otherwise, contact your support provider. - 1 - 2. Installation_Information This chapter lists supplemental information to the IRIS Software Installation Guide. The information listed here is product-specific; use it with the installation guide to install this product. 2.1 ToolTalk_Subsystems The ToolTalk Execution product includes these subsystems: tooltalk_eoe.sw.links Installation links for sw subsystem tooltalk_eoe.sw.runtime ToolTalk run-time environment tooltalk_eoe.man.links Installation links for man subsystem tooltalk_eoe.man.pages Man pages tooltalk_eoe.man.relnotes Release notes The ToolTalk Development product includes these subsystems: tooltalk_dev.man.links ToolTalk Development man page links tooltalk_dev.man.manpages ToolTalk Development man pages tooltalk_dev.man.relnotes ToolTalk release notes tooltalk_dev.sw.dev ToolTalk development tooltalk_dev.sw.examples ToolTalk examples tooltalk_dev.sw.links ToolTalk development 2.2 ToolTalk_Subsystem_Disk_Space_Requirements This section lists the subsystems (and their sizes) of the ToolTalk option. When you install this option for the first time, the subsystems marked "default" are the ones installed automatically if you use the ``go'' menu item. To install a different set of subsystems, use the ``install,'' ``remove,'' ``keep,'' and ``step'' commands in inst to customize the list of subsystems to be installed, then select the ``go'' menu item. - 2 - Note: The listed subsystem sizes are approximate. Refer to the IRIS Software Installation Guide for information on finding exact sizes. Subsystem Name Subsystem Size (512-byte blocks) tooltalk_eoe.sw.links (default) 10 tooltalk_eoe.sw.runtime (default) 4700 tooltalk_eoe.man.links (default) 10 tooltalk_eoe.man.manpages (default) 52 tooltalk_eoe.man.relnotes (default) 36 tooltalk_dev.man.links (default) 1 tooltalk_dev.man.manpage (default) 58 tooltalk_dev.man.relnotes (default) 36 tooltalk_dev.sw.dev (default) 4340 tooltalk_dev.sw.examples (default) 379 tooltalk_dev.sw.links (default) 2 2.3 Installation_Method All of the subsystems for ToolTalk can be installed using IRIX. You do not need to use the miniroot. Refer to the IRIS Software Installation Guide for complete installation instructions. 2.4 Prerequisites You must be running IRIX 5.2 to use Version 1.2.1 of this product. The following prerequisites external to ToolTalk apply to the tooltalk_eoe.sw.runtime subsystem: o You must have installed the execution C library (eoe1.sw.lib). o You must have installed the X11 execution environment (x_eoe.sw.eoe). o You must have installed the TCP/IP networking support (eoe2.sw.tcp). The following prerequisites external to ToolTalk apply to the tooltalk_dev.sw.dev subsystem: - 3 - o You must have installed the IRIS Development Option (dev). o If you are developing ToolTalk applications that use X and Motif, you must have installed the X11 Execution Environment mentioned above, the X11 Development Environment (x_dev.sw), the Motif Execution-Only Environment (motif_eoe), and the Motif Development System (motif_dev). Note: The tooltalk_dev images is mentioned here, but is bundled as part of the developer's option. Within ToolTalk, the following prerequisites apply: o tooltalk_eoe.sw.links must always be installed. o tooltalk_eoe.sw.links must be installed for tooltalk_dev.sw.links. o tooltalk_dev.sw.links must be installed for tooltalk_dev.sw.dev. o tooltalk_eoe.man.links must be installed for the tooltalk_eoe.man.manpages subsystem. 2.5 Other_Installation_Information ToolTalk uses an installation architecture that makes it easy to relocate the bulk of the installed files to directories that have extra space. All the ToolTalk files are installed under the directory /usr/ToolTalk, then those files are linked back to the appropriate spots under /usr. Therefore, if you do not have enough disk space on /usr to install the ToolTalk tools, you can install them on an auxiliary disk and link them back to /usr automatically. Here is one example of appropriate commands for installing locally on a disk named /disk3 (execute as root): ln -s ../disk3/ToolTalk /usr (location of target of inst) inst -f /CDROM/dist (location of inst images) go These commands link the /usr/ToolTalk directory to the /disk3 disk, where there is enough space to hold the tools. The files are then installed on /disk3, and the tooltalk_eoe.sw.links subsystem and tooltalk_eoe.man.links subsystem install links pointing to those files from /usr. In another example, if you want to install ToolTalk on a file server and have users mount the software from there, - 4 - first install the software on the server as usual: inst -f /CDROM/dist - 5 - Then mount the server's files from server:/usr/ToolTalk on the user's machine as /usr/ToolTalk and install sw and man links subsystems: inst -f /CDROM/dist keep all install tooltalk_eoe.sw.links install tooltalk_eoe.man.links go 2.6 Search_path The ToolTalk commands are installed in the directory /usr/ToolTalk/bin. They are linked from the directory /usr/sbin. You should include /usr/sbin in your search path. - 1 - 3. Known_Problems_and_Workarounds This chapter describes the known problems with the 1.1 version of ToolTalk. o The Object Types (otypes) and the related ToolTalk enhanced shell commands (ttcopy, ttmv, etc.) should be used for prototyping systems only. o If you see the message: Warning: couldn't acquire X selection it is possible that ToolTalk has started two ttsessions. The older of these sessions is not active. You can kill the inactive session with the IRIX kill command. o If the default ttsession is killed, it leaves a property on the X root window defining that session. To locate the property, type: xprop -root | fgrep _SUN_TT_SESSION Or, if you are running in a ClearCase view, type: xprop -root | fgrep _SGI_TT_SESSION_ To remove the property, type: xprop -root -remove - 2 - o If you have a ptype defined, but the program that is autostarted on behalf of that ptype does not declare itself to be that ptype, ToolTalk continues to start the same program. If this happens, kill the ttsession process and the many instances of the autostarted program, and fix your program to declare itself properly. For example, in the example program tt_sgi_service, tt_ptype_declare is called before tt_session_join. This also points out the importance of declaring the ptype before joining the session. o By default, ToolTalk tries to connect to the X display defined by the DISPLAY environment variable to determine what ttsession to join. The call to XOpenDisplay (which connects to the X display) can fail in several ways: - If DISPLAY is set to a machine that is running Pandora, the Silicon Graphics (SGI) login, the SGI Xlib prints out the following warning: Xlib: connection to " :0.0" refused by server Xlib: Client is not authorized to connect to Server There is currently no way to suppress this warning. Because you probably do not want to connect to a message server on this machine in this case, set your DISPLAY environment variable to the machine running the desired ttsession. - If DISPLAY is set to a machine that is running XDM (X Display Manager) as the login, a call to XOpenDisplay hangs and might eventually return with the following message: XIO: fatal IO error 32 (Broken pipe) on X server "(null)" after 0 requests (0 known processed) with 0 events remaining. The connection was probably broken by a server shutdown or KillClient. Once again, you can set DISPLAY to avoid this condition. If you are programming to handle this condition, one solution for detection without hanging is to set a timer surrounding the call to tt_open (which calls XOpenDisplay). You can do this by setting a signal handler for the SIGALRM signal, and setting the alarm for how long you will give XOpenDisplay to connect or fail. - 3 - - A third possible failure is if the DISPLAY is set to a machine (server) that is not running the X server (Xsgi). In this case, the call to XOpenDisplay returns nil but takes a long time. Again, it makes sense to set the DISPLAY appropriately. o If two clients require the same ptype service, but have joined different files, simultaneous autostart handles both requests successfully, but the second client receives a reply with state TT_FAILED. This happens when both clients have scope=TT_FILE_IN_SESSION. o SunSoft ToolTalk sets the SIGPIPE signal handler for clients unconditionally to SIG_IGN. This overrides any previous setting for this signal handler. In SGI ToolTalk, if the SIGPIPE signal handler of the client is set to anything other than SIG_DFL (default), it is left unchanged. Set your signal handlers before calling ToolTalk. o Point-to-point notices that do not have a handler set for them are ignored, instead of an error code being returned from tt_message_send(). The workaround is to always name your recipient (via tt_message_handler_set()) when you send a point-to- point (that is, TT_HANDLER) message. Because no error message is returned if you do not, make sure always name your recipient. o If you create a message, then send it more than once, subsequent sends are not reliable. This is not supposed to work at all! Do not send the same message more than once; create a new message each time. o When tt_close is called, more than just the default proc ID is closed. Other proc IDs obtained via earlier tt_open calls cause the TT_ERR_PROCID error when they are used. The workaround is to call tt_open() right after calling tt_close(). That creates a new proc ID and causes it to be the default proc ID. Then call tt_default_procid_set() to set the default proc ID to be one of your ``real'' proc IDs. Note that this is relevant only if you are juggling multiple proc IDs in the same process, which is not the typical case. o TT_ERR_OVERFLOW is not currently reported when thousands of queued messages are sent and never delivered. The workaround is to make sure the receiver proceeds normally by calling tt_message_receive. - 1 - 4. Differences_from_SunSoft_ToolTalk 4.1 Not_Supported_in_Silicon_Graphics_ToolTalk o The Classing Engine is a SunSoft database used for typing information (for example, given a file, what type is it, what icon is used for this type?). This is used in Sun OpenWindows, and is not part of ToolTalk. Some of the ToolTalk commands have options that use the Classing Engine in the SunSoft implementation. The Classing Engine options are not supported in the Silicon Graphics (SGI) implementation. o The SunSoft implementation of ToolTalk supports a des authentication option and uses secure RPC. This is not supported in the SGI ToolTalk implementation. o The SunSoft implementation of ToolTalk supports internationalization of error/warning messages. This is not supported in the SGI ToolTalk implementation. The error message strings can be found in Appendix C of the ToolTalk Programmer's Guide (available as an option). 4.2 Restricted_Support_in_SGI_ToolTalk o The following examples in tooltalk_dev.sw.examples (/usr/ToolTalk/examples) do not run on IRIS workstations: ttsample1, Sun_EditDemo, ttmon. They are included for illustrative purposes only. However, two examples have been written to run on IRIS systems, ttsample1_sgi and ttsample2_sgi_client/ttsample2_sgi_service. These new examples are presented in Chapter 6. o The following libraries are needed when binding in either the shared or non-shared ToolTalk libraries: /usr/lib/libc.so /usr/lib/libX11.so 4.3 Changes_in_SGI_ToolTalk o The SunSoft implementation of ToolTalk has a program named ttcp for copying files containing ToolTalk objects. In SGI's implementation, ttcp is a test program for TCP and UDP performance. The SunSoft ToolTalk ttcp command has been renamed ttcopy in SGI ToolTalk. - 2 - 4.4 Additional_Functionality_of_SGI_ToolTalk By default, a ToolTalk client process connects to a default ToolTalk message server (ttsession). Silicon Graphics has modified the default behavior to include the concept of the CASEVision/ClearCase view. By default, if ToolTalk clients are running in a CASEVision/ClearCase view, the ttsession will be started in the view and dedicated only to processes in the view. This overrides the SunSoft ToolTalk default mechanism. If the ToolTalk client is not running in a CASEVision/ClearCase view, it connects to the ttsession in the same manner as in the SunSoft ToolTalk implementation. (See CASEVision/ClearCase for details on what it means to be in a view). - 1 - 5. Documentation_Notes The ToolTalk documentation (except for this Release Note) was written by SunSoft. For Silicon Graphics ToolTalk, the documentation has been modified to eliminate references to SunSoft, SunOS, OpenWindows, the Classing Engine, and other Sun proprietary terms. However, the goal was to remain as close to the SunSoft documentation as possible. - 1 - 6. Examples_on_IRIS_Workstations ttsample1_sgi is a ported version of ttsample1. It uses X and Motif instead of Xview and compiles and runs on IRIS workstations. ttsample2_sgi_client and tt_sample2_sgi_service combine to make a new example in Silicon Graphics ToolTalk that demonstrates the ptype and autostart capabilities. If you want to build and run these programs, you must have: o X11 Development Environment (x_dev.sw) o Motif Execution-Only Environment (motif_eoe) o Motif Development System (motif_dev) in addition to having the prerequisites listed in Section 2.4. To build these programs, type: % cd /usr/ToolTalk/examples % cp *sgi* /usr/tmp % cd /usr/tmp % mkdir ~/.tt The next command merges a new ptype into ~/.tt/types.xdr if this file exists. % make -f Makefile.sgi all You are now ready to run. Type: % ttsample1_sgi - 2 - You can now move the Send slider, then press the Broadcast button. This sends a message to ToolTalk, which is then received by ttsample1_sgi, and the Receive slider will be updated. % ttsample2_sgi_client Again, you can send the value. This time a new process, ttsample2_sgi_service, is autostarted. The new process receives the message and replies, updating the original calling client, ttsample2_sgi_client. In this case, the service returns the value ((val_in + 1) %100) to show that the service is responsible for setting the new value and sending it back in the reply. % killall ttsession This kills the ToolTalk server that was autostarted to service these examples. You should also quit or kill the example programs.