|
|
1.1 ! root 1: % run this through SLiTeX with the appropriate wrapper ! 2: ! 3: \begin{bwslide} ! 4: \part {ISSUES IN IMPLEMENTING A CLIENT OF THE VIRTUAL FILESTORE} ! 5: ! 6: \begin{nrtc}\bf ! 7: \item AN INTERACTIVE FTAM INITIATOR FOR UNIX ! 8: ! 9: \item DIRECTORY HANDLING ! 10: \end{nrtc} ! 11: \end{bwslide} ! 12: ! 13: ! 14: \begin{bwslide} ! 15: \ctitle {INITIATORS FOR FTAM} ! 16: ! 17: \begin{nrtc} ! 18: \item IN GENERAL, THREE APPROACHES ! 19: ! 20: \item THE INTERACTIVE APPROACH: USER (OR PROGRAM) EXPLICITLY INVOKES ! 21: A PROGRAM TO REQUEST FILE SERVICES ! 22: ! 23: \item THE APPLICATIONS APPROACH: PROGRAM INVOKES OTHER SERVICES ! 24: (e.g., DATABASE ACCESS) WHICH INVOKES FTAM ! 25: ! 26: \item THE EMBEDDED APPROACH: THE HOST KERNEL USES FTAM AS A PART OF ITS ! 27: FILESYSTEM REPETOIRE ! 28: \begin{nrtc} ! 29: \item THE USE OF FTAM IS TRANSPARENT TO USERS AND PROGRAMS ! 30: \end{nrtc} ! 31: ! 32: \item THE EMBEDED APPROACH IS THE MOSE USEFUL, BUT ALSO THE MOST COMPLICATED ! 33: \end{nrtc} ! 34: \end{bwslide} ! 35: ! 36: ! 37: \begin{bwslide} ! 38: \part* {AN INTERACTIVE FTAM INITIATOR FOR UNIX}%%%\bf ! 39: ! 40: \begin{nrtc}\small ! 41: \item IMPORTANT TO DISTINGUISH BETWEEN ! 42: \begin{nrtc} ! 43: \item THE USER INTERFACE: HOW THE PROGRAM INTERACTS WITH THE USER ! 44: ! 45: \item THE FTAM INTERFACE: HOW THE PROGRAM ACCESS THE FILE SERVICE ! 46: \end{nrtc} ! 47: ! 48: \item A ``FRIENDLY'' APPROACH WAS TAKEN FOR THE USER INTERFACE ! 49: \begin{nrtc} ! 50: \item USER COMMANDS TO THE INITIATOR APPEAR TO BE UNIX COMMANDS ! 51: \end{nrtc} ! 52: ! 53: \item SUPPORTS FTAM-3, NBS-2, NBS-9 ! 54: \begin{nrtc} ! 55: \item THE SAME DOCUMENT TYPES SUPPORTED BY THE RESPONDER ! 56: \end{nrtc} ! 57: ! 58: \item ABOUT 6000 LINES OF C CODE AND 150 LINES OF PEPY CODE ! 59: \end{nrtc} ! 60: \end{bwslide} ! 61: ! 62: ! 63: \begin{note}\em ! 64: the initiator, per se, currently runs on berkeley or at\&t unix ! 65: (although only the berkeley version has been extensively tested) ! 66: ! 67: the user interface was heavily inspired by the berkeley unix ftp client ! 68: \end{note} ! 69: ! 70: ! 71: \begin{bwslide} ! 72: \ctitle {COMMAND LOOP} ! 73: ! 74: \begin{nrtc} ! 75: \item ONCE INVOKED, PROGRAM PROMPTS AND ACCEPTS COMMANDS ! 76: ! 77: \item SOME COMMANDS RESULT IN FILE SERVICE ACTIONS ! 78: \begin{nrtc} ! 79: \item e.g., ASSOCIATE WITH FILESTORE ! 80: ! 81: \item UNEXPECTED DIAGNOSTICS ARE REPORTED TO THE USER ! 82: \end{nrtc} ! 83: ! 84: \item OTHER COMMANDS SET OPTIONS CONTROLLING USE OF FILE SERVICE ! 85: ! 86: \item OTHER COMMANDS SET OPTIONS CONTROLLING LOCAL SYSTEM ! 87: \end{nrtc} ! 88: \end{bwslide} ! 89: ! 90: ! 91: \begin{bwslide} ! 92: \ctitle {FILESTORE ASSOCIATION COMMANDS} ! 93: ! 94: \begin{nrtc} ! 95: \item OPEN host user [account] ! 96: \begin{nrtc} ! 97: \item PROMPTS FOR A PASSWORD ! 98: ! 99: \item ISSUES AN F-INITIALIZE.REQUEST AND AWAITS THE RESPONSE ! 100: \end{nrtc} ! 101: ! 102: \item CLOSE ! 103: \begin{nrtc} ! 104: \item TERMINATES THE ASSOCIATION WITH THE FILESTORE USING ! 105: F-TERMINATE.REQUEST ! 106: \end{nrtc} ! 107: ! 108: \item ABORT ! 109: \begin{nrtc} ! 110: \item UPON ENCOUNTERING A FATAL ERROR, F-U-ABORT.REQUEST IS USED ! 111: \end{nrtc} ! 112: ! 113: \item STATUS ! 114: \begin{nrtc} ! 115: \item REPORTS SUMMARY OF SERVICE PARAMETERS IN EFFECT OVER FTAM ! 116: REGIME ! 117: \end{nrtc} ! 118: \end{nrtc} ! 119: \end{bwslide} ! 120: ! 121: ! 122: \begin{bwslide} ! 123: \ctitle {EXAMPLE: FILESTORE ASSOCIATION COMMANDS}\small ! 124: ! 125: \begin{verbatim} ! 126: kr:22-- ftam ! 127: ftam> open gr ! 128: user (gr:mrose): mrose ! 129: password (gr:mrose): ! 130: ! 131: gr... connected ! 132: gr> status ! 133: associated with virtual filestore on "gr" as user "mrose" ! 134: service level: reliable, service class: transfer-and-management ! 135: functional units: 0x3b<READ,WRITE,LIMITED,ENHANCED,GROUPING> ! 136: attribute groups: 0x3<STORAGE,SECURITY> ! 137: document types: ! 138: 1.0.8571.6.3 unstructured binary file ! 139: 1.17.3.6.1 unstructured text file ! 140: 1.17.3.6.8 file directory file ! 141: estimated integral FADU size: 65502 ! 142: \end{verbatim} ! 143: \end{bwslide} ! 144: ! 145: ! 146: \begin{bwslide} ! 147: \ctitle {FILE TRANSFER COMMANDS} ! 148: ! 149: \begin{nrtc} ! 150: \item GET source destination ! 151: \begin{nrtc} ! 152: \item RETREIVES A FILE FROM THE FILESTORE ! 153: ! 154: \item FILE SERVICES ! 155: \begin{nrtc} ! 156: \item F-BEGIN-GROUP F-SELECT F-OPEN(READ) F-END-GROUP ! 157: ! 158: \item BULK DATA TRANSFER FOR READ ! 159: ! 160: \item F-BEGIN-GROUP F-CLOSE F-DESELECT F-END-GROUP ! 161: \end{nrtc} ! 162: \end{nrtc} ! 163: ! 164: \item PUT source destination ! 165: \begin{nrtc} ! 166: \item STORES A FILE ON THE FILESTORE ! 167: ! 168: \item FILE SERVICES ! 169: \begin{nrtc} ! 170: \item F-BEGIN-GROUP F-CREATE(OVERWRITE) F-OPEN(WRITE) F-END-GROUP ! 171: ! 172: \item BULK DATA TRANSFER FOR WRITE ! 173: ! 174: \item F-BEGIN-GROUP F-CLOSE F-DESELECT F-END-GROUP ! 175: \end{nrtc} ! 176: ! 177: \item OPTION SETTING DETERMINES OVERWRITE MODE ! 178: \end{nrtc} ! 179: \end{nrtc} ! 180: \end{bwslide} ! 181: ! 182: ! 183: \begin{note}\em ! 184: need to exercise a fair bit of caution in ordering of local file access for ! 185: the get command: ! 186: ! 187: \begin{quote} ! 188: ideally don't want to open file for write until remote open ! 189: has succeeded; but if local open fails, still have to do a little bit of bulk ! 190: data-transfer before backing out. ! 191: \end{quote} ! 192: \end{note} ! 193: ! 194: ! 195: \begin{bwslide} ! 196: \ctitle {FILE TRANSFER COMMANDS (cont.)} ! 197: ! 198: \begin{nrtc} ! 199: \item APPEND source destination ! 200: \begin{nrtc} ! 201: \item APPENDS TO A FILE IN THE FILESTORE ! 202: ! 203: \item FILE SERVICES: AS ABOVE, BUT F-CREATE(EXISTING) ! 204: \end{nrtc} ! 205: ! 206: \item OPTION SETTING DETERMINES EITHER TEXT OR BINARY ! 207: (BUT RESPONSE FROM SERVER OVERRIDES THIS) ! 208: ! 209: \item INTERRUPT FROM USER DURING TRANFSER INVOKES F-CANCEL SERVICE ! 210: \end{nrtc} ! 211: \end{bwslide} ! 212: ! 213: ! 214: \begin{bwslide} ! 215: \ctitle {EXAMPLE: FILE TRANSFER COMMANDS}\small ! 216: ! 217: \begin{verbatim} ! 218: gr> set type text ! 219: type = text - file transfer mode ! 220: gr> get manual.dvi manual.dvi ! 221: ftam: unstructured binary file transfer ! 222: ftam: 613628 bytes received in 10.33 seconds (58.00 Kbytes/s) ! 223: gr> get calendar calendar ! 224: ftam: 2051 bytes received in 0.13 seconds (15.06 Kbytes/s) ! 225: gr> ls ! 226: file: . ! 227: . .. .Xdefaults .mh_profile bin ! 228: calendar lib manual.dvi libisode.a mhbox ! 229: gr> get libisode.a libisode.a ! 230: ftam: unstructured binary file transfer ! 231: ^C ! 232: ftam: cancelling transfer ! 233: ftam: 196506 bytes received in 5.48 seconds (35.00 Kbytes/s) ! 234: \end{verbatim} ! 235: \end{bwslide} ! 236: ! 237: ! 238: \begin{note}\em ! 239: this is a good example of document type simplification: ! 240: ! 241: manual.dvi was not available as a text file, ! 242: hence the responder in the open request returned a simplification of the ! 243: document type requested ! 244: \end{note} ! 245: ! 246: ! 247: \begin{bwslide} ! 248: \ctitle {FILE MANAGEMENT COMMANDS} ! 249: ! 250: \begin{nrtc} ! 251: \item MV source destination ! 252: \begin{nrtc} ! 253: \item CHANGES THE NAME OF A FILE ! 254: ! 255: \item FILE SERVICES ! 256: \begin{nrtc} ! 257: \item F-BEGIN-GROUP F-SELECT F-CHANGE-ATTRIBUTE F-DESELECT ! 258: F-END-GROUP ! 259: \end{nrtc} ! 260: \end{nrtc} ! 261: ! 262: \item RM file ! 263: \begin{nrtc} ! 264: \item DELETES A FILE ! 265: ! 266: \item FILE SERVICES ! 267: \begin{nrtc} ! 268: \item F-BEGIN-GROUP F-SELECT F-DELETE F-END-GROUP ! 269: \end{nrtc} ! 270: \end{nrtc} ! 271: \end{nrtc} ! 272: \end{bwslide} ! 273: ! 274: ! 275: \begin{bwslide} ! 276: \ctitle {FILE MANAGEMENT COMMANDS (cont.)} ! 277: ! 278: \begin{nrtc} ! 279: \item LS file ! 280: \begin{nrtc} ! 281: \item LISTS THE ATTRIBUTES OF A FILE (USE DIR FOR LONG LISTING) ! 282: ! 283: \item FILE SERVICES ! 284: \begin{nrtc} ! 285: \item F-BEGIN-GROUP F-SELECT F-READ-ATTRIBUTE F-DESELECT F-END-GROUP ! 286: \end{nrtc} ! 287: ! 288: \item THE (APPROPRIATE) FTAM ATTRIBUTES ARE DISPLAYED AS UNIX ! 289: ATTRIBUTES ! 290: \end{nrtc} ! 291: \end{nrtc} ! 292: \end{bwslide} ! 293: ! 294: ! 295: \begin{bwslide} ! 296: \ctitle {EXAMPLE: FILE MANAGEMENT COMMANDS}\small ! 297: ! 298: \begin{verbatim} ! 299: gr> mv calendar oldcalendar ! 300: gr> rm manual.dvi ! 301: gr> ls . ! 302: . .. .Xdefaults .mh_profile bin ! 303: lib libisode.a mhbox oldcalendar ! 304: gr> mv oldcalendar calendar ! 305: gr> ls . ! 306: . .. .Xdefaults .mh_profile bin ! 307: calendar lib libisode.a mhbox ! 308: \end{verbatim} ! 309: \end{bwslide} ! 310: ! 311: ! 312: \begin{bwslide} ! 313: \ctitle {EXAMPLE: FILE MANAGEMENT COMMANDS (cont.)}\small ! 314: ! 315: \begin{verbatim} ! 316: gr> dir . ! 317: d mrose csl 1536 Jun 2 23:25 . ! 318: d root wheel 512 May 29 21:50 .. ! 319: t mrose csl 563 May 27 13:09 .Xdefaults ! 320: t mrose csl 1968 Apr 29 09:49 .mh_profile ! 321: d mrose csl 1536 May 29 21:58 bin ! 322: t mrose csl 2051 Jun 2 18:23 calendar ! 323: d mrose csl 512 May 4 19:13 lib ! 324: b mrose csl 691798 Jun 2 23:23 libisode.a ! 325: d mrose csl 1024 Jun 2 17:43 mhbox ! 326: \end{verbatim} ! 327: \end{bwslide} ! 328: ! 329: ! 330: \begin{bwslide} ! 331: \ctitle {WHAT THE RESPONDER PROVIDES}\small ! 332: ! 333: \begin{verbatim} ! 334: read F-READ-ATTRIB-response, context 1 ! 335: { ! 336: { ! 337: action-result success, ! 338: attributes { ! 339: { filename { "." } }, ! 340: { contents-type { document-type-name 1.17.3.6.8 } }, ! 341: { storage-account "csl" }, ! 342: { date-and-time-of-creation { actual-values "19870603062745Z" } }, ! 343: { date-and-time-of-last-modification ! 344: { actual-values "19870603062745Z" } ! 345: }, ! 346: { date-and-time-of-last-read-access ! 347: { actual-values "19870603062743Z" } ! 348: }, ! 349: { date-and-time-of-last-attribute-modification ! 350: { actual-values "19870603062745Z" } ! 351: }, ! 352: { identity-of-creator { actual-values "mrose" } }, ! 353: { identity-of-last-modifier { actual-values "mrose" } }, ! 354: \end{verbatim} ! 355: \end{bwslide} ! 356: ! 357: ! 358: \begin{bwslide}\small ! 359: \begin{verbatim} ! 360: { identity-of-last-reader { no-value-available "" } }, ! 361: { identity-of-last-attribute-modifier ! 362: { no-value-available "mrose" } ! 363: }, ! 364: { file-availability { actual-values immediate-availability } }, ! 365: { ! 366: permitted-actions { ! 367: actual-values { read, insert, replace, extend, erase, ! 368: read-attribute, change-attribute } } ! 369: }, ! 370: { filesize { actual-values 1536 } }, ! 371: { future-filesize { no-value-available "" } }, ! 372: { encryption-name { no-value-available "" } }, ! 373: { legal-qualification { no-value-available "" } } ! 374: } ! 375: } ! 376: } ! 377: \end{verbatim} ! 378: \end{bwslide} ! 379: ! 380: ! 381: \begin{bwslide} ! 382: \ctitle {LOCAL ENVIRONMENT COMMANDS (AND MISCELLANY)} ! 383: ! 384: \begin{nrtc} ! 385: \item LCD [file] ! 386: \begin{nrtc} ! 387: \item CHANGES THE WORKING DIRECTORY ON THE LOCAL SYSTEM ! 388: \end{nrtc} ! 389: ! 390: \item HELP [command] ! 391: ! 392: \item SET [variable [value]] ! 393: \end{nrtc} ! 394: \end{bwslide} ! 395: ! 396: ! 397: \begin{note}\em ! 398: also need protocol exception reporting and tracing ! 399: ! 400: for debugging complete stacks ! 401: (and resolving episodes of finger-pointing) ! 402: ! 403: good facilities for reporting exceptions and tracing protocol actions ! 404: are invaluable ! 405: \end{note} ! 406: ! 407: ! 408: \begin{bwslide} ! 409: \part* {DIRECTORY HANDLING}\bf ! 410: ! 411: \begin{nrtc} ! 412: \item WHAT ARE WE MISSING? ! 413: ! 414: \item SOME KIND OF RUDIMENTARY DIRECTORY FACILITIES ! 415: ! 416: \item WILDCARDING OF FILENAMES (GLOBBING) ! 417: \end{nrtc} ! 418: \end{bwslide} ! 419: ! 420: ! 421: \begin{bwslide} ! 422: \ctitle {DIRECTORY AND GLOBBING FUNCTIONS} ! 423: ! 424: \begin{nrtc} ! 425: \item CD [dir] ! 426: \begin{nrtc} ! 427: \item CHANGES THE WORKING DIRECTORY ON THE VIRTUAL FILESTORE ! 428: \end{nrtc} ! 429: ! 430: \item MKDIR dir ! 431: \begin{nrtc} ! 432: \item CREATES A DIRECTORY ON THE VIRTUAL FILESTORE ! 433: \end{nrtc} ! 434: ! 435: \item PWD ! 436: \begin{nrtc} ! 437: \item PRINTS THE WORKING DIRECTORY ON THE LOCAL SYSTEM AND THE ! 438: VIRTUAL FILESTORE ! 439: \end{nrtc} ! 440: ! 441: \item ECHO file $\ldots$ ! 442: \begin{nrtc} ! 443: \item EXPANDS WILDCARD EXPRESSIONS ! 444: \end{nrtc} ! 445: ! 446: \item PLUS: VIRTUAL FILESTORE FILENAME ARGUMENTS FOR ALL COMMANDS ARE ! 447: GLOBBED, DEPENDING ON OPTION SETTING ! 448: \end{nrtc} ! 449: \end{bwslide} ! 450: ! 451: ! 452: \begin{bwslide} ! 453: \ctitle {BUT HOW TO DO THIS?} ! 454: ! 455: \begin{nrtc} ! 456: \item MKDIR IS EASY ! 457: \begin{nrtc} ! 458: \item F-BEGIN F-CREATE(NBS-9) F-DESELECT F-END ! 459: \end{nrtc} ! 460: ! 461: \item BUT CD AND GLOBBING AREN'T POSSIBLE: ! 462: \begin{nrtc} ! 463: \item THE VIRTUAL FILESTORE LACKS A DIRECTORY CONCEPT ! 464: \end{nrtc} ! 465: ! 466: \item SUPPOSITION ! 467: \begin{nrtc} ! 468: \item IF WE KNOW THE RULES FOR BUILDING FILENAMES ON THE REMOTE ! 469: SYSTEM, ! 470: ! 471: \item THEN WE CAN EMULATE THIS CONCEPT IN THE INITIATOR! ! 472: ! 473: \item WE CAN ALSO MAKE THE USER INTERFACE SMARTER AS WELL ! 474: (BY DEFAULTING MISSING ARGUMENTS) ! 475: \end{nrtc} ! 476: \end{nrtc} ! 477: \end{bwslide} ! 478: ! 479: ! 480: \begin{bwslide} ! 481: \ctitle {APPROACH} ! 482: ! 483: \begin{nrtc} ! 484: \item LET THE ``REALSTORE'' OPTION DETERMINE HOW FILENAMES ARE BUILT ! 485: ! 486: \item ON A CD COMMAND ! 487: \begin{nrtc} ! 488: \item REMEMBER THE ARGUMENT ! 489: ! 490: \item NORMALIZE FUTURE ARGUMENTS USING THIS STRING ! 491: \end{nrtc} ! 492: ! 493: \item FOR GLOBBING ! 494: \begin{nrtc} ! 495: \item BASED ON THE REALSTORE, SELECT A GLOBBING ROUTINE WHICH ! 496: IS INTEGRATED WITH FTAM ! 497: ! 498: \item FOR THE UNIX LOCALSTORE THIS IS TRIVIAL ! 499: \end{nrtc} ! 500: \end{nrtc} ! 501: \end{bwslide} ! 502: ! 503: ! 504: \begin{note}\em ! 505: the globbing facility in the interactive ftam initiator is ! 506: based on routines generously supplied by u.c. berkeley ! 507: \end{note} ! 508: ! 509: ! 510: \begin{bwslide} ! 511: \ctitle {EXAMPLE: DIRECTORY HANDLING COMMANDS}\small ! 512: ! 513: \begin{verbatim} ! 514: gr> set realstore unix ! 515: realstore = unix - type of remote realstore ! 516: gr> ls ! 517: bin lib mhbox ! 518: calendar libisode.a nrtc ! 519: gr> ls lib ! 520: MakeUpdEnv ctype icons notes termcap ! 521: bfly emacs la-template sl-template tex82 ! 522: gr> ls lib/*tem* ! 523: lib/la-template: ! 524: Makefile template.bbl template.tex text.tex version.sh ! 525: ! 526: lib/sl-template: ! 527: Makefile figure.pic template.tex ! 528: gr> cd lib/sl-template ! 529: gr> pwd ! 530: local directory: /f/iso/ftam2 ! 531: virtual filestore directory: lib/sl-template ! 532: gr> ls ! 533: Makefile figure.pic template.tex ! 534: \end{verbatim} ! 535: \end{bwslide} ! 536: ! 537: ! 538: \begin{bwslide} ! 539: \ctitle {THE REALSTORE CONTROVERSY} ! 540: ! 541: \begin{nrtc} ! 542: \item THIS IS AN $M*N$ (RATHER THAN $M+N\/$) APPROACH ! 543: \begin{nrtc} ! 544: \item THE INITIATOR ON ALL LOCAL SYSTEMS MUST POTENTIALLY KNOW ABOUT ! 545: ALL LOCAL SYSTEMS HOSTING A VIRTUAL FILESTORE ! 546: \end{nrtc} ! 547: ! 548: \item NEEDLESS TO SAY THIS IS CONTRARY TO THE OSI PHILOSOPHY ! 549: \begin{nrtc} ! 550: \item IT'S PROBABLY WORSE THAN THE PRIVATE ATTRIBUTE GROUP IN ! 551: THE FILESTORE ! 552: \end{nrtc} ! 553: ! 554: \item IT'S ALSO AMAZINGLY USEFUL\\ (THE FOREWARD PROGRESS ARGUMENT) ! 555: ! 556: \item THE BEST SOLUTION, HOWEVER, WOULD BE FOR FTAM TO BE FIXED ! 557: \end{nrtc} ! 558: \end{bwslide} ! 559: ! 560: ! 561: \begin{bwslide} ! 562: \part* {SUMMARY}\bf ! 563: ! 564: \begin{nrtc} ! 565: \item AN INTERACTIVE FTAM CLIENT WITH REASONABLE CAPABILITIES CAN BE ! 566: IMPLEMENTED IN A STRAIGHT-FORWARD FASHION ! 567: ! 568: \item DIRECTORY HANDLING CAN BE IMPLEMENTED, BUT AT A CONCEPTUAL COST ! 569: \end{nrtc} ! 570: \end{bwslide}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.