|
|
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.