diff options
Diffstat (limited to 'X11/xtrans/Xtrans.mm')
-rw-r--r-- | X11/xtrans/Xtrans.mm | 789 |
1 files changed, 0 insertions, 789 deletions
diff --git a/X11/xtrans/Xtrans.mm b/X11/xtrans/Xtrans.mm deleted file mode 100644 index 0d39e7d51..000000000 --- a/X11/xtrans/Xtrans.mm +++ /dev/null @@ -1,789 +0,0 @@ -.\" $XFree86: xc/doc/specs/xtrans/Xtrans.mm,v 1.2 2003/07/09 15:27:27 tsi Exp $ -'\".nr Ej 1 -.PH "'''" -.ce -\fBX Transport Interface\fR -.sp -Copyright (c) 1993, 1994 NCR Corporation - Dayton, Ohio, USA -.sp -All Rights Reserved -.sp -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name NCR not be used in advertising -or publicity pertaining to distribution of the software without specific, -written prior permission. NCR makes no representations about the -suitability of this software for any purpose. It is provided "as is" -without express or implied warranty. -.sp -NCR DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.sp -Copyright 1993, 1994, 2002 The Open Group -.sp -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the ``Software''), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -.sp -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -.sp -THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.sp -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. -.sp -X Window System is a trademark of The Open Group, Inc. -.sp -Designed by Stuart Anderson (NCR) with help from Ralph Mor (X Consortium) -.sp -.ce -\fIDraft Version 0.6\fR -.sp -NOTE: This documentation does not completely match the implementation in R6 -(as a result of some late changes made in the code). Specifically, support -was added for font server cloning, and conditional compliation was introduced -for client vs. server code. -.bp -.H 1 "Purposes and Goals" -.P -The X Transport Interface is intended to combine all system and transport -specific code into a single place in the source tree. This API should be used -by all libraries, clients and servers of the X Window System. Use of this API -should allow the addition of new types of transports and support for new -platforms without making any changes to the source except in the X Transport -Interface code. -.P -This interface should solve the problem of multiple #ifdef TRANSPORT and -#ifdef PLATFORM statements scattered throughout the source tree. -.P -This interface should provide enough functionality to support all types of -protocols, including connection oriented protocols such as X11 and FS, and -connection-less oriented protocols such as XDMCP. -.H 1 "Overview of the interface" -.P -The interface provides an API for use by applications. The functions in this -API perform work that is common to all transports and systems, such as -parsing an address into a host and port number. The functions in this API -call transport specific functions that are contained in a table whose -contents are defined at compile time. This table contains an entry for each -type of transport. Each entry is a record containing mostly pointers to -function that implements the interface for the given transport. -.P -This API does not provide an abstraction for select() or poll(). -These function are themselves transport independent, so an additional interface -is not needed for these functions. It is also unclear how such an interface -would affect performance. -.H 1 "Definition of Address Specification Format" -.P -Addresses are specified in the following syntax, -.sp -\fIprotocol/host:port\fR -.sp -where \fIprotocol\fR specifies a protocol family or an alias for a protocol -family. A definition of common protocol families is given in a later section. -.P -The \fIhost\fR part specifies the name of a host or other transport dependent -entity that could be interpreted as a Network Service Access Point (NSAP). -.P -The \fIport\fR part specifies the name of a Transport Service Access Point -(TSAP). The format of the TSAP is defined by the underlying transport -implementation, but it is represented using a string format when it is part -of an address. -.H 1 "Internal Data Structures" -.P -There are two major data structures associated with the transport independent -portion of this interface. Additional data structures may be used internally -by each transport. -.H 2 "Xtransport" -.P -Each transport supported has an entry in the transport table. -The transport table is an array of \fIXtransport\fR records. Each record -contains all the entry points for a single transport. This record is defined as: -.DS -.nf -typedef struct _Xtransport { - - char *TransName; - int flags; - - XtransConnInfo (*OpenCOTSClient)( - struct _Xtransport *, /* transport */ - char *, /* protocol */ - char *, /* host */ - char * /* port */ - ); - - XtransConnInfo (*OpenCOTSServer)( - struct _Xtransport *, /* transport */ - char *, /* protocol */ - char *, /* host */ - char * /* port */ - ); - - XtransConnInfo (*OpenCLTSClient)( - struct _Xtransport *, /* transport */ - char *, /* protocol */ - char *, /* host */ - char * /* port */ - ); - - XtransConnInfo (*OpenCLTSServer)( - struct _Xtransport *, /* transport */ - char *, /* protocol */ - char *, /* host */ - char * /* port */ - ); - - int (*SetOption)( - XtransConnInfo, /* connection */ - int, /* option */ - int /* arg */ - ); - - int (*CreateListener)( - XtransConnInfo, /* connection */ - char *, /* port */ - int /* flags */ - ); - - int (*ResetListener)( - XtransConnInfo /* connection */ - ); - - XtransConnInfo (*Accept)( - XtransConnInfo /* connection */ - ); - - int (*Connect)( - XtransConnInfo, /* connection */ - char *, /* host */ - char * /* port */ - ); - - int (*BytesReadable)( - XtransConnInfo, /* connection */ - BytesReadable_t * /* pend */ - ); - - int (*Read)( - XtransConnInfo, /* connection */ - char *, /* buf */ - int /* size */ - ); - - int (*Write)( - XtransConnInfo, /* connection */ - char *, /* buf */ - int /* size */ - ); - - int (*Readv)( - XtransConnInfo, /* connection */ - struct iovec *, /* buf */ - int /* size */ - ); - - int (*Writev)( - XtransConnInfo, /* connection */ - struct iovec *, /* buf */ - int /* size */ - ); - - int (*Disconnect)( - XtransConnInfo /* connection */ - ); - - int (*Close)( - XtransConnInfo /* connection */ - ); - -} Xtransport; - -.fi -.DE -.P -The \fIflags\fR field can contain an OR of the following masks: -.sp -\fITRANS_ALIAS\fR: indicates that this record is providing an alias, -and should not be used to create a listner. -.sp -\fITRANS_LOCAL\fR: indicates that this is a LOCALCONN transport. - -.H 2 "XtransConnInfo" -.P -Each connection will have an opaque \fIXtransConnInfo\fR transport connection -object allocated for it. This record contains information specific to the -connection. The record is defined -as: -.DS -.nf -typedef struct _XtransConnInfo *XtransConnInfo; - -struct _XtransConnInfo { - struct _Xtransport *transptr; - char *priv; - int flags; - int fd; - int family; - char *addr; - int addrlen; - char *peeraddr; - int peeraddrlen; -}; -.fi -.DE -.H 1 "Exposed Transport Independent API" -.P -This API is included in each library and server that uses it. The API -may be used by the library, but it is not added to the public API for that -library. This interface is simply an implementation -facilitator. This API contains a low level set of core primitives, and a few -utility functions that are built on top of the primitives. The utility -functions exist to provide a more familiar interface that can be used to -port existing code. -.P -A macro is defined in Xtrans.h for TRANS(func) that creates a unique function -name depending on where the code is compiled. For example, when built for Xlib, -TRANS(OpenCOTSClient) becomes _X11TransOpenCOTSClient. -.P -All failures are considered fatal, and the connection should be closed and -re-established if desired. In most cases, however, the value of errno will -be available for debugging purposes. -.H 2 "Core Interface API" -.BL -.LI -XtransConnInfo -TRANS(OpenCOTSClient)(char *address) -.P -This function creates a Connection-Oriented Transport that is suitable for -use by a client. -The parameter \fIaddress\fR contains the full address of the -server to which this endpoint will be connected. -This functions returns an opaque transport connection object on success, -or NULL on failure. -.LI -XtransConnInfo -TRANS(OpenCOTSServer)(char *address) -.P -This function creates a Connection-Oriented Transport that is suitable for -use by a server. -The parameter \fIaddress\fR contains the full address to which this -server will be bound. -This functions returns an opaque transport connection object on success, -or NULL on failure. -.LI -XtransConnInfo -TRANS(OpenCLTSClient)(char *address) -.P -This function creates a Connection-Less Transport that is suitable for -use by a client. -The parameter \fIaddress\fR contains the full address of the -server to which this endpoint will be connected. -This functions returns an opaque transport connection object on success, -or NULL on failure. -.LI -XtransConnInfo -TRANS(OpenCLTSServer)(char *address) -.P -This function creates a Connection-Less Transport that is suitable for -use by a server. -The parameter \fIaddress\fR contains the full address to which this -server will be bound. -This functions returns an opaque transport connection object on success, -or NULL on failure. -.LI -int TRANS(SetOption)(XtransConnInfo connection, int option, int arg) -.P -This function sets transport options, similar to the way setsockopt() and -ioctl() work. -The parameter \fIconnection\fR is an endpoint that was obtained from -_XTransOpen*() functions. -The parameter \fIoption\fR contains the option that will be set. The actual -values for \fIoption\fR are defined in a later section. -The parameter \fIarg\fR can be used to pass in an additional value that may -be required by some options. -This function return 0 on success and -1 on failure. -.P -Note: Based on current usage, the complimentary function TRANS(GetOption)() -is not necessary. -.LI -int TRANS(CreateListener)(XtransConnInfo connection, char *port, int flags) -.P -This function sets up the server endpoint for listening. -The parameter \fIconnection\fR is an endpoint that was obtained from -TRANS(OpenCOTSServer)() or TRANS(OpenCLTSServer)(). -The parameter \fIport\fR specifies the port to which this endpoint -should be bound for listening. -If \fIport\fR is NULL, then the transport may attempt to allocate any -available TSAP for this connection. If the transport cannot support this, -then this function will return a failure. -The \fIflags\fR parameter can be set to ADDR_IN_USE_ALLOWED to allow -the call to the underlying binding function to fail with a EADDRINUSE -error without causing the TRANS(CreateListener) function itself to -fail. -This function return 0 on success and -1 on failure. -.LI -int TRANS(ResetListener)(XtransConnInfo connection) -.P -When a server is restarted, certain listen ports may need to be reset. -For example, unix domain needs to check that the file used for communication -has not been deleted. If it has, it must be recreated. -The parameter \fIconnection\fR is an opened and bound endpoint that was -obtained from TRANS(OpenCOTSServer)() and passed to TRANS(CreateListener)(). -This function will return one of the following values: TRANS_RESET_NOOP, -TRANS_RESET_NEW_FD, or TRANS_RESET_FAILURE. -.LI -XtransConnInfo -TRANS(Accept)(XtransConnInfo connection) -.P -Once a connection indication is received, this function can be called to -accept the connection. -The parameter \fIconnection\fR is an opened and bound endpoint that was -obtained from TRANS(OpenCOTSServer)() and passed to TRANS(CreateListener)(). -This function will return a new opaque transport connection object upon -success, NULL otherwise. -.LI -int TRANS(Connect)(XtransConnInfo connection, char *address) -.P -This function creates a connection to a server. -The parameter \fIconnection\fR is an endpoint that was obtained from -TRANS(OpenCOTSClient)(). -The parameters \fIaddress\fR specify the TSAP to which this -endpoint should connect. If the protocol is included in the address, it will -be ignored. -This function return 0 on success and -1 on failure. -.LI -int TRANS(BytesReadable)(XtransConnInfo connection, BytesReadable_t *pend); -.P -This function provides the same functionality as the BytesReadable macro. -.LI -int TRANS(Read)(XtransConnInfo connection, char *buf, int size) -.P -This function will return the number of bytes requested on a COTS connection, -and will return the minimum of the number bytes requested or the size of -the incoming packet on a CLTS connection. -.LI -int TRANS(Write)(XtransConnInfo connection, char *buf, int size) -.P -This function will write the requested number of bytes on a COTS connection, and -will send a packet of the requested size on a CLTS connection. -.LI -int TRANS(Readv)(XtransConnInfo connection, struct iovec *buf, int size) -.P -Similar to TRANS(Read)(). -.LI -int TRANS(Writev)(XtransConnInfo connection, struct iovec *buf, int size) -.P -Similar to TRANS(Write)(). -.LI -int TRANS(Disconnect)(XtransConnInfo connection) -.P -This function is used when an orderly disconnect is desired. This function -breaks the connection on the transport. It is similar to the -socket function shutdown(). -.LI -int TRANS(Close)(XtransConnInfo connection) -.P -This function closes the transport, unbinds it, and frees all resources that -was associated with the transport. If a TRANS(Disconnect) call was not made -on the connection, a disorderly disconnect may occur. -.LI -int TRANS(IsLocal)(XtransConnInfo connection) -.P -Returns TRUE if it is a local transport. -.LI -int TRANS(GetMyAddr)(XtransConnInfo connection, -.br - int *familyp, int *addrlenp, Xtransaddr **addrp) -.P -This function is similar to getsockname(). This function will allocate space -for the address, so it must be freed by the caller. Not all transports will -have a valid address until a connection is established. This function should -not be used until the connection is established with Connect() or Accept(). -.LI -int TRANS(GetPeerAddr)(XtransConnInfo connection, -.br - int *familyp, int *addrlenp, Xtransaddr **addrp) -.P -This function is similar to getpeername(). This function will allocate space -for the address, so it must be freed by the caller. Not all transports will -have a valid address until a connection is established. This function should -not be used until the connection is established with Connect() or Accept(). -.LI -int TRANS(GetConnectionNumber)(XtransConnInfo connection) -.P -Returns the file descriptor associated with this transport. -.LI -int TRANS(MakeAllCOTSServerListeners)( -.br - char *port, int *partial_ret, int *count_ret, XtransConnInfo **connections_ret) -.P -This function should be used by most servers. It will try to establish a COTS -server endpoint for each transport listed in the transport table. -\fIpartial_ret\fR will be set to True if only a partial network could be -created. \fIcount_ret\fR is the number of transports returns, and -\fIconnections_ret\fR is the list of transports. -.LI -int TRANS(MakeAllCLTSServerListeners)( -.br - char *port, int *partial_ret, int *count_ret, XtransConnInfo **connections_ret) -.P -This function should be used by most servers. It will try to establish a CLTS -server endpoint for each transport listed in the transport table. -\fIpartial_ret\fR will be set to True if only a partial network could be -created. \fIcount_ret\fR is the number of transports returns, and -\fIconnections_ret\fR is the list of transports. -.LE -.H 2 "Utility API" -.P -This section describes a few useful functions that have been implemented on top -of the Core Interface API. These functions are being provided as a convenience. -.BL -.LI -int TRANS(ConvertAddress)(int *familyp, int *addrlenp, Xtransaddr *addrp) -.P -This function converts a sockaddr based address to an -X authorization based address (ie AF_INET, AF_UNIX to the -X protocol definition (ie FamilyInternet, FamilyLocal)). - -.LE -.H 1 "Transport Option Definition" -.P -The following options are defined for the TRANS(SetOption)() function. If an -OS or transport does not support any of these options, then it will silently -ignore the option. -.BL -.LI -TRANS_NONBLOCKING -.P -This option controls the blocking mode of the connection. If the argument -is set to 1, then the connection will be set to blocking. If the argument -is set to 0, then the connection will be set to non-blocking. -.LI -TRANS_CLOSEONEXEC -.P -This option determines what will happen to the connection when an exec -is encountered. If the argument is set to 1, then the connection will be -closed when an exec occurs. If the argument is set to 0, then the connection -will not be closed when an exec occurs. -.LE -.H 1 "Hidden Transport Dependent API" -.P -The hidden transport dependent functions are placed in the Xtransport record. -These function are similar to the Exposed Transport Independent API, but some -of the parameters and return values are slightly different. -Stuff like the #ifdef SUNSYSV should be handled inside these functions. -.BL -.LI -XtransConnInfo *OpenCOTSClient ( -.br - struct _Xtransport *thistrans, char *protocol, char *host, char *port) -.P -This function creates a Connection-Oriented Transport. The parameter -\fIthistrans\fR points to an Xtransport entry in the transport table. The -parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings -containing the corresponding parts of the address that was passed into -TRANS(OpenCOTSClient)(). -.P -This function must allocate and initialize the contents of the XtransConnInfo -structure that is returned by this function. This function will open the -transport, and bind it into the transport namespace if applicable. The -local address portion of the XtransConnInfo structure will also be filled -in by this function. -.LI -XtransConnInfo *OpenCOTSServer ( -.br - struct _Xtransport *thistrans, char *protocol, char *host, char *port) -.P -This function creates a Connection-Oriented Transport. The parameter -\fIthistrans\fR points to an Xtransport entry in the transport table. The -parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings -containing the corresponding parts of the address that was passed into -TRANS(OpenCOTSClient)(). -.P -This function must allocate and initialize the contents of the XtransConnInfo -structure that is returned by this function. This function will open the -transport. -.LI -XtransConnInfo *OpenCLTSClient ( -.br - struct _Xtransport *thistrans, char *protocol, char *host, char *port) -.P -This function creates a Connection-Less Transport. The parameter -\fIthistrans\fR points to an Xtransport entry in the transport table. The -parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings -containing the corresponding parts of the address that was passed into -TRANS(OpenCOTSClient)(). -.P -This function must allocate and initialize the contents of the XtransConnInfo -structure that is returned by this function. This function will open the -transport, and bind it into the transport namespace if applicable. The -local address portion of the XtransConnInfo structure will also be filled -in by this function. -.LI -XtransConnInfo *OpenCLTSServer ( -.br - struct _Xtransport *thistrans, char *protocol, char *host, char *port) -.P -This function creates a Connection-Less Transport. The parameter -\fIthistrans\fR points to an Xtransport entry in the transport table. The -parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings -containing the corresponding parts of the address that was passed into -TRANS(OpenCOTSClient)(). -.P -This function must allocate and initialize the contents of the XtransConnInfo -structure that is returned by this function. This function will open the -transport. -.LI -int SetOption (struct _Xtransport *thistrans, int option, int arg) -.P -This function provides a transport dependent way of implementing the options -defined by the X Transport Interface. In the current prototype, this function -is not being used, because all of the option defined so far, are transport -independent. This function will have to be used if a radically different -transport type is added, or a transport dependent option is defined. -.LI -int CreateListener (struct _Xtransport *thistrans, char *port, int flags ) -.P -This function takes a transport endpoint opened for a server, and sets it -up to listen for incoming connection requests. The parameter \fIport\fR -should contain the port portion of the address that was passed to the Open -function. -.P -The parameter \fIflags\fR should be set to ADDR_IN_USE_ALLOWED if the -underlying transport endpoint may be already bound and this should not -be considered as an error. Otherwise \fIflags\fR sould be set to 0. -This is used by IPv6 code, where the same socket can be bound to both -an IPv6 address and then to a IPv4 address. -.P -This function will bind the transport into the transport name space if -applicable, and fill in the local address portion of the XtransConnInfo -structure. The transport endpoint will then be set to listen for -incoming connection requests. -.LI -int ResetListener (struct _Xtransport *thistrans) -.P -This function resets the transport for listening. -.LI -XtransConnInfo Accept(struct _Xtransport *thistrans) -.P -This function creates a new transport endpoint as a result of an incoming -connection request. The parameter \fIthistrans\fR is the endpoint that was opened -for listening by the server. The new endpoint is opened and bound into the -transport's namespace. A XtransConnInfo structure describing the new endpoint -is returned from this function -.LI -int Connect(struct _Xtransport *thistrans, char *host, char *port ) -.P -This function establishes a connection to a server. The parameters \fIhost\fR -and \fIport\fR describe the server to which the connection should be -established. The connection will be established so that Read() and Write() -call can be made. -.LI -int BytesReadable(struct _Xtransport *thistrans, BytesReadable_t *pend ) -.P -This function replaces the BytesReadable() macro. This allows each transport -to have it's own mechanism for determining how much data is ready to be read. -.LI -int Read(struct _Xtransport *thistrans, char *buf, int size ) -.P -This function reads \fIsize\fR bytes into \fIbuf\fR from the connection. -.LI -int Write(struct _Xtransport *thistrans, char *buf, int size ) -.P -This function writes \fIsize\fR bytes from \fIbuf\fR to the connection. -.LI -int Readv(struct _Xtransport *thistrans, struct iovec *buf, int size ) -.P -This function performs a readv() on the connection. -.LI -int Writev(struct _Xtransport *thistrans, struct iovec *buf, int size ) -.P -This function performs a writev() on the connection. -.LI -int Disconnect(struct _Xtransport *thistrans) -.P -This function initiates an orderly shutdown of a connection. If a transport -does not distinguish between orderly and disorderly disconnects, then a -call to this function will have no affect. -.LI -int Close(struct _Xtransport *thistrans) -.P -This function will break the connection, and close the endpoint. -.LE -.H 1 "Configuration" -.P -The implementation of each transport can be platform specific. It is expected -that existing connection types such as TCPCONN, UNIXCONN, LOCALCONN and -STREAMSCONN will be replaced with flags for each possible transport type. -.P -Below are the flags that can be set in \fIConnectionFlags\fR in the vendor.cf -or site.def config files. -.TS -center; -l l . -TCPCONN Enables the INET (IPv4) Domain Socket based transport -IPv6 Extends TCPCONN to enable IPv6 Socket based transport -UNIXCONN Enables the UNIX Domain Sokcet based transport -STREAMSCONN Enables the TLI based transports -LOCALCONN Enables the SYSV Local connection transports -DNETCONN Enables the DECnet transports -.TE -.H 1 "Transport Specific Definitions" -.TS -center box; -lb | cb sb sb -lb | cb | cb | cb -lb | cb | cb | cb -l | l | l | l. -Protocol Address Component - _ _ _ -Family protocol host port -= -Internet T{ -inet -.br -inet6 -.br -tcp -.br -udp -T} name of an internet addressable host T{ -string containing the name of a service or a valid port number. -.br -Example: "xserver0", "7100" -T} -_ -DECnet decnet name of a DECnet addressable host T{ -string containing the complete name of the object. -.br -Example: "X$X0" -T} -_ -NETware ipx name of a NETware addressable host T{ -Not sure of the specifics yet. -T} -_ -OSI osi name of an OSI addressable host T{ -Not sure of the specifics yet. -T} -_ -Local T{ -local -.br -pts -.br -named -.br -sco -.br -isc -T} (ignored) T{ -String containing the port name, ie "xserver0", "fontserver0". -T} -.TE -.H 1 "Implementation Notes" -.P -This section refers to the prototype implementation that is being developed -concurrently with this document. This prototype has been able to flush out -many details and problems as the specification was being developed. -.P -All of the source code for this interface is located in xc/lib/xtrans. -.P -All functions names in the source are of the format TRANS(func)(). The TRANS() -macro is defined as -.DS -.sp -#if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP) -#define TRANS(func) _PROTOCOLTrans##func -#else -#define TRANS(func) _PROTOCOLTrans/**/func -#endif -.sp -.DE -PROTOCOL will be uniquely defined in each directory where this code -is compiled. PROTOCOL will be defined to be the name of the protocol that is -implemented by the library or server, such as X11, FS, and ICE. -.P -All libraries and servers that use the X Transport Interface should have a new -file called transport.c. This file will include the transports based -on the configuration flags \fIConnectionFlags\fR. Below is an example -transport.c. -.DS -.nf -#include "Xtransint.h" - -#ifdef DNETCONN -#include "Xtransdnet.c" -#endif -#ifdef LOCALCONN -#include "Xtranslocal.c" -#endif -#ifdef TCPCONN -#include "Xtranssock.c" -#endif -#ifdef STREAMSCONN -#include "Xtranstli.c" -#endif -#include "Xtrans.c" -#include "Xtransutil.c" -.fi -.DE -.P -The source files for this interface are listed below. -.DS -.TS -center; -l l. -Xtrans.h T{ -Function prototypes and defines for -the Transport Independent API. -T} -Xtransint.h T{ -Used by the interface implementation only. -Contains the internal data structures. -T} -Xtranssock.c T{ -Socket implementation of the Transport Dependent API. -T} -Xtranstli.c T{ -TLI implementation of the Transport Dependent API. -T} -Xtransdnet.c T{ -DECnet implementation of the Transport Dependent API. -T} -Xtranslocal.c T{ -Implementation of the Transport Dependent API for -SYSV Local connections. -T} -Xtrans.c T{ -Exposed Transport Independent API Functions. -T} -Xtransutil.c T{ -Collection of Utility functions that use the -X Transport Interface. -T} -.TE -.DE -.P -The file \fIXtransint.h\fR contains much of the transport related code that -previously in Xlibint.h and Xlibnet.h. This will make the definitions -available for all transport users. This should also obsolete the equivalent -code in other libraries. |