Start development on 386BSD 0.0
[unix-history] / .ref-BSD-4_3_Net_2 / usr / src / contrib / isode / ronot / READ-ME
CommitLineData
d626f7a5
C
1This new top level directory is intended to provide routines which
2implement the mappings defined for RO-Notation MACROS BIND and UNBIND
3onto ACSE.
4
5The mappings of the BIND and UNBIND macros onto RTSE are NOT provided.
6
7The routines provided here are extensions of the code previously included in
8the dsap/net library specifically for the directory.
9
10
11
12RO-NOTATION BIND and UNBIND macros can map either onto ACSE or onto RTSE
13
14BIND/UNBIND operations need not report outcome if they do, then it follows
15the single data value form.
16
17BIND maps to A-ASSOCIATE
18UNBIND maps to A-RELEASE
19
20BIND success =>
21 accepted, user information = result if any
22
23Nothing is said about what happens when an A-ASSOCIATE is well-formed
24as such, but not as a BIND (which errors are used??)
25
26An UNBIND operation may disrupt operations - this is the only disruption
27of service.
28
29If BIND operations collide, then 2 application contexts are established.
30BIND unsuccessful
31 rejected (permanent), user information = error if any
32
33Everything looks OK the way it has been done, except for the separation
34of the RO-BIND, RO-UNBIND implementation from the rosap library.
35
36****
37
38Having finally seen a copy of the standard for remote operations
39notation i am even more strongly convinced that ISODE should provide
40an interface to support RO-BIND and RO-UNBIND.
41
42As far as quipu is concerned the changes required are structural, and
43_should_ (although this is rarely completely the case) be achievable
44without introducing any new errors.
45
46Eventually, this code should be moved into the rosap library or a
47library of its own. Attempts have been made to keep close to the
48ISODE style used in rosap to allow this to be accomplished more easily.
49Only the mapping of RO-BIND and RO-UNBIND for ROSE using ACSE is
50tackled, a full solution requires a parallel library for the mapping
51onto RTSE.
52
53The ABSTRACT-BIND and ABSTRACT-UNBIND macros have a defined mapping onto
54ACSE primitives. Currently ISODE does not directly support the use of
55ABSTRACT-BIND and ABSTRACT-UNBIND, but leaves it to the application
56programmer to implement the mapping. Quipu currently implements such
57a mapping, but with poor abstraction.
58
59An interface which supports the RO-BIND and RO-UNBIND operations as an
60ACSE-user should be provided as soon as possible by ISODE for several
61reasons:
62 1) Tidying up quipu code
63 2) Easier implementation of other ASE's
64 3) Possible incorporation of BIND, UNBIND and perhaps
65even APPLICATION CONTEXT into rosy.
66
67The motivation here is 1), but ISODE styles will be followed where
68this is simple and appropriate so that 2) and 3) are made easier
69objectives. (Aside i am assuming that a suitable solution to the
70ACSE-user vs. RTSE-user problem is to have separate libraries and
71separate include files accepting the smallish costs of duplication
72between them - this has the added benefit that the BIND user selects
73the underlying services by selecting the right library which has the
74additional benefit that the RoSetService no longer needs to be visible
75in the application using RO-BIND.)
76
77Use of ACSE as described in the ISODE manual is provided by the
78routines:
79 AcAsynAssocRequest() A-ASSOCIATE.REQUEST
80 AcInit() A-ASSOCIATE.INDICATION
81 AcAssocResponse() A-ASSOCIATE.RESPONSE
82 AcAsynRetryRequest() A-ASSOCIATE.CONFIRMATION
83 AcAsynRetryNext() A-ASSOCIATE.CONFIRMATION
84 AcRelRequest() A-RELEASE.REQUEST
85 (*)AcFINISHser() A-RELEASE.INDICATION
86 AcRelResponse() A-RELEASE.RESPONSE
87 AcRelRetry() A-RELEASE.CONFIRMATION
88
89(*) The routine AcFINISHser is called implicitly by RoWaitRequest()
90having been selected at the ACSE level by a call to RoSetService()
91with value RoPService. This routine should be replaced with an extended
92routine (eg RoUNBINDser which would call AcFINSIHser) so that an
93RO-UNBIND ARGUMENT can be looked for and decoded if present. (Presumably,
94a similar change would be necessary to support the RTSE equivalent).
95I made have made misguided comments in my previous message about
96drastic changes to rosap, this was due to misunderstandings on my part.
97
98Since no argument (or results or errors for that matter) are used in
99the UNBIND of the X.500 protocols this problem can safely be ignored
100for the moment.
101
102One question i haven't been able to satisfy myself about is whether
103the implementation of RO-BIND should return RoSAPindications or its
104own definition eg RoBINDindications. I don't want to touch rosap itself
105at the moment and so have implemented the second.
106
107A straightforward use of the ISODE acsap routines can be made to provide
108an ABSTRACT-BIND/ABSTRACT-UNBIND interface with the following routines:
109
110 RoAsynBindRequest()
111 Encodes bind argument
112 Calls AcAsynAssocRequest()
113 Maps AcSAPindications to RoBINDindications
114 Calls RoSetService()
115 If completed: Decodes bind result or bind error
116 RoBindInit()
117 Calls AcInit()
118 Maps AcSAPindications to RoBINDindications
119 Calls RoSetService()
120 Decodes bind argument
121 RoBindResponse()
122 Encodes bind result or bind error
123 Calls AcAssocResponse()
124 Maps AcSAPindications to RoBINDindications
125 RoBindRetryRequest()
126 Selects either AcAsynRetryRequest() or AcAsynNextRequest()
127 Maps AcSAPindications to RoBINDindications
128 If completed: Decodes bind result or bind error
129 RoUnBindRequest()
130 Encodes unbind argument
131 Calls AcRelRequest()
132 Maps AcSAPindications to RoBINDindications
133 If completed: Decodes unbind result or unbind error
134 RoUnBindResponse()
135 Encodes unbind result or unbind error
136 Calls AcRelResponse()
137 Maps AcSAPindications to RoBINDindications
138 RoUnBindRetryRequest()
139 Calls AcRelRetryRequest()
140 Maps AcSAPindications to RoBINDindications
141 If completed: Decodes unbind result or unbind error
142
143All arguments, except the presentation element representing the user data,
144and the replacement of the AcSAPindication parameter by an RoBINDindications
145parameter are passed straight through.
146
147Other questions i am less than sure about are:
148
149Should rob use the rosap log?? I think it should.
150
151Should RoBINDindication be a RoSAPindication?? Not sure.
152
153Should rob define separate (non-ACSE) definitions?? Yes, but its costly.
154This would allow the definition of RoSAPstart, RoSAPconnect, ... for
155either of ACSE or RTSE, completely obscuring the underlying services from
156the user of the RO-notation. This is what we want eventually and one reason
157for pulling this stuff out of the bottom of the dsap library.