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