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

1.1       root        1: % -*- LaTeX -*-                (really SLiTeX)
                      2: 
                      3: \begin{bwslide}
                      4: \part  {A MODEL FOR DISTRIBUTED APPLICATIONS}\bf
                      5: 
                      6: \begin{nrtc}
                      7: \item  ABSTRACT DATA TYPES
                      8: 
                      9: \item  OPERATIONS
                     10: 
                     11: \item  ASSOCIATIONS
                     12: 
                     13: \item  DESIGN GUIDELINES
                     14: 
                     15: \item  IN PERSPECTIVE
                     16: \end{nrtc}
                     17: \end{bwslide}
                     18: 
                     19: 
                     20: \begin{note}\em
                     21: this part of the presentation corresponds to chapter~2 in The Application
                     22: Cookbook
                     23: 
                     24: our focus is on the 1984--style of remote operations ([X.410])
                     25: and the newer joint-iso-ccitt work ([ISO~9072/1])
                     26: \end{note}
                     27: 
                     28: 
                     29: \begin{bwslide}
                     30: \ctitle        {USE OF REMOTE OPERATIONS IN OSI}
                     31: 
                     32: \begin{nrtc}
                     33: \item  {}[ECMA~TR/31] PRESENTS A METHOD FOR USING REMOTE OPERATIONS TO:
                     34:     \begin{nrtc}
                     35:     \item      SPECIFY THE EXTERNALLY VISIBLE CHARACTERISTICS
                     36:                NEEDED FOR INTERCONNECTION
                     37: 
                     38:     \item      WHILE AVOIDING UNNECESSARY CONSTRAINTS UPON THE
                     39:                INTERNAL DESIGN OF THE SYSTEMS TO BE INTERCONNECTED
                     40:     \end{nrtc}
                     41: 
                     42: \item  ALTHOUGH THE LATTER HALF OF THIS DOCUMENT (THE PROTOCOL) IS NOW
                     43:        OBSOLETE, THE FIRST FOUR SECTIONS (THE METHOD) ARE QUITE RELEVANT
                     44: 
                     45: \item  {}[ECMA~TR/31] IS BASED ON [X.410],
                     46:        WE TERM THIS ``OLD-STYLE'' ROS
                     47: 
                     48: \item  {}[ISO~9072] IS THE NEWER JOINT ISO/CCITT WORK,
                     49:        WE TERM THIS ``NEW-STYLE'' ROS
                     50: \end{nrtc}
                     51: \end{bwslide}
                     52: 
                     53: 
                     54: \begin{note}\em
                     55: note that ECMA documents are not standards,
                     56: though they may be used as contributions to the standards process
                     57: \end{note}
                     58: 
                     59: 
                     60: \begin{bwslide}
                     61: \ctitle        {A BIT OF HISTORY}
                     62: 
                     63: \begin{nrtc}
                     64: \item  XEROX's COURIER WAS THE FIRST WELL-KNOWN SYSTEM TO USE THIS APPROACH
                     65: 
                     66: \item  BUT EVEN IN THE EARLY 70's, SIMILAR IDEAS WERE BEING EXPLORED
                     67:        ELSEWHERE (e.g., MIT)
                     68: 
                     69: \item  TODAY, SUN's RPC AND APOLLO's NCS ARE CONTINUING IN THIS VEIN
                     70: \end{nrtc}
                     71: \end{bwslide}
                     72: 
                     73: 
                     74: \begin{bwslide}
                     75: \part* {ABSTRACT DATA TYPES}\bf
                     76: 
                     77: \begin{nrtc}
                     78: \item  REMOTE OPERATIONS ARE A MECHANISM BY WHICH LOOSELY COUPLED SYSTEMS
                     79:        INTERACT
                     80: 
                     81: \item  BUT, REMOTE OPERATIONS ARE ONLY ONE PART OF A LARGER PICTURE HOWEVER
                     82: 
                     83: \item  THE FUNDAMENTAL CONCEPT IS THAT OF THE \emph{ABSTRACT DATA TYPE}
                     84: \end{nrtc}
                     85: \end{bwslide}
                     86: 
                     87: 
                     88: \begin{bwslide}
                     89: \ctitle        {ABSTRACT DATA TYPES}
                     90: 
                     91: \begin{nrtc}
                     92: \item  PUT SIMPLY, AN ABSTRACT DATA TYPE DEFINES BOTH
                     93:     \begin{nrtc}
                     94:     \item      THE DATA STRUCTURE CONTAINED IN AN OBJECT (SYNTAX), AND
                     95: 
                     96:     \item      HOW THAT DATA IS INTERPRETED (SEMANTICS)
                     97:     \end{nrtc}
                     98: 
                     99: \item  THIS IS HARDLY A NEW CONCEPT
                    100:     \begin{nrtc}
                    101:     \item      e.g., SMALLTALK, SIMULA, and so on
                    102:     \end{nrtc}
                    103: \end{nrtc}
                    104: \end{bwslide}
                    105: 
                    106: 
                    107: \begin{bwslide}
                    108: \ctitle        {PROPERTIES OF ABSTRACT DATA TYPES:\\ REPRESENTATION}
                    109: 
                    110: \begin{nrtc}
                    111: \item  DATA STRUCTURES IN PROGRAMMING LANGUAGES HAVE A \emph{CONCRETE}
                    112:        REPRESENTATION
                    113:     \begin{nrtc}
                    114:     \item      WHICH IS DEFINED BY THE PROGRAMMING LANGUAGE AND THE
                    115:                UNDERLYING HARDWARE
                    116: 
                    117:     \item      e.g., BYTE-ORDERING, WORD SIZE, etc.
                    118:     \end{nrtc}
                    119: 
                    120: \item  THE CORRESPONDING ABSTRACT DATA TYPE IS DEFINED IN AN
                    121:        IMPLEMENTATION-INDEPENDENT FASHION
                    122:     \begin{nrtc}
                    123:     \item      TERMED THE \emph{ABSTRACT SYNTAX}
                    124:     \end{nrtc}
                    125: 
                    126: \item  AN APPLICATION CAN EXPECT THIS TO BEHAVE CONSISTENLY REGARDLESS OF THE
                    127:        HARDWARE ON WHICH IT IS RUNNING
                    128: \end{nrtc}
                    129: \end{bwslide}
                    130: 
                    131: 
                    132: \begin{bwslide}
                    133: \ctitle        {REPRESENTATION: EXAMPLE}
                    134: 
                    135: \vskip.15in
                    136: \begin{verbatim}
                    137: struct mail_address {
                    138:     char   *local;
                    139:     char   *domain;
                    140: 
                    141:     unsigned char options;
                    142: #define default_local 0x01
                    143: #define default_host  0x02
                    144: };
                    145: \end{verbatim}
                    146: \end{bwslide}
                    147: 
                    148: 
                    149: \begin{bwslide}
                    150: \ctitle        {REPRESENTATION: EXAMPLE (cont.)}
                    151: 
                    152: \vskip.15in
                    153: \begin{verbatim}
                    154: Mail-Address ::=
                    155:         [APPLICATION 2]
                    156:             IMPLICIT SEQUENCE {
                    157:                 local[0]
                    158:                     IMPLICIT GraphicString,
                    159: 
                    160:                 domain[1]
                    161:                     IMPLICIT GraphicString,
                    162: 
                    163:                 options[2]
                    164:                     IMPLICIT BITSTRING {
                    165:                         default-local(0), default-host(1)
                    166:                     }
                    167:                     DEFAULT { default-local, default-host }
                    168:             }
                    169: \end{verbatim}
                    170: \end{bwslide}
                    171: 
                    172: 
                    173: \begin{bwslide}
                    174: \ctitle        {PROPERTIES OF ABSTRACT DATA TYPES:\\ SERIALIZATION}
                    175: 
                    176: \begin{nrtc}
                    177: \item  \emph{ABSTRACT TRANSFER NOTATION}:
                    178:     \begin{nrtc}
                    179:     \item      A WELL-DEFINED SET OF RULES USED TO DEFINE HOW ABSTRACT DATA
                    180:                TYPES ARE TRANSMITTED THROUGH THE NETWORK
                    181:     \end{nrtc}
                    182: \end{nrtc}
                    183: \end{bwslide}
                    184: 
                    185: 
                    186: \begin{bwslide}
                    187: \ctitle        {SERIALIZATION (cont.)}
                    188: 
                    189: \begin{nrtc}
                    190: \item  CONCEPTUALLY, TWO MAPPINGS OCCUR
                    191: 
                    192: \item  FIRST, THE DATA STRUCTURE IS MAPPED TO THE ABSTRACT SYNTAX FOR ITS
                    193:        CORRESPONDING ABSTRACT DATA TYPE
                    194:     \begin{nrtc}
                    195:     \item      THIS IS A LOCAL ISSUE
                    196:     \end{nrtc}
                    197: 
                    198: \item  SECOND, THE ABSTRACT SYNTAX IS MAPPED TO THE CONCRETE SYNTAX,
                    199:        A STREAM OF OCTETS
                    200:     \begin{nrtc}
                    201:     \item      THE ABSTRACT TRANSFER NOTATION IS USUALLY [ISO~8825]
                    202: 
                    203:     \item      OTHER POSSIBILITIES INCLUDE COMPRESSION, ENCRYPTION, etc.
                    204:     \end{nrtc}
                    205: 
                    206: \item  NOTE THAT THE CONCRETE REPRESENTATION MENTIONED EARLIER FOR
                    207:        DATA STRUCTURES IS {\bf NOT\/} THE SAME AS THE CONCRETE SYNTAX
                    208: \end{nrtc}
                    209: \end{bwslide}
                    210: 
                    211: 
                    212: \begin{bwslide}
                    213: \ctitle        {PROPERTIES OF ABSTRACT DATA TYPES:\\ OPERATIONS}
                    214: 
                    215: \begin{nrtc}
                    216: \item  ACCESS TO AN ABSTRACT DATA TYPE IS DEFINED BY A SET OF PRIMITIVE
                    217:        ACTIONS
                    218: 
                    219: \item  EACH PRIMITIVE ACTION IS TERMED AN \emph{OPERATION}
                    220: 
                    221: \item  THIS SET OF OPERATIONS DEFINES THE COMPLETE BEHAVIOR OF AN ABSTRACT
                    222:        DATA TYPE
                    223: \end{nrtc}
                    224: \end{bwslide}
                    225: 
                    226: 
                    227: \begin{bwslide}
                    228: \ctitle        {PROPERTIES OF ABSTRACT DATA TYPES:\\ OBJECT MODEL}
                    229: 
                    230: \begin{nrtc}
                    231: \item  SINCE OPERATIONS INTRODUCE A LEVEL OF INDIRECTION,
                    232:        USING ABSTRACT DATA TYPES RATHER THAN CONCRETE DATA STUCTURES
                    233:        PERMITS ACCESS TO DATA STRUCTURES WITHOUT REGARD TO THEIR ACTUAL
                    234:        IMPLEMENTATION
                    235: \end{nrtc}
                    236: \end{bwslide}
                    237: 
                    238: 
                    239: \begin{bwslide}
                    240: \part* {OPERATIONS}\bf
                    241: 
                    242: \begin{nrtc}
                    243: \item  IN ITS PRIMITIVE FORM,
                    244:        AN \emph{OPERATION} IS A SIMPLE REQUEST/REPLY INTERACTION
                    245: 
                    246: \item  A \emph{INVOCATION} GENERATES ONE OF THREE OUTCOMES:
                    247:     \begin{nrtc}
                    248:     \item      A \emph{RESULT}, IF THE OPERATION SUCCEEDS;
                    249: 
                    250:     \item      AN \emph{ERROR}, IF THE OPERATION FAILED; or,
                    251: 
                    252:     \item      A \emph{REJECTION}, IF THE OPERATION WAS NOT PERFORMED
                    253:     \end{nrtc}
                    254: 
                    255: \item  OPERATIONS ARE SAID TO BE \emph{TOTAL}, AS THE NORMAL OUTCOME (RESULT),
                    256:        AND THE EXCEPTION OUTCOMES (THE ERRORS) ARE WELL-DEFINED AND
                    257:        UNAMBIGUOUS
                    258: \end{nrtc}
                    259: \end{bwslide}
                    260: 
                    261: 
                    262: \begin{bwslide}
                    263: \ctitle        {PROPERTIES OF OPERATIONS:\\ INVOCATIONS}
                    264: 
                    265: \begin{nrtc}
                    266: \item  THE OPERATION IS \emph{INVOKED} WHEN IT IS REQUESTED
                    267: 
                    268: \item  AN INVOCATION CONSISTS OF:
                    269:     \begin{nrtc}
                    270:     \item      AN \emph{OPERATION NUMBER} IDENTIFYING THE OPERATION REQUESTED
                    271: 
                    272:     \item      AN ARBITRARILY COMPLEX \emph{ARGUMENT}
                    273: 
                    274:     \item      AN \emph{INVOCATION IDENTIFIER} DISTINGUISHING THIS INVOCATION
                    275:                FROM PREVIOUS INVOCATIONS
                    276: 
                    277:     \item      (POSSIBLY) A \emph{LINKED-INVOCATION IDENTIFIER}
                    278:     \end{nrtc}
                    279: \end{nrtc}
                    280: \end{bwslide}
                    281: 
                    282: 
                    283: \begin{bwslide}
                    284: \ctitle        {LINKED INVOCATIONS}
                    285: 
                    286: \begin{nrtc}
                    287: \item  INTRODUCED IN THE NEWER JOINT ISO/CCITT WORK
                    288: 
                    289: \item  SOMETIMES REFERRED TO AS A ``CALLBACK'' OR A ``REMOTE UPCALL''
                    290: \end{nrtc}
                    291: \end{bwslide}
                    292: 
                    293: 
                    294: \begin{bwslide}
                    295: \ctitle        {EXAMPLE:\\ LINKED INVOCATIONS}
                    296: 
                    297: \begin{nrtc}
                    298: \item  CONSIDER AN OPERATION \verb"Traverse", WITH TWO ARGUMENTS:
                    299:     \begin{nrtc}
                    300:     \item      THE NAME OF A REMOTE DIRECTORY IN A FILESYSTEM
                    301: 
                    302:     \item      THE NUMBER OF AN OPERATION TO INVOKE FOR EACH FILE
                    303:                (WITH A HANDLE TO THE FILE)
                    304:     \end{nrtc}
                    305: 
                    306: \item  TO LIST A REMOTE DIRECTORY:
                    307: \begin{verbatim}
                    308: Traverse (``directory-name'', ListFile)
                    309: \end{verbatim}
                    310: 
                    311: \item  TO PRINT EACH FILE IN A REMOTE DIRECTORY:
                    312: \begin{verbatim}
                    313: Traverse (``directory-name'', PrintFile)
                    314: \end{verbatim}
                    315: \end{nrtc}
                    316: \end{bwslide}
                    317: 
                    318: 
                    319: \begin{bwslide}
                    320: \ctitle        {PROPERTIES OF OPERATIONS:\\ RESULTS}
                    321: 
                    322: \begin{nrtc}
                    323: \item  IF THE OPERATION SUCCEEDS, THEN A RESULT IS RETURNED
                    324: 
                    325: \item  A RESULT CONSISTS OF:
                    326:     \begin{nrtc}
                    327:     \item      AN INVOCATION IDENTIFIER CORRESPONDING TO THE OPERATION WHICH
                    328:                SUCCEEDED
                    329: 
                    330:     \item      (POSSIBLY) AN ARBITRARILY COMPLEX \emph{RESULT}
                    331:     \end{nrtc}
                    332: \end{nrtc}
                    333: \end{bwslide}
                    334: 
                    335: 
                    336: \begin{note}\em
                    337: actually, on success a result \emph{may optionally} be returned as some
                    338: operations are defined to not return any result
                    339: 
                    340: this violates the totality principle, a solution is discussed later on
                    341: \end{note}
                    342: 
                    343: 
                    344: \begin{bwslide}
                    345: \ctitle        {PROPERTIES OF OPERATIONS:\\ ERRORS}
                    346: 
                    347: \begin{nrtc}
                    348: \item  IF THE OPERATION FAILS, THEN AN ERROR IS RETURNED
                    349: 
                    350: \item  AN ERROR CONSISTS OF:
                    351:     \begin{nrtc}
                    352:     \item      AN INVOCATION IDENTIFIER CORRESPONDING TO THE OPERATION WHICH
                    353:                FAILED
                    354: 
                    355:     \item      AN \emph{ERROR NUMBER} IDENTIFYING THE ERROR ENCOUNTERED
                    356: 
                    357:     \item      (POSSIBLY) AN ARBITRARILY COMPLEX \emph{PARAMETER}
                    358:     \end{nrtc}
                    359: 
                    360: \item  NOTE THAT ERRORS DO NOT NECESSARILY INDICATE BAD BEHAVIOR!
                    361:     \begin{nrtc}
                    362:     \item      THEY CAN OCCUR AS A PART OF CORRECT AND NORMAL OPERATIONS
                    363: 
                    364:        \item   HENCE, THINK OF THEM AS EXCEPTIONS
                    365:     \end{nrtc}
                    366: \end{nrtc}
                    367: \end{bwslide}
                    368: 
                    369: 
                    370: \begin{bwslide}
                    371: \ctitle        {PROPERTIES OF OPERATIONS:\\ REJECTIONS}
                    372: 
                    373: \begin{nrtc}
                    374: \item  IF THE OPERATION CAN NOT BE PERFORMED, THEN A REJECTION IS RETURNED
                    375: 
                    376: \item  A REJECTION CONSISTS OF:
                    377:     \begin{nrtc}
                    378:     \item      AN INVOCATION IDENTIFIER CORRESPONDING TO THE OPERATION WHICH
                    379:                WAS REJECTED
                    380: 
                    381:     \item      A \emph{REASON} EXPLAINING WHY THE OPERATION WAS REJECTED
                    382:        \begin{nrtc}
                    383:        \item   e.g., MISTYPED PARAMETERS
                    384:        \end{nrtc}
                    385:     \end{nrtc}
                    386: 
                    387: \item  SOME REJECTIONS ARE USER-INITIATED, OTHERS ARE PROVIDER-INITIATED
                    388: \end{nrtc}
                    389: \end{bwslide}
                    390: 
                    391: 
                    392: \begin{bwslide}
                    393: \part* {ASSOCIATIONS}\bf
                    394: 
                    395: \begin{nrtc}
                    396: \item  AN \emph{ASSOCIATION} IS A BINDING BETWEEN TWO ENTITIES,
                    397:        THE \emph{INITIATOR} AND THE \emph{RESPONDER}
                    398: 
                    399: \item  ASSOCIATIONS EXIST AT THE APPLICATION LAYER AND
                    400:        RELY ON AN UNDERLYING CONNECTION
                    401: 
                    402: \item  ASSOCIATIONS MAY BE SYMMETRIC, i.e., THEY DON'T HAVE TO FOLLOW A
                    403:        CLIENT/SERVER MODEL
                    404: \end{nrtc}
                    405: \end{bwslide}
                    406: 
                    407: 
                    408: \begin{bwslide}
                    409: \ctitle        {ASSOCIATIONS (cont.)}
                    410: 
                    411: \begin{nrtc}
                    412: \item  THE BINDING OCCURS IN A TWO-STEP PROCESS
                    413: 
                    414: \item  FIRST, THE INITIATOR DETERMINES WHICH SERVICE IT REQUIRES,
                    415:        AND ASKS (DIRECTORY SERVICES) TO MAP THIS SERVICE ONTO
                    416:        ENTITIES AVAILABLE ON THE NETWORK
                    417: 
                    418: \item  SECOND, BASED ON THE INITIATOR'S COMMUNICATION NEEDS
                    419:        (QUALITY OF SERVICE), AN ASSOCIATION WILL BE BOUND TO ONE OF
                    420:        THOSE ENTITIES WHICH BECOMES THE RESPONDER
                    421: \end{nrtc}
                    422: \end{bwslide}
                    423: 
                    424: 
                    425: \begin{bwslide}
                    426: \part* {DESIGN GUIDELINES}\bf
                    427: 
                    428: \begin{nrtc}
                    429: \item  THE CHARACTERISTICS OF OPERATIONS WILL VARY WIDELY BETWEEN APPLICATIONS
                    430: 
                    431: \item  HOWEVER, THERE ARE TWO ISSUES OF UNIVERSAL INTEREST TO BE CONSIDERED
                    432: \end{nrtc}
                    433: \end{bwslide}
                    434: 
                    435: 
                    436: \begin{bwslide}
                    437: \ctitle        {RELIABILITY CHARACTERISTICS}
                    438: 
                    439: \begin{nrtc}
                    440: \item  UNCERTAINTY DURING EXECUTION OF OPERATIONS IS ALWAYS PRESENT
                    441: 
                    442: \item  THIS IS PARTICULARLY TROUBLESOME IF THE NETWORK ``BREAKS''
                    443:        AFTER A REQUEST IS RECEIVED BY THE RESPONDER BUT BEFORE
                    444:        THE INITIATOR RECEIVES THE REPLY
                    445: 
                    446: \item  ONE SCHEME OF CLASSIFYING THE RELIABILITY REQUIREMENTS OF AN OPERATION
                    447:        IS:
                    448:     \begin{nrtc}
                    449:     \item      EXACTLY ONCE
                    450: 
                    451:     \item      AT LEAST ONCE (IDEMPOTENT)
                    452: 
                    453:     \item      AT MOST ONCE
                    454:     \end{nrtc}
                    455: 
                    456: \item  IMPLEMENTING THESE SEMANTICS IS POSSIBLE USING THE INVOCATION
                    457:        IDENTIFIER
                    458:     \begin{nrtc}
                    459:     \item      BUT IS THE RESPONSBILITY OF THE USER OF REMOTE OPERATIONS
                    460:     \end{nrtc}
                    461: \end{nrtc}
                    462: \end{bwslide}
                    463: 
                    464: 
                    465: \begin{note}\em
                    466: note that ``initiator'' here doesn't necessarily mean the entity which
                    467: initiated the association
                    468: 
                    469: i.e., an entity can start an association, and then it's peer could possibly
                    470: initiate all of the operations
                    471: \end{note}
                    472: 
                    473: 
                    474: \begin{bwslide}
                    475: \ctitle        {RELIABILITY CHARACTERISTIC:\\ EXACTLY ONCE}
                    476: 
                    477: \begin{nrtc}
                    478: \item  RESPONDER
                    479:     \begin{nrtc}
                    480:     \item      KEEPS TRACK OF THE INVOCATION IDENTIFIERS OF ALL PERFORMED
                    481:                OPERATIONS
                    482: 
                    483:     \item      WHEN PROCESSING AN INVOCATION, IF AN INVOCATION IDENTIFIER IS
                    484:                REPEATED, REJECT THE OPERATION 
                    485:     \end{nrtc}
                    486: 
                    487: \item  INITIATOR
                    488:     \begin{nrtc}
                    489:     \item      REPEATEDLY INVOKES THE OPERATION USING THE SAME INVOCATION
                    490:                IDENTIFIER UNTIL EITHER
                    491: 
                    492:     \item      A CONFIRMATION (RESULT OR ERROR) IS RECEIVED, OR
                    493: 
                    494:     \item      A REJECTION (DUPLICATE OPERATION) IS RECEIVED
                    495:     \end{nrtc}
                    496: 
                    497: \item  A ROS BUG: REJECTION DOES NOT INCLUDE THE VALUE OF THE PREVIOUS RESULT!
                    498: \end{nrtc}
                    499: \end{bwslide}
                    500: 
                    501: 
                    502: \begin{bwslide}
                    503: \ctitle        {RELIABILITY CHARACTERISTIC:\\ AT LEAST ONCE}
                    504: 
                    505: \begin{nrtc}
                    506: \item  RESPONDER
                    507:     \begin{nrtc}
                    508:     \item      KEEPS NO INFORMATION REGARDING PREVIOUSLY PERFORMED OPERATIONS
                    509:     \end{nrtc}
                    510: 
                    511: \item  INITIATOR
                    512:     \begin{nrtc}
                    513:     \item      REPEATEDLY INVOKES THE OPERATION (WITH ANY INVOCATION
                    514:                IDENTIFIER) UNTIL
                    515: 
                    516:     \item      A CONFIRMATION (RESULT OR ERROR) IS RECEIVED
                    517:     \end{nrtc}
                    518: \end{nrtc}
                    519: \end{bwslide}
                    520: 
                    521: 
                    522: \begin{bwslide}
                    523: \ctitle        {RELIABILITY CHARACTERISTIC:\\ AT MOST ONCE}
                    524: 
                    525: \begin{nrtc}
                    526: \item  RESPONDER
                    527:     \begin{nrtc}
                    528:     \item      KEEPS NO INFORMATION REGARDING PREVIOUSLY PERFORMED OPERATIONS
                    529:     \end{nrtc}
                    530: 
                    531: \item  INITIATOR
                    532:     \begin{nrtc}
                    533:     \item      INVOKES THE OPERATION (WITH ANY INVOCATION IDENTIFIER)
                    534:                EXACTLY ONCE
                    535:     \end{nrtc}
                    536: \end{nrtc}
                    537: \end{bwslide}
                    538: 
                    539: 
                    540: \begin{bwslide}
                    541: \ctitle        {KEEPING TOTAL OPERATIONS TOTAL}
                    542: 
                    543: \begin{nrtc}
                    544: \item  IN THE OSI FRAMEWORK, IT IS POSSIBLE TO DEFINE OPERATIONS WHICH:
                    545:     \begin{nrtc}
                    546:     \item      RETURN A RESULT, BUT NO ERRORS
                    547: 
                    548:     \item      RETURN ONLY ERRORS
                    549:     \end{nrtc}
                    550: 
                    551: \item  THIS CAN POTENTIALLY VIOLATE THE TOTALITY PRINCIPLE
                    552:     \begin{nrtc}
                    553:     \item      (ALL OUTCOMES ARE WELL-DEFINED AND UNAMBIGUOUS)
                    554:     \end{nrtc}
                    555:     AS AN OPERATION WHICH SUCCEEDS BUT RETURNS NO RESULT WILL RETURN NOTHING!
                    556: 
                    557: \item  THIS IN TURN LEADS TO PROBLEMS WHEN THE INITIATOR TRIES TO DETERMINE
                    558:        IF THE OPERATION SUCCEEDED OR NOT (HOW LONG TO WAIT FOR AN ERROR?)
                    559: 
                    560: \item  SOLUTION: OPERATIONS SHOULD ALWAYS BE ABLE TO RETURN A RESULT,
                    561:        EVEN IF THAT RESULT IS \verb"NULL"
                    562: \end{nrtc}
                    563: \end{bwslide}
                    564: 
                    565: 
                    566: \begin{note}\em
                    567: note that this totality issue is a philosophical one
                    568: 
                    569: some may argue that it is valid only for a class of applications
                    570: \end{note}
                    571: 
                    572: 
                    573: \begin{bwslide}
                    574: \part* {IN PERSPECTIVE}\bf
                    575: 
                    576: \begin{nrtc}
                    577: \item  IDEALLY WOULD LIKE TO HIDE ALL (OR MOST) OF THIS FORMALISM FROM
                    578:        THE PROGRAMMER
                    579: 
                    580: \item  INSTEAD, WE'D LIKE TO PRESENT A SIMPLE PROCEDURE CALL MODEL IN WHICH
                    581:        WE DEFINE:
                    582:         \begin{nrtc}
                    583:        \item   THE INTERFACE TO EACH OPERATION AS A SUBROUTINE CALL
                    584: 
                    585:        \item   WITH KNOWN ARGUMENT TYPES
                    586:        \end{nrtc}
                    587: \end{nrtc}
                    588: \end{bwslide}
                    589: 
                    590: 
                    591: \begin{bwslide}
                    592: \ctitle        {AN EXAMPLE (cont.)}
                    593: 
                    594: \vskip.15in
                    595: \begin{verbatim}
                    596: int     op_CMIP_m__ConfirmedEventReport (sd, in, out, roi)
                    597: int     sd;
                    598: struct type_CMIP_EventReportArgument *in;
                    599: struct type_CMIP_EventReportResult *out;
                    600: struct RoSAPindication *roi;
                    601: \end{verbatim}
                    602: \end{bwslide}
                    603: 
                    604: 
                    605: \begin{bwslide}
                    606: \ctitle        {AN EXAMPLE (cont.)}
                    607: 
                    608: \vskip.15in
                    609: \begin{verbatim}
                    610: struct type_CMIP_EventReportArgument {
                    611:     struct type_CMIP_ObjectClass *managedObjectClass;
                    612: 
                    613:     struct type_CMIP_ObjectInstance *managedObjectInstance;
                    614: 
                    615:     struct type_CMIP_EventTypeID *eventType;
                    616: 
                    617:     struct type_UNIV_GeneralizedTime *eventTime;
                    618: 
                    619:     struct type_CMIP_EventInfo *eventInfo;
                    620: };
                    621: \end{verbatim}
                    622: \end{bwslide}

unix.superglobalmegacorp.com

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