|
|
1.1 root 1: % -*- LaTeX -*- (really SLiTeX)
2:
3: \begin{bwslide}
4: \part {DYNAMIC FACILITIES}\bf
5:
6: \begin{nrtc}
7: \item RUN-TIME ENVIRONMENT
8:
9: \item BOILERPLATE FOR INITIATORS
10:
11: \item BOILERPLATE FOR RESPONDERS
12:
13: \item DEFINING A NEW SERVICE
14: \end{nrtc}
15: \end{bwslide}
16:
17:
18: \begin{note}\em
19: this part of the presentation corresponds to part~iv along with section~3.1
20: of The Applications Cookbook
21: \end{note}
22:
23:
24: \begin{bwslide}
25: \ctitle {DYNAMIC FACILITIES\\ OVERVIEW}
26:
27: \vskip.15in
28: \diagram[p]{figure10}
29: \end{bwslide}
30:
31:
32: \begin{bwslide}
33: \part* {RUN-TIME ENVIRONMENT}\bf
34:
35: \begin{nrtc}
36: \item RUN-TIME ENVIRONMENT RESPONSIBLE FOR ``CIVILIZING'' REMOTE OPERATIONS
37: SERVICE
38:
39: \item IMPORTANT TRADE-OFF:
40: \begin{nrtc}
41: \item FLEXIBILITY FOR SIMPLICITY
42: \end{nrtc}
43:
44: \item IN \emph{THE COOKBOOK}, \verb"ROSYLIB" IMPLEMENTS THE RUN-TIME
45: ENVIRONMENT
46: \end{nrtc}
47: \end{bwslide}
48:
49:
50: \begin{bwslide}
51: \ctitle {DATA STRUCTURES}
52:
53: \begin{nrtc}
54: \item RECALL THAT ROSY GENERATES TABLES IN ADDITION TO STUBS
55:
56: \item FOR EACH OPERATION, A TABLE IS DEFINED CONTAINING:
57: \begin{nrtc}
58: \item NAME AND NUMBER OF OPERATION
59:
60: \item ARGUMENT ENCODE/DECODE ROUTINES
61:
62: \item RESULT ENCODE/DECODE/FREE ROUTINES
63:
64: \item ERROR TABLE
65: \end{nrtc}
66: \end{nrtc}\small
67:
68: \begin{verbatim}
69: ...
70:
71: /* OPERATION m-ConfirmedEventReport */
72: "m-ConfirmedEventReport", operation_CMIP_m__ConfirmedEventReport,
73: encode_CMIP_m__ConfirmedEventReport_argument,
74: decode_CMIP_m__ConfirmedEventReport_argument,
75: 1, encode_CMIP_m__ConfirmedEventReport_result,
76: decode_CMIP_m__ConfirmedEventReport_result,
77: free_CMIP_m__ConfirmedEventReport_result,
78: errors_CMIP_m__ConfirmedEventReport,
79:
80: ...
81: \end{verbatim}
82: \end{bwslide}
83:
84:
85: \begin{bwslide}
86: \ctitle {DATA STRUCTURES (cont.)}
87:
88: \begin{nrtc}
89: \item FOR EACH ERROR, A TABLE IS DEFINED CONTAINING:
90: \begin{nrtc}
91: \item NAME AND NUMBER OF ERROR
92:
93: \item PARAMETER ENCODE/DECODE/FREE ROUTINES
94: \end{nrtc}
95: \end{nrtc}\small
96:
97: \begin{verbatim}
98: ...
99:
100: /* ERROR noSuchObject */
101: "noSuchObject", error_CMIP_noSuchObject,
102: encode_CMIP_noSuchObject_parameter,
103: decode_CMIP_noSuchObject_parameter,
104: free_CMIP_noSuchObject_parameter,
105:
106: ...
107: \end{verbatim}
108: \end{bwslide}
109:
110:
111: \begin{bwslide}
112: \ctitle {A TABLE-DRIVEN APPROACH}
113:
114: \begin{nrtc}
115: \item RUN-TIME ENVIRONMENT SHOULD BE GENERALIZED TO WORK WITH THE LARGEST
116: POSSIBLE SET OF APPLICATIONS USING REMOTE OPERATIONS
117:
118: \item A TABLE-DRIVEN APPROACH PERMITS US TO DECOUPLE OPERATION-SPECIFIC
119: INFORMATION
120: \begin{nrtc}
121: \item WHAT ARGUMENTS REPRESENTED, HOW THEY ARE ENCODED, etc.
122: \end{nrtc}
123: FROM OPERATION-GENERIC INFORMATION
124: \begin{nrtc}
125: \item THE OPERATION TAKES ARGUMENTS WHICH MUST BE ENCODED, etc.
126: \end{nrtc}
127: \end{nrtc}
128: \end{bwslide}
129:
130:
131: \begin{bwslide}
132: \ctitle {STUBS REVISITED}
133:
134: \begin{nrtc}
135: \item STUBS DEFINED BY ROSY CALL EITHER THE \verb"RyOperation" OR THE
136: \verb"RyStub" ROUTINE
137:
138: \item THE \verb"RyOperation" ROUTINE IMPLEMENTS A ``POLICY''
139: \begin{nrtc}
140: \item OPERATION CLASS: SYNCHRONOUS
141:
142: \item INVOCATION IDENTIFIER: UNIQUE NUMBER
143:
144: \item LINKED-INVOCATION ID: NONE
145:
146: \item PRIORITY: NONE
147: \end{nrtc}
148:
149: \item THE \verb"RyStub" ROUTINE IMPLEMENTS A LESS RESTRICTIVE POLICY:
150: \begin{nrtc}
151: \item USER SELECTS OPERATION CLASS AND INVOCATION IDENTIFIER
152: \end{nrtc}
153: \end{nrtc}
154: \end{bwslide}
155:
156:
157: \begin{bwslide}
158: \ctitle {ASYNCHRONOUS STUBS}
159:
160: \begin{nrtc}
161: \item RECALL
162: {\small
163: \begin{verbatim}
164: #define stub_CMIP_m__ConfirmedEventReport(sd,id,in,rfx,efx,class,roi) \
165: RyStub ((sd), table_CMIP_Operations, \
166: operation_CMIP_m__ConfirmedEventReport, (id), \
167: (caddr_t) (in), (rfx), (efx), (class), (roi))
168: \end{verbatim}}
169:
170: \item THE MEANING OF THE PARAMETERS:
171: \begin{nrtc}
172: \item \verb"sd": ASSOCIATION-DESCRIPTOR
173:
174: \item \verb"id": INVOCATION IDENTIFIER
175:
176: \item \verb"in": ARGUMENT FOR OPERATION
177:
178: \item \verb"rfx": DISPATCH ROUTINE FOR RESULT
179:
180: \item \verb"efx": DISPATCH ROUTINE FOR ERRORS OR REJECTIONS
181:
182: \item \verb"class": (A)SYNCHRONOUS
183:
184: \item \verb"roi": LOCAL SERVICE INTERFACE INFORMATION
185: \end{nrtc}
186: \end{nrtc}
187: \end{bwslide}
188:
189:
190: \begin{bwslide}
191: \ctitle {INSIDE RYSTUB}
192:
193: \begin{nrtc}
194: \item RUDIMENTARY PARAMETER CHECK
195:
196: \item BUILD PRESENTATION ELEMENT FOR ARGUMENT
197:
198: \item BUILD \emph{ACTIVATION BLOCK}
199:
200: \item ISSUE RO-INVOKE.REQUEST
201:
202: \item IF ASYNCHRONOUS, RETURN
203:
204: \item LOOP, WAITING FOR ANY RESPONSE:
205: \begin{nrtc}
206: \item RO-INVOKE.INDICATION:
207: \begin{nrtc}
208: \item PUSH ACTIVATION BLOCK FOR DISPATCHING OPERATION
209: \end{nrtc}
210:
211: \item RO-RESULT, ERROR, OR REJECTION.INDICATION:
212: \begin{nrtc}
213: \item PARSE OPERATION RESULT OR ERROR PARAMETER AND CALL DISPATCH
214: ROUTINE
215: \begin{verbatim}
216: result = (*fnx) (sd, id, reason, value, roi);
217: \end{verbatim}
218:
219: \item IF RESPONSE WAS FOR US, RETURN
220: \end{nrtc}
221: \end{nrtc}
222: \end{nrtc}
223: \end{bwslide}
224:
225:
226: \begin{bwslide}
227: \ctitle {SYNCHRONOUS STUBS}
228:
229: \begin{nrtc}
230: \item RECALL
231: \begin{verbatim}
232: #define op_CMIP_m__ConfirmedEventReport(sd,in,out,rsp,roi) \
233: RyOperation ((sd), table_CMIP_Operations, \
234: operation_CMIP_m__ConfirmedEventReport, \
235: (caddr_t) (in), (out), (rsp), (roi))
236: \end{verbatim}
237:
238: \item THE MEANING OF THE PARAMETERS:
239: \begin{nrtc}
240: \item \verb"sd": ASSOCIATION-DESCRIPTOR
241:
242: \item \verb"in": ARGUMENT FOR OPERATION
243:
244: \item \verb"out": RESULT FOR OPERATION OR PARAMETER FOR ERROR
245:
246: \item \verb"rsp": TELLS HOW TO INTERPRET \verb"out"
247:
248: \item \verb"roi": REJECTION INFORMATION FOR OPERATION
249: \end{nrtc}
250: \end{nrtc}
251: \end{bwslide}
252:
253:
254: \begin{bwslide}
255: \ctitle {INSIDE RYOPERATION}
256:
257: \begin{nrtc}
258: \item RUDIMENTARY PARAMETER CHECK
259:
260: \item BUILD PRESENTATION ELEMENT FOR ARGUMENT
261:
262: \item BUILD \emph{ACTIVATION BLOCK}
263:
264: \item ISSUE RO-INVOKE.REQUEST
265:
266: \item LOOP, WAITING FOR SOME RESPONSE:
267: \begin{nrtc}
268: \item RO-INVOKE.INDICATION:
269: \begin{nrtc}
270: \item PUSH ACTIVATION BLOCK FOR DISPATCHING OPERATION
271: \end{nrtc}
272:
273: \item RO-RESULT, ERROR, OR REJECTION.INDICATION:
274: \begin{nrtc}
275: \item IF FOR US: PARSE OPERATION RESULT OR ERROR PARAMETER AND RETURN
276:
277: \item IF NOT FOR US: STUFF INFORMATION INTO CORRESPONDING ACTIVATION
278: BLOCK
279: \end{nrtc}
280: \end{nrtc}
281: \end{nrtc}
282: \end{bwslide}
283:
284:
285: \begin{bwslide}
286: \ctitle {RESPONDERS}
287:
288: \begin{nrtc}
289: \item REGISTER A DISPATCH ROUTINE FOR EACH OPERATION USING \verb"RyDispatch"
290: \begin{verbatim}
291: RyDispatch (sd, ryo, op, fnx, roi)
292: \end{verbatim}
293:
294: \item THE MEANING OF THE PARAMETERS:
295: \begin{nrtc}
296: \item \verb"sd": ASSOCIATION-DESCRIPTOR
297:
298: \item \verb"ryo": OPERATION TABLE
299:
300: \item \verb"op": OPERATION NUMBER
301:
302: \item \verb"fnx": DISPATCH ROUTINE
303:
304: \item \verb"roi": FAILURE INDICATOR
305: \end{nrtc}
306: \end{nrtc}
307: \end{bwslide}
308:
309:
310: \begin{bwslide}
311: \ctitle {OPERATION DISPATCH}
312:
313: \begin{nrtc}
314: \item WHILE WAITING FOR ``SOMETHING TO HAPPEN'', A RO-INVOKE.INDICATION
315: CAUSES AN ACTIVATION BLOCK TO BE PUSHED
316:
317: \item THE PRESENTATION ELEMENT FOR THE ARGUMENT IS PARSED INTO A STRUCTURE
318: AND THE DISPATCH ROUTINE IS CALLED:
319: \begin{verbatim}
320: result = (*fnx) (sd, ryo, rox, in, roi)
321: \end{verbatim}
322:
323: \item DISPATCH ROUTINE HAS THREE OPTIONS
324: \begin{nrtc}
325: \item \verb"RyDsResult": TO RETURN A RESULT
326:
327: \item \verb"RyDsError": TO RETURN AN ERROR
328:
329: \item \verb"RyDsUReject": TO REJECT AN OPERATION
330: \end{nrtc}
331: \end{nrtc}
332: \end{bwslide}
333:
334:
335: \begin{bwslide}
336: \ctitle {CLEAN-UP}
337:
338: \begin{nrtc}
339: \item WHEN AN ASSOCIATION IS ABORTED (e.g., DUE TO NETWORK FAILURE),
340: SOMETHING MUST BE DONE WITH ACTIVATION BLOCKS
341:
342: \item IDEALLY, WOULD LIKE TO:
343: \begin{nrtc}
344: \item RETAIN THIS STATE,
345:
346: \item RE-ESTABLISH THE ASSOCIATION, AND
347:
348: \item CONTINUE WHERE WE LEFT OFF
349: \end{nrtc}
350:
351: \item NO SUCH LUCK, ACTIVATION BLOCKS ARE FLUSHED!
352: \begin{nrtc}
353: \item A LOT OF HARD ISSUES NEED TO BE RESOLVED IN ORDER TO DO THE
354: ``RIGHT THING''
355:
356: \item ACTUALLY, FOR ASYNCHRONOUS INVOCATIONS, A REJECTION IS
357: PASSED UP
358: \end{nrtc}
359: \end{nrtc}
360: \end{bwslide}
361:
362:
363: \begin{bwslide}
364: \part* {BOILERPLATE FOR INITIATORS}\bf
365:
366: \begin{nrtc}
367: \item THE PROBLEM WITH BOILERPLATE IS THAT IT'S BORING
368:
369: \item SO, WE'LL CONSIDER ONLY THE HIGHLIGHTS
370: \end{nrtc}
371: \end{bwslide}
372:
373:
374: \begin{bwslide}
375: \ctitle {INVOKING AN OPERATION}
376:
377: \begin{nrtc}
378: \item ALTHOUGH \emph{THE COOKBOOK} TRIED TO MAKE THINGS SIMPLE,
379: CALLING A STUB IS NOT EASY
380: \end{nrtc}
381: \end{bwslide}
382:
383:
384: \begin{bwslide}
385: \ctitle {ASYNCHRONOUS INVOCATION}\small
386:
387: \hrule\vskip.15in
388: \begin{tgrind}
389: \let\linebox=\relax
390: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
391: \input figure21\relax
392: \end{tgrind}
393: \end{bwslide}
394:
395:
396: \begin{bwslide}
397: \ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
398:
399: \hrule\vskip.15in
400: \begin{tgrind}
401: \let\linebox=\relax
402: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
403: \input figure32\relax
404: \end{tgrind}
405: \end{bwslide}
406:
407:
408: \begin{bwslide}
409: \ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
410:
411: \hrule\vskip.15in
412: \begin{tgrind}
413: \let\linebox=\relax
414: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
415: \input figure22\relax
416: \end{tgrind}
417: \end{bwslide}
418:
419:
420: \begin{bwslide}
421: \ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
422:
423: \hrule\vskip.15in
424: \begin{tgrind}
425: \let\linebox=\relax
426: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
427: \input figure31\relax
428: \end{tgrind}
429: \end{bwslide}
430:
431:
432: \begin{bwslide}
433: \ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
434:
435: \hrule\vskip.15in
436: \begin{tgrind}
437: \let\linebox=\relax
438: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
439: \input figure33\relax
440: \end{tgrind}
441: \end{bwslide}
442:
443:
444: \begin{bwslide}
445: \ctitle {SIMPLIFIED ASYNCHRONOUS INVOCATION}\small
446:
447: \hrule\vskip.15in
448: \begin{tgrind}
449: \let\linebox=\relax
450: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
451: \input figure34\relax
452: \end{tgrind}
453: \end{bwslide}
454:
455:
456: \begin{bwslide}
457: \ctitle {SYNCHRONOUS INVOCATION}\small
458:
459: \hrule\vskip.15in
460: \begin{tgrind}
461: \let\linebox=\relax
462: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
463: \input figure15\relax
464: \end{tgrind}
465: \end{bwslide}
466:
467:
468: \begin{bwslide}
469: \ctitle {SYNCHRONOUS INVOCATION (cont.)}\small
470:
471: \hrule\vskip.15in
472: \begin{tgrind}
473: \let\linebox=\relax
474: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
475: \input figure16\relax
476: \end{tgrind}
477: \end{bwslide}
478:
479:
480: \begin{bwslide}
481: \ctitle {SYNCHRONOUS INVOCATION (cont.)}\small
482:
483: \hrule\vskip.15in
484: \begin{tgrind}
485: \let\linebox=\relax
486: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
487: \input figure17\relax
488: \end{tgrind}
489: \end{bwslide}
490:
491:
492: \begin{bwslide}
493: \part* {BOILERPLATE FOR RESPONDERS}\bf
494:
495: \begin{nrtc}
496: \item THE PROBLEM WITH BOILERPLATE IS THAT IT'S BORING
497:
498: \item SO, WE'LL CONSIDER ONLY THE HIGHLIGHTS
499: \end{nrtc}
500: \end{bwslide}
501:
502:
503: \begin{bwslide}
504: \ctitle {RESPONDING TO AN OPERATION}
505:
506: \begin{nrtc}
507: \item WHEN AN ACTIVATION BLOCK IS PUSHED,
508: THE DISPATCH ROUTINE IS CALLED
509: \end{nrtc}
510: \end{bwslide}
511:
512:
513: \begin{bwslide}
514: \ctitle {RESPONDING TO AN OPERATION (cont.)}\small
515:
516: \hrule\vskip.15in
517: \begin{tgrind}
518: \let\linebox=\relax
519: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
520: \input figure18\relax
521: \end{tgrind}
522: \end{bwslide}
523:
524:
525: \begin{bwslide}
526: \ctitle {RESPONDING TO AN OPERATION (cont.)}\small
527:
528: \hrule\vskip.15in
529: \begin{tgrind}
530: \let\linebox=\relax
531: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
532: \input figure19\relax
533: \end{tgrind}
534: \end{bwslide}
535:
536:
537: \begin{bwslide}
538: \ctitle {RESPONDING TO AN OPERATION (cont.)}\small
539:
540: \hrule\vskip.15in
541: \begin{tgrind}
542: \let\linebox=\relax
543: \def\_{\ifstring{\char'137}\else\underline{\ }\fi}
544: \input figure20\relax
545: \end{tgrind}
546: \end{bwslide}
547:
548:
549: \begin{bwslide}
550: \part* {DEFINING A NEW SERVICE}\bf
551:
552: \begin{nrtc}
553: \item FINALLY, NEED TO IDENTIFY THE APPLICATION TO THE NETWORK
554:
555: \item THINGS TO BE DEFINED:
556: \begin{nrtc}
557: \item ABSTRACT SYNTAX
558:
559: \item APPLICATION CONTEXT NAME
560:
561: \item APPLICATION ENTITY TITLE
562:
563: \item PRESENTATION ADDRESS
564:
565: \item LOCAL PROGRAM
566: \end{nrtc}
567: \end{nrtc}
568: \end{bwslide}
569:
570:
571: \begin{bwslide}
572: \ctitle {ABSTRACT SYNTAX}
573:
574: \begin{nrtc}
575: \item DESCRIBES THE DATA STRUCTURES BEING EXCHANGED BY THE SERVICE
576:
577: \item DEFINED IN THE \verb"isobjects(5)" FILE:
578: \begin{verbatim}
579: "ips-osi-mips cmip pci" 1.0.9596.2.1.1
580: \end{verbatim}
581: \end{nrtc}
582: \end{bwslide}
583:
584:
585: \begin{bwslide}
586: \ctitle {APPLICATION CONTEXT NAME}
587:
588: \begin{nrtc}
589: \item DESCRIBES THE ELEMENTS AND PROTOCOL BEING USED BY THE SERVICE
590:
591: \item DEFINED IN THE \verb"isobjects(5)" FILE:
592: \begin{verbatim}
593: "iso cmip" 1.0.9596.2.2.1
594: \end{verbatim}
595: \end{nrtc}
596: \end{bwslide}
597:
598:
599: \begin{bwslide}
600: \ctitle {NAMES AND ADDRESSES}
601:
602: \begin{nrtc}
603: \item APPLICATION ENTITY TITLE UNIQUELY NAMES AN ENTITY IN THE NETWORK
604:
605: \item PRESENTATION ADDRESS LOCATES AN ENTITY IN THE NETWORK
606:
607: \item DEFINED IN THE \verb"isoentities(5)" FILE:
608: \begin{verbatim}
609: gonzo-noc mgmtinfobase 1.17.4.1.9 "" "" #519
610: NS 49000002608c456561fe04
611: X.25 23422233939909
612: \end{verbatim}
613:
614: \item USED BY INITIATORS AND STATIC RESPONDERS (MULTIPLE ASSOCIATION)
615: \end{nrtc}
616: \end{bwslide}
617:
618:
619: \begin{bwslide}
620: \ctitle {LOCAL PROGRAM}
621:
622: \begin{nrtc}
623: \item IDENTIFIES THE PROGRAM ON THE LOCAL SYSTEM WHICH IMPLEMENTS THE SERVICE
624:
625: \item DEFINED IN THE \verb"isoservices(5)" FILE:
626: \begin{verbatim}
627: "tsap/cmip" #519 /usr/etc/ros.cmip args...
628: \end{verbatim}
629:
630: \item USED BY LISTENER TO FIND DYNAMIC RESPONDERS (SINGLE ASSOCIATION)
631: \end{nrtc}
632: \end{bwslide}
633:
634:
635: \begin{bwslide}
636: \ctitle {DYNAMIC FACILITIES:\\ REVIEW}
637:
638: \vskip.15in
639: \diagram[p]{figure10}
640: \end{bwslide}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.