Annotation of 43BSDReno/contrib/isode-beta/doc/practical-osi1/a-build-2.tex, revision 1.1.1.1

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}

unix.superglobalmegacorp.com

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