Annotation of 43BSDReno/contrib/isode-beta/rosap/librosap.3n, revision 1.1.1.1

1.1       root        1: .TH LIBROSAP 3N "21 Aug 1986"
                      2: .\" $Header: /f/osi/rosap/RCS/librosap.3n,v 7.0 89/11/23 22:21:11 mrose Rel $
                      3: .\"
                      4: .\" Based on an TCP-based implementation by George Michaelson of University
                      5: .\" College London.
                      6: .\"
                      7: .\"
                      8: .\" $Log:      librosap.3n,v $
                      9: .\" Revision 7.0  89/11/23  22:21:11  mrose
                     10: .\" Release 6.0
                     11: .\" 
                     12: .SH NAME
                     13: librosap \- Remote Operations Services library
                     14: .SH SYNOPSIS
                     15: .B "#include <isode/rosap.h>"
                     16: .sp
                     17: \fIcc\fR\0...\0\fB\-lisode\fR
                     18: .SH DESCRIPTION
                     19: The \fIlibrosap\fR library contains a set of routines which implement
                     20: remote operations facilities.
                     21: In essence,
                     22: they implement a Remote Operations Service Point
                     23: (RoSAP) interface for connection-oriented user applications.
                     24: .PP
                     25: The information contained herein is skeletal:
                     26: consult the \fIUser's Manual\fR for actual examples of how ISO servers and
                     27: clients are coded and interact with the \fIlibrosap\fR library.
                     28: .SH "SERVICE DISCIPLINES"
                     29: Three remote operation service disciplines are implemented by the library:
                     30: \*(lqbasic\*(rq, \*(lqadvanced\*(rq, and \*(lqcomplete\*(rq.
                     31: The basic service is based on the ECMA technical report and an underlying
                     32: session service.
                     33: This remote operation service is selected when the \fBRoBeginRequest\fR and
                     34: \fBRoBeginResponse\fR routines are used.
                     35: In addition to making minimal requirements on the provider at the remote site,
                     36: the \*(lqbasic\*(rq discipline also limits the users by permitting only the
                     37: initiator to make invocations.
                     38: Certain applications, e.g., message handling systems, require more freedom
                     39: (such as two\-way invocations) along with more reliability.
                     40: The advanced service uses a different underlying service for ROS,
                     41: namely the reliable transfer service.
                     42: If the \fBRtBeginRequest\fR and \fBRtBeginResponse\fR routines
                     43: (from the \fIlibrtsap\fR\0(3n) library)
                     44: are used 
                     45: to establish an association for remote operations services,
                     46: then the \*(lqadvanced\*(rq remote operation service is selected.
                     47: Finally,
                     48: the complete service supports linked operations,
                     49: and can be selected by using the \fBAcAssocRequest\fR and
                     50: \fBAcAssocResponse\fR routines (from the \fIlibacsap\fR\0(3n) library) are
                     51: used to establish an association.
                     52: .PP
                     53: In the addressing and initialization descriptions that follow,
                     54: keep in mind the distinctions described above.
                     55: Finally,
                     56: note that the corresponding \*(lqend\*(rq routines should be used based on
                     57: the \*(lqbegin\*(rq routines selected.
                     58: .SH ADDRESSES
                     59: RoSAP addresses are represented by the \fBRoSAPaddr\fR structure.
                     60: This contains a session address,
                     61: and the port number of the RoSAP as found in the \fIisoservices\fR\0(5)
                     62: database.
                     63: .SH "SERVER INITIALIZATION"
                     64: A program providing an ISO service is usually invoked under \fItsapd\fR\0(8c),
                     65: with the argument vector listed in the ISODE services database.
                     66: The server's very first action is to re\-capture the RoSAP state as
                     67: recorded by \fItsapd\fR.
                     68: This is accomplished by calling \fBRoInit\fR.
                     69: Information returned by this call is equivalent to the parameters passed by a
                     70: RO\-BEGIN.INDICATION event.
                     71: If the call is successful,
                     72: the program can then examine the argument vector that was passed via
                     73: \fIexecvp\fR
                     74: (it's important to call \fBRoInit\fR prior to reading \fBargc\fR and
                     75: \fBargv\fR).
                     76: If the call to \fBRoInit\fR is not successful,
                     77: information returned by the call indicates the reason for failure.
                     78: .PP
                     79: After examining the information provided by \fBRoInit\fR
                     80: (and possibly the argument vector),
                     81: the server should either accept or reject the association.
                     82: If accepting, the \fBRoBeginResponse\fR routine is called with the parameter
                     83: \fBstatus\fR set to
                     84: .sp
                     85: .in +.5i
                     86: .nf
                     87: .ta \w'ROS_VALIDATE  'u
                     88: ROS_ACCEPT     association accepted
                     89: .re
                     90: .fi
                     91: .in -.5i
                     92: .sp
                     93: (which corresponds to the accepting RO\-BEGIN.RESPONSE action).
                     94: If the call is successful,
                     95: the association has been bound.
                     96: If un\-successful,
                     97: information returned by the call indicates the reason for failure.
                     98: If rejecting, the \fBRoBeginResponse\fR routine is also called,
                     99: but with the parameter \fBstatus\fR set to one of:
                    100: .sp
                    101: .in +.5i
                    102: .nf
                    103: .ta \w'ROS_VALIDATE  'u
                    104: ROS_VALIDATE   authentication failure
                    105: ROS_BUSY       busy
                    106: .re
                    107: .fi
                    108: .in -.5i
                    109: .sp
                    110: (which corresponds to the refusing RO\-BEGIN.RESPONSE action),
                    111: and the program may exit.
                    112: .SH "CLIENT INITIALIZATION"
                    113: A program requesting an ISO service calls \fBRoBeginRequest\fR
                    114: (which corresponds to the RO\-BEGIN.REQUEST action).
                    115: If successful (depending on the responder's choice of \fBstatus\fR),
                    116: the association is bound.
                    117: If un\-successful,
                    118: information returned by the call indicates the reason for failure.
                    119: .SH ASSOCIATION\-DESCRIPTORS
                    120: Once an association has been bound via a successful return from
                    121: \fBRoBeginResponse\fR (for servers) or \fBRoBeginRequest\fR (for clients),
                    122: an association is referenced by a small integer
                    123: (returned in a structure passed to these calls) called an
                    124: \fIassociation\-descriptor\fR.
                    125: The association\-descriptor appears as an argument to the peer routines
                    126: described below.
                    127: .PP
                    128: By default,
                    129: events associated with a association\-descriptor are synchronous in nature:
                    130: activity in the network won't generate an INDICATION event without program
                    131: first asking to be told of any activity.
                    132: To mark an association\-descriptor as asynchronous,
                    133: a call to \fBRoSetIndications\fR is made with the address of an integer
                    134: function to handle incoming events.
                    135: Upon a successful return from \fBRoSetIndications\fR,
                    136: the event handler will be called in this fashion:
                    137: .sp
                    138: .in +.5i
                    139: .B "(*handler) (sd, roi);"
                    140: .in -.5i
                    141: .sp
                    142: where \fBsd\fR is the association\-descriptor,
                    143: and \fBroi\fR is a pointer to a \fBRoSAPindication\fR structure.
                    144: Any value returned by the event\-handler is ignored.
                    145: .PP
                    146: Note well: the \fB\-lisode\fR library uses the \fB\-ltsap\fR library to
                    147: provide this interface.
                    148: The latter library  uses the SIGEMT signal to provide this service.
                    149: Programs loaded with \fB\-ltsap\fR that use asynchronous
                    150: association\-descriptors should NOT use SIGEMT for other purposes.
                    151: .PP
                    152: For synchronous multiplexing of several associations,
                    153: the routine \fBRoSelectMask\fR
                    154: updates a file\-descriptor mask and counter for use with \fIselect\fR\0(2).
                    155: .SH PEER
                    156: A fatal failure (consult the \fIUser's Manual\fR)
                    157: on return from any of these routines results in the association being unbound.
                    158: .sp
                    159: .in +.5i
                    160: .nf
                    161: .ta \w'\fBRoRejectURequest\fR  'u
                    162: \fIroutine\fR  \fIaction\fR
                    163: \fBRoInvokeRequest\fR  RO\-INVOKE.REQUEST
                    164: \fBRoResultRequest\fR  RO\-RESULT.REQUEST
                    165: \fBRoErrorRequest\fR   RO\-ERROR.REQUEST
                    166: \fBRoRejectURequest\fR RO\-REJECT\-U.REQUEST
                    167: \fBRoWaitRequest\fR    RO\-WAIT.REQUEST (synchronous wait)
                    168: \fBRoEndRequest\fR     RO\-END.REQUEST
                    169: \fBRoEndResponse\fR    RO\-END.RESPONSE
                    170: .re
                    171: .fi
                    172: .in -.5i
                    173: .sp
                    174: Note that the \fBRoWaitRequest\fR routine returns data from the peer by
                    175: allocating memory.
                    176: It should be freed before the structure is re\-used.
                    177: .PP
                    178: Finally,
                    179: the routine \fBRoErrString\fR takes a failure code from a \fBRoSAPpreject\fR
                    180: structure and returns a null\-terminated diagnostic string.
                    181: .SH FILES
                    182: .nf
                    183: .ta \w'\*(EDisoservices  'u
                    184: \*(EDisoentities       ISODE entities database
                    185: \*(EDisobjects ISODE objects database
                    186: \*(EDisoservices       ISODE services database
                    187: .re
                    188: .fi
                    189: .SH "SEE ALSO"
                    190: libacsap (3n), librtsap (3n), isoentities(5), isobjects (5), isoservices(5)
                    191: .br
                    192: \fIThe ISO Development Environment: User's Manual\fR,
                    193: .br
                    194: ISO 9072/1:
                    195: \fIInformation Processing Systems \-\- Text Communication \-\- MOTIS \-\-
                    196: Remote Operations Part 1: Model, Notation and Service Definition\fR,
                    197: .br 
                    198: CCITT Recommendation X.410:
                    199: \fIMessage Handling Systems: Remote Operations and Reliable Transfer Server\fR,
                    200: .br 
                    201: ECMA Technical Report:
                    202: \fIRemote Operations: Concepts, Notation and Connection\-Oriented Mappings\fR,
                    203: Final Draft, July, 1985
                    204: .SH DIAGNOSTICS
                    205: All routines return the manifest constant \fBNOTOK\fR (\-1) on error.
                    206: .SH AUTHOR
                    207: Marshall T. Rose
                    208: .PP
                    209: This library is based on an initial implementation by George
                    210: Michaelson,
                    211: University College London.
                    212: .SH BUGS
                    213: Do not confuse association\-descriptors with file\-descriptors.
                    214: Unlike file\-descriptors which are implemented by the kernel,
                    215: association\-descriptors to not work across \fIfork\fRs and \fIexec\fRs.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.