Annotation of 43BSDReno/contrib/isode-beta/doc/cookbook/model.tex, revision 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.