Annotation of 43BSDReno/contrib/isode-beta/doc/cookbook/static.tex, revision 1.1.1.1

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}

unix.superglobalmegacorp.com

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