|
|
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}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.