|
|
1.1 root 1: % -*- LaTeX -*- (really SLiTeX)
2:
3: \begin{bwslide}
4: \part {STATIC FACILITIES}\bf
5:
6: \begin{nrtc}
7: \item REMOTE OPERATIONS SPECIFICATION
8:
9: \item STUB GENERATOR
10:
11: \item STRUCTURE GENERATOR
12:
13: \item ELEMENT PARSER
14: \end{nrtc}
15: \end{bwslide}
16:
17:
18: \begin{note}\em
19: this part of the presentation corresponds to part~iii of The Applications
20: Cookbook
21:
22: note that some of the facilities described herein are also useful for services
23: which aren't ROS-based, e.g., ODIF
24: \end{note}
25:
26:
27: \begin{bwslide}
28: \ctitle {STATIC FACILITIES\\ OVERVIEW}
29:
30: \vskip.15in
31: \diagram[p]{figure9}
32: \end{bwslide}
33:
34:
35: \begin{bwslide}
36: \part* {REMOTE OPERATIONS SPECIFICATION}\bf
37:
38: \begin{nrtc}
39: \item A ``TYPICAL'' STANDARD FOR AN APPLICATION CONTAINS:
40: \begin{nrtc}
41: \item A SERVICE DEFINITION, AND
42:
43: \item A PROTOCOL SPECIFICATION
44: \end{nrtc}
45:
46: \item THE PROTOCOL SPECIFICATION CONTAINS A FORMAL DESCRIPTION OF THE REMOTE
47: OPERATIONS USED BY THE APPLICATION
48: \end{nrtc}
49: \end{bwslide}
50:
51:
52: \begin{bwslide}
53: \ctitle {EXAMPLE:\\ NETWORK MANAGEMENT}
54:
55: \begin{nrtc}
56: \item {}[ISO~9596/2] DEFINES A ``COMMON MANAGEMENT INFORMATION PROTOCOL''
57: USED FOR NETWORK MANAGEMENT
58: \begin{nrtc}
59: \item NOTE THAT CMIP IS NOT A ``DONE DEAL''
60: \end{nrtc}
61:
62: \item IT CONTAINS INFORMATION FOR BINDING AND OPERATIONS
63:
64: \item WE'LL LOOK AT A PORTION OF THE FORMAL DESCRIPTION
65: \end{nrtc}
66: \end{bwslide}
67:
68:
69: \begin{bwslide}
70: \ctitle {BINDING}\small
71:
72: \vskip.15in
73: \begin{tgrind}
74: \let\linebox=\relax
75: \input figure11\relax
76: \end{tgrind}
77: \end{bwslide}
78:
79:
80: \begin{bwslide}
81: \ctitle {OPERATIONS}\small
82:
83: \vskip.15in
84: \begin{tgrind}
85: \let\linebox=\relax
86: \input figure12\relax
87: \end{tgrind}
88: \end{bwslide}
89:
90:
91: \begin{bwslide}
92: \ctitle {OPERATIONS (cont.)}\small
93:
94: \vskip.15in
95: \begin{tgrind}
96: \let\linebox=\relax
97: \input figure13\relax
98: \end{tgrind}
99: \end{bwslide}
100:
101:
102: \begin{bwslide}
103: \ctitle {ERRORS}\small
104:
105: \vskip.15in
106: \begin{tgrind}
107: \let\linebox=\relax
108: \input figure14\relax
109: \end{tgrind}
110: \end{bwslide}
111:
112:
113: \begin{bwslide}
114: \part* {STUB GENERATOR}\bf
115:
116: \begin{nrtc}
117: \item WHAT WE WOULD LIKE: MAGIC!
118:
119: \item WHAT WE REALLY GET: HARD WORK.
120: \end{nrtc}
121: \end{bwslide}
122:
123:
124: \begin{bwslide}
125: \ctitle {CONCEPT: STUBS}
126:
127: \begin{nrtc}
128: \item A PROCEDURE WHICH IS CALLED LOCALLY BUT EXECUTES REMOTELY
129:
130: \item IN OUR CONTEXT, A SYNCHRONOUS STUB:
131: \begin{nrtc}
132: \item INVOKES THE OPERATION
133:
134: \item AWAITS A RESPONSE
135:
136: \item RETURNS A RESULT OR ERROR
137: \end{nrtc}
138:
139: \item AN ASYNCHRONOUS STUB:
140: \begin{nrtc}
141: \item INVOKES THE OPERATION, AND EVENTUALLY
142:
143: \item DISPATCHES A RESULT OR ERROR HANDLER
144: \end{nrtc}
145:
146: \item WHAT TO DO ABOUT REJECTIONS, NETWORK PROBLEMS, ETC?
147: \end{nrtc}
148: \end{bwslide}
149:
150:
151: \begin{bwslide}
152: \ctitle {ROSY}
153:
154: \begin{nrtc}
155: \item REMOTE OPERATIONS STUB-GENERATOR (YACC-BASED)
156:
157: \item INPUT:
158: \begin{nrtc}
159: \item A RO SPEC
160: \end{nrtc}
161:
162: \item OUTPUT:
163: \begin{nrtc}
164: \item AN ASN.1 SPEC
165:
166: \item STUB DEFINITIONS FOR C
167:
168: \item C DATA STRUCTURES FOR RUN-TIME ENVIRONMENT
169:
170: \item STUB DEFINITIONS FOR LINT
171: \end{nrtc}
172: \end{nrtc}
173: \end{bwslide}
174:
175:
176: \begin{bwslide}
177: \ctitle {EXAMPLE:\\ NETWORK MANAGEMENT}\small
178:
179: \vskip.15in
180: \begin{verbatim}
181: % rosy cmip.ry
182: rosy 3.2 #17 (gonzo) of Fri Jan 8 13:42:05 PST 1988
183: CMIP operations: m-EventReport m-ConfirmedEventReport m-LinkedReply
184: m-Confirmed-Get m-Set m-ConfirmedSet m-Action m-ConfirmedAction
185:
186: CMIP errors: noSuchObject accessDenied syncNotSupported invalidFilter
187: noSuchMgmtInfoId invalidMgmtInfoValue getListError setListError
188: noSuchAction processingFailure noSuchEventType
189:
190: CMIP types: EventReportArgument EventReportResult LinkedReplyArgument
191: GetArgument GetResult SetArgument SetResult ActionArgument ActionResult
192: NoSuchObject SyncNotSupported InvalidFilter NoSuchMgmtInfoId
193: InvalidMgmtInfoValue GetListError MISGetInfoStatus MgmtInfoIdError
194: SetListError MISSetInfoStatus MgmtInfoError ErrorStatus NoSuchAction
195: ProcessingFailure NoSuchEventType ObjectClass ObjectInstance CMISSync
196: CMISFilter FilterItem AccessControl EventTypeId EventInfo MgmtInfo
197: MgmtInfoId MgmtInfoValue ActionTypeId ActionInfo SpecificErrorInfo
198: \end{verbatim}
199: \end{bwslide}
200:
201:
202: \begin{bwslide}
203: \ctitle {EXAMPLE:\\ STUB DEFINITIONS FOR C}\small
204:
205: \vskip.15in
206: \begin{verbatim}
207: #define operation_CMIP_m__ConfirmedEventReport 1
208:
209: #define stub_CMIP_m__ConfirmedEventReport(sd,id,in,rfx,efx,class,roi) \
210: RyStub ((sd), table_CMIP_Operations, \
211: operation_CMIP_m__ConfirmedEventReport, (id), \
212: (caddr_t) (in), (rfx), (efx), (class), (roi))
213:
214: #define op_CMIP_m__ConfirmedEventReport(sd,in,out,rsp,roi) \
215: RyOperation ((sd), table_CMIP_Operations, \
216: operation_CMIP_m__ConfirmedEventReport, \
217: (caddr_t) (in), (out), (rsp), (roi))
218:
219: #define error_CMIP_noSuchObject 1
220: \end{verbatim}
221: \end{bwslide}
222:
223:
224: \begin{bwslide}
225: \ctitle {EXAMPLE:\\ C DATA STRUCTURES FOR\\ RUN-TIME ENVIRONMENT}\small
226:
227: \vskip.15in
228: \begin{verbatim}
229: struct RyOperation table_CMIP_Operations[] = {
230: ...
231:
232: /* OPERATION m-ConfirmedEventReport */
233: "m-ConfirmedEventReport", operation_CMIP_m__ConfirmedEventReport,
234: encode_CMIP_m__ConfirmedEventReport_argument,
235: decode_CMIP_m__ConfirmedEventReport_argument,
236: 1, encode_CMIP_m__ConfirmedEventReport_result,
237: decode_CMIP_m__ConfirmedEventReport_result,
238: free_CMIP_m__ConfirmedEventReport_result,
239: errors_CMIP_m__ConfirmedEventReport,
240:
241: ...
242:
243: NULL
244: };
245: \end{verbatim}
246: \end{bwslide}
247:
248:
249: \begin{bwslide}
250: \ctitle {EXAMPLE:\\ C DATA STRUCTURES FOR\\ RUN-TIME ENVIRONMENT\\ (cont.)}
251: \small
252:
253: \vskip.15in
254: \begin{verbatim}
255: static struct RyError *errors_CMIP_m__ConfirmedEventReport[] = {
256: &table_CMIP_Errors[0],
257: &table_CMIP_Errors[10],
258: &table_CMIP_Errors[1],
259: &table_CMIP_Errors[4],
260: &table_CMIP_Errors[5]
261: };
262: \end{verbatim}
263: \end{bwslide}
264:
265:
266: \begin{bwslide}
267: \ctitle {EXAMPLE:\\ C DATA STRUCTURES FOR\\ RUN-TIME ENVIRONMENT\\ (cont.)}
268: \small
269:
270: \vskip.15in
271: \begin{verbatim}
272: struct RyError table_CMIP_Errors[] = {
273: /* ERROR noSuchObject */
274: "noSuchObject", error_CMIP_noSuchObject,
275: encode_CMIP_noSuchObject_parameter,
276: decode_CMIP_noSuchObject_parameter,
277: free_CMIP_noSuchObject_parameter,
278:
279: ...
280:
281: NULL
282: };
283: \end{verbatim}
284: \end{bwslide}
285:
286:
287: \begin{bwslide}
288: \ctitle {EXAMPLE:\\ STUB DEFINITIONS FOR LINT}\small
289:
290: \vskip.15in
291: \begin{verbatim}
292: int stub_CMIP_m__ConfirmedEventReport (sd, id, in, rfx, efx, class, roi)
293: int sd,
294: id,
295: class;
296: struct type_CMIP_EventReportArgument* in;
297: IFP rfx,
298: efx;
299: struct RoSAPindication *roi;
300: {
301: return RyStub (sd, table_CMIP_Operations,
302: operation_CMIP_m__ConfirmedEventReport, id,
303: (caddr_t) in, rfx, efx, class, roi);
304: }
305: \end{verbatim}
306: \end{bwslide}
307:
308: \begin{bwslide}
309: \ctitle {EXAMPLE:\\ STUB DEFINITIONS FOR LINT (cont.)}\small
310:
311: \vskip.15in
312: \begin{verbatim}
313: int op_CMIP_m__ConfirmedEventReport (sd, in, out, rsp, roi)
314: int sd;
315: struct type_CMIP_EventReportArgument* in;
316: caddr_t *out;
317: int *rsp;
318: struct RoSAPindication *roi;
319: {
320: return RyOperation (sd, table_CMIP_Operations,
321: operation_CMIP_m__ConfirmedEventReport,
322: (caddr_t) in, out, rsp, roi);
323: }
324: \end{verbatim}
325: \end{bwslide}
326:
327: \begin{bwslide}
328: \ctitle {ROSY LIMITATIONS}
329:
330: \begin{nrtc}
331: \item SOMEWHAT LIMITED IN THE FRONT-END, CURRENTLY DOESN'T RECOGNIZE
332: \begin{nrtc}
333: \item \verb"BIND" AND \verb"UNBIND" MACROS
334:
335: \item \verb"OBJECT IDENTIFIER" NOTATION FOR OPERATION CODES
336: \end{nrtc}
337:
338: \item IGNORES THE \verb"LINKED" CLAUSE IN OPERATIONS
339: \end{nrtc}
340: \end{bwslide}
341:
342:
343: \begin{bwslide}
344: \part* {STRUCTURE GENERATOR}\bf
345:
346: \begin{nrtc}
347: \item WHAT WE WOULD LIKE: MAGIC!
348:
349: \item WHAT WE REALLY GET: HARD WORK.
350: \end{nrtc}
351: \end{bwslide}
352:
353:
354: \begin{bwslide}
355: \ctitle {SERIALIZING DATA STRUCTURES}
356:
357: \begin{nrtc}
358: \item {}[ISO~8825] (ASN.1 ENCODING)
359: SAYS HOW TO MAP THE ABSTRACT SYNTAX TO THE CONCRETE SYNTAX
360:
361: \item HOW TO MAP DATA STRUCTURES TO THE ABSTRACT SYNTAX?
362: \begin{nrtc}
363: \item \verb"struct { ... }" $\rightarrow$ \verb"EventReportArgument"
364: \end{nrtc}
365: \end{nrtc}
366: \end{bwslide}
367:
368:
369: \begin{bwslide}
370: \ctitle {A SOLUTION}
371:
372: \begin{nrtc}
373: \item GENERATE C STRUCTURES DIRECTLY FROM ABSTRACT SYNTAX
374:
375: \item GENERATE TRANSLATOR TO DO THE MAPPING
376: \end{nrtc}
377: \end{bwslide}
378:
379:
380: \begin{bwslide}
381: \ctitle {SIMPLE TYPES}
382:
383: \begin{nrtc}
384: \item \verb"BOOLEAN" $\rightarrow$ \verb"char"
385:
386: \item \verb"INTEGER" $\rightarrow$ \verb"int"
387: \end{nrtc}
388: \end{bwslide}
389:
390:
391: \begin{bwslide}
392: \ctitle {SIMPLE TYPES (cont.)}
393:
394: \begin{nrtc}
395: \item FOR RANGE-LIMITED INTEGERs,
396: \begin{verbatim}
397: ErrorStatus ::=
398: INTEGER {
399: accessDenied(2),
400: noSuchMgmtInfoId(5),
401: invalidMgmtInfoValue(7)
402: }
403: \end{verbatim}
404:
405: SYMBOLIC VALUES ARE DEFINED AS WELL
406: \begin{verbatim}
407: struct type_CMIP_ErrorStatus {
408: int parm;
409: #define int_CMIP_ErrorStatus_accessDenied 2
410: #define int_CMIP_ErrorStatus_noSuchMgmtInfoId 5
411: #define int_CMIP_ErrorStatus_invalidMgmtInfoValue 7
412: };
413: \end{verbatim}
414: \end{nrtc}
415: \end{bwslide}
416:
417:
418: \begin{bwslide}
419: \ctitle {SIMPLE TYPES (cont.)}
420:
421: \begin{nrtc}
422: \item \verb"BIT STRING" $\rightarrow$ \verb"struct PElement"
423: \begin{verbatim}
424: BIT STRING {
425: eventReportInvoker(0),
426: ...
427:
428: #define bit_CMIP_FunctionalUnits_eventReportInvoker 0
429: #define bits_CMIP_FunctionalUnits \
430: "\020\01eventReportInvoker..."
431: \end{verbatim}
432:
433: \item \verb"OCTET STRING" $\rightarrow$ \verb"struct qbuf"
434:
435: \item \verb"OBJECT IDENTIFIER" $\rightarrow$ \verb"struct OIDentifier"
436: \end{nrtc}
437: \end{bwslide}
438:
439:
440: \begin{bwslide}
441: \ctitle {COMPLEX TYPES:\\ SEQUENCE OF}
442:
443: \begin{nrtc}
444: \item A LINKED LIST
445: \begin{verbatim}
446: SEQUENCE OF
447: MgmtInfoId
448: \end{verbatim}
449:
450: WITH SOME GENERATED NAMES
451: \begin{verbatim}
452: struct element_CMIP_0 {
453: struct type_CMIP_MgmtInfoId *element_CMIP_1;
454:
455: struct element_CMIP_0 *next;
456: } *element_CMIP_0;
457: \end{verbatim}
458: \end{nrtc}
459: \end{bwslide}
460:
461:
462: \begin{bwslide}
463: \ctitle {COMPLEX TYPES:\\ SEQUENCE}
464:
465: \begin{nrtc}
466: \item A ``SIMPLE'' STRUCTURE
467: \begin{verbatim}
468: MgmtInfoIdError ::=
469: SEQUENCE {
470: errorStatus[0]
471: IMPLICIT ErrorStatus,
472:
473: mgmtInfoId[1]
474: MgmtInfoId
475: }
476: \end{verbatim}
477:
478: USING TAGS FOR NAMES, WHEN POSSIBLE
479: \begin{verbatim}
480: struct type_CMIP_MgmtInfoIdError {
481: struct type_CMIP_ErrorStatus *errorStatus;
482:
483: struct type_CMIP_MgmtInfoId *mgmtInfoId;
484: };
485: \end{verbatim}
486:
487: \item SETS ARE HANDLED ANALAGOUSLY
488: \end{nrtc}
489: \end{bwslide}
490:
491:
492: \begin{bwslide}
493: \ctitle {COMPLEX TYPES:\\ CHOICE}
494:
495: \begin{nrtc}
496: \item A STRUCTURE WITH A TAG AND A UNION
497: \begin{verbatim}
498: ObjectClass ::=
499: CHOICE {
500: globalForm[0]
501: IMPLICIT OBJECT IDENTIFIER,
502:
503: nonSpecificForm[1]
504: IMPLICIT OCTET STRING
505: }
506: \end{verbatim}
507:
508: e.g.,
509: \begin{verbatim}
510: struct type_CMIP_ObjectClass {
511: int offset;
512: #define type_CMIP_ObjectClass_globalForm 1
513: #define type_CMIP_ObjectClass_nonSpecificForm 2
514:
515: union {
516: struct OIDentifier *globalForm;
517: struct qbuf *nonSpecificForm;
518: } un;
519: };
520: \end{verbatim}
521: \end{nrtc}
522: \end{bwslide}
523:
524:
525: \begin{bwslide}
526: \ctitle {DEFAULT/OPTIONAL}
527:
528: \begin{nrtc}
529: \item A VERY SLICK FACILITY WOULD BE TO SUPPORT THE \verb"DEFAULT" AND
530: \verb"OPTIONAL" CLAUSES FOR COMPLEX TYPES
531:
532: \item BUT, IMPLEMENTATION IS PROBLEMATIC:
533: \begin{nrtc}
534: \item NEED ASN.1 VALUE PARSING IN FRONT-END
535:
536: \item NEED EXTENSIVE SYMBOL TABLE SEMANTICS IN BACK-END
537: \end{nrtc}
538:
539: \item SO, A SIMPLE APPROACH IS TAKEN
540: \begin{nrtc}
541: \item SCALARS ARE HANDLED DIRECTLY:
542: \begin{nrtc}
543: \item BOOLEANS, INTEGERS
544: \end{nrtc}
545:
546: \item NON-SCALARS ARE EXAMINED FOR INEQUALITY TO \verb"NULL"
547: \end{nrtc}
548: \end{nrtc}
549: \end{bwslide}
550:
551:
552: \begin{bwslide}
553: \ctitle {HEURISTICS}
554:
555: \begin{nrtc}
556: \item FOR CONSTRUCTED TYPES, IF ONLY ONE MEMBER,\\ PULL IT UP
557: \begin{verbatim}
558: TestInfoIdError ::=
559: SEQUENCE {
560: errorStatus[0]
561: IMPLICIT ErrorStatus
562: }
563: \end{verbatim}
564: \verb"TestInfoIdError" $\rightarrow$ \verb"struct type_CMIP_ErrorStatus"
565:
566: \item TRY TO USE TAGS WHENEVER POSSIBLE FOR STRUCTURE NAMES
567: \end{nrtc}
568: \end{bwslide}
569:
570:
571: \begin{bwslide}
572: \ctitle {POSY}
573:
574: \begin{nrtc}
575: \item PEPY OPTIONAL STRUCTURE-GENERATOR (YACC-BASED)
576:
577: \item INPUT:
578: \begin{nrtc}
579: \item AN ASN.1 SPEC
580: \end{nrtc}
581:
582: \item OUTPUT:
583: \begin{nrtc}
584: \item AN AUGMENTED ASN.1 SPEC
585:
586: \item C STRUCTURE DEFINITIONS
587:
588: \item ``FREE'' ROUTINES
589: \end{nrtc}
590: \end{nrtc}
591: \end{bwslide}
592:
593:
594: \begin{bwslide}
595: \ctitle {EXAMPLE:\\ NETWORK MANAGEMENT}\small
596:
597: \vskip.15in
598: \begin{verbatim}
599: % posy -f -h -o cmip-asn.py cmip.py
600: posy 3.2 #15 (gonzo) of Fri Jan 8 12:03:11 PST 1988
601: CMIP types: EventReportArgument EventReportResult LinkedReplyArgument
602: GetArgument GetResult SetArgument SetResult ActionArgument ActionResult
603: NoSuchObject SyncNotSupported InvalidFilter NoSuchMgmtInfoId
604: InvalidMgmtInfoValue GetListError MISGetInfoStatus MgmtInfoIdError
605: SetListError MISSetInfoStatus MgmtInfoError ErrorStatus NoSuchAction
606: ProcessingFailure NoSuchEventType ObjectClass ObjectInstance CMISSync
607: CMISFilter FilterItem AccessControl EventTypeId EventInfo MgmtInfo
608: MgmtInfoId MgmtInfoValue ActionTypeId ActionInfo SpecificErrorInfo
609: \end{verbatim}
610: \end{bwslide}
611:
612:
613: \begin{bwslide}
614: \ctitle {EXAMPLE:\\ C STRUCTURE DEFINITIONS}\small
615:
616: \vskip.15in
617: \begin{verbatim}
618: struct type_CMIP_EventReportArgument {
619: struct type_CMIP_ObjectClass *managedObjectClass;
620:
621: struct type_CMIP_ObjectInstance *managedObjectInstance;
622:
623: struct type_CMIP_EventTypeID *eventType;
624:
625: struct type_UNIV_GeneralizedTime *eventTime;
626:
627: struct type_CMIP_EventInfo *eventInfo;
628: };
629:
630: #define type_CMIP_NoSuchObject OIDentifier
631: \end{verbatim}
632: \end{bwslide}
633:
634:
635: \begin{bwslide}
636: \ctitle {EXAMPLE:\\ ``FREE'' ROUTINES}\small
637:
638: \vskip.15in
639: \begin{verbatim}
640: free_CMIP_EventReportArgument (arg)
641: struct type_CMIP_EventReportArgument *arg;
642: {
643: if (arg == NULL)
644: return;
645:
646: if (arg -> managedObjectClass)
647: free_CMIP_ObjectClass (arg -> managedObjectClass),
648: arg -> managedObjectClass = NULL;
649:
650: ...
651:
652: if (arg)
653: free ((char *) arg);
654: }
655:
656: #define free_CMIP_NoSuchObject oid_free
657: \end{verbatim}
658: \end{bwslide}
659:
660:
661: \begin{bwslide}
662: \ctitle {POSY LIMITATIONS}
663:
664: \begin{nrtc}
665: \item STEMS FROM A LACK OF INTELLIGENCE WHEN DEALING WITH COMPLEX
666: ASN.1 VALUE NOTATION:
667: \begin{nrtc}
668: \item USES ``NULL INEQUALITY'' RULE FOR \verb"OPTIONAL"
669:
670: \item HANDLES \verb"DEFAULT" ONLY FOR SCALARS
671: \end{nrtc}
672: \end{nrtc}
673: \end{bwslide}
674:
675:
676: \begin{bwslide}
677: \part* {ELEMENT PARSER}\bf
678:
679: \begin{nrtc}
680: \item WE NOW KNOW ABOUT
681: \begin{nrtc}
682: \item DATA STRUCTURES\ \ \verb"struct { ... }"
683:
684: \item ABSTRACT SYNTAX\ \ \verb"EventReportArgument"
685:
686: \item CONCRETE SYNTAX\ \ \verb"1f8a ..."
687: \end{nrtc}
688:
689: \item THE \emph{PRESENTATION ELEMENT} TIES THESE TOGETHER
690: \end{nrtc}
691: \end{bwslide}
692:
693:
694: \begin{bwslide}
695: \ctitle {PRESENTATION ELEMENTS}
696:
697: \begin{nrtc}
698: \item AN INTERNAL FORM FOR AN INSTANCE OF A TYPE DESCRIBED BY ABSTRACT
699: SYNTAX
700:
701: \item CAN REPRESENT ANY ASN.1 TYPE AS EITHER
702: \begin{nrtc}
703: \item A STRING OF OCTETS OR BITS
704:
705: \item A LINKED-LIST OF PRESENTATION ELEMENTS
706: \end{nrtc}
707:
708: \item THE CONCEPUTAL MAPPING IS:
709: \begin{nrtc}
710: \item \verb"struct { ... }" $\rightarrow$ \verb"EventReportArgument"
711: \end{nrtc}
712:
713: \item THE ACTUAL MAPPING IS:
714: \begin{nrtc}
715: \item \verb"struct { ... }" $\rightarrow$ \verb"struct PElement"
716: \end{nrtc}
717: \end{nrtc}
718: \end{bwslide}
719:
720:
721: \begin{bwslide}
722: \ctitle {PEPY}
723:
724: \begin{nrtc}
725: \item PRESENTATION ELEMENT PARSER (YACC-BASED)
726:
727: \item INPUT:
728: \begin{nrtc}
729: \item AN AUGMENTED ASN.1 SPEC
730: \end{nrtc}
731:
732: \item OUTPUT:
733: \begin{nrtc}
734: \item AN ENCODER
735:
736: \item A DECODER
737:
738: \item A PRETTY-PRINTER
739: \end{nrtc}
740: \end{nrtc}
741: \end{bwslide}
742:
743:
744: \begin{bwslide}
745: \ctitle {EXAMPLE:\\ NETWORK MANAGEMENT}\small
746:
747: \vskip.15in
748: \begin{verbatim}
749: % pepy cmip-asn.py
750: pepy 3.2 #15 (gonzo) of Fri Jan 8 12:03:11 PST 1988
751: CMIP encode none none: EventReportArgument EventReportResult
752: LinkedReplyArgument GetArgument GetResult SetArgument SetResult
753: ActionArgument ActionResult NoSuchObject SyncNotSupported InvalidFilter
754: NoSuchMgmtInfoId InvalidMgmtInfoValue GetListError MISGetInfoStatus
755: MgmtInfoIdError SetListError MISSetInfoStatus MgmtInfoError ErrorStatus
756: NoSuchAction ProcessingFailure NoSuchEventType ObjectClass ObjectInstance
757: CMISSync CMISFilter FilterItem AccessControl EventTypeId EventInfo
758: MgmtInfo MgmtInfoId MgmtInfoValue ActionTypeId ActionInfo
759: SpecificErrorInfo
760:
761: CMIP none decode none: EventReportArgument EventReportResult
762: LinkedReplyArgument GetArgument GetResult SetArgument SetResult
763: ActionArgument ActionResult NoSuchObject SyncNotSupported InvalidFilter
764: NoSuchMgmtInfoId InvalidMgmtInfoValue GetListError MISGetInfoStatus
765: MgmtInfoIdError SetListError MISSetInfoStatus MgmtInfoError ErrorStatus
766: NoSuchAction ProcessingFailure NoSuchEventType ObjectClass ObjectInstance
767: CMISSync CMISFilter FilterItem AccessControl EventTypeId EventInfo
768: MgmtInfo MgmtInfoId MgmtInfoValue ActionTypeId ActionInfo
769: SpecificErrorInfo
770: \end{verbatim}
771: \end{bwslide}
772:
773:
774: \begin{bwslide}
775: \ctitle {STATIC FACILITIES:\\ REVIEW}
776:
777: \vskip.15in
778: \diagram[p]{figure9}
779: \end{bwslide}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.