Annotation of 43BSDReno/contrib/isode-beta/doc/ftam/initiator.tex, revision 1.1.1.1

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}

unix.superglobalmegacorp.com

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