[comp.sys.apollo] Multiple links

sundar@case.CSNET (Sundar Iyengar) (05/15/87)

Is it possible on Aegis to associate mutiple links with a name
arranged by some priority, so that the name is always resolved
to the highest prority object on the list, provided it is available?
If not, successively next ones on the list should be accessed.
For example, we would like a link called x to point to
//x1/a, //x2/a, //x3/a....  Every time x is referenced, it should
be resolved to //x1/a.  However, if the node x1 is down or not accessible,
x should resolve to //x2/b, and so on.  Similarly for links to
other objects.

Thanks.

Sundar R. Iyengar		

ARPA:  sundar%case.csnet      CSNET: sundar@case
UUCP:  {decvax,cbatt,cbosgd,sun}!cwruecmp!sundar

USNAIL: 531, Crawford, Case Western Reserve University
        Cleveland, OH 44106

paul@FLEETWOOD.CC.UMICH.EDU.UUCP (05/15/87)

It would be pretty hi-tech to have a function evaluated as part of a
path name, in addition to the environment variable (or something else a
little more flexible).  Or, in some other fashion to have the value of
environment vars change on the fly, as it were.

The first time a path was resolved, the result of the evaluation could
be cached, or what have you, and then have some magic that would tell
when the cached entry was stale, and the link should be re-evaluated.

Or something.

--paul

krowitz@mit-kermit.UUCP.UUCP (05/16/87)

Actually, if you think about it, it's not all that hi-tech at all
considering what the Apollo file system does already. The extensible
streams functions allow the user to evaluate any sort of function that
he/she cares to write code for. It just takes the time for someone to
sit down a do it. One simply (simple if you're used to write new
object type managers) has to define a new type of link which tests
if the object pointed to is available, and if not, tries an alternate
object.

While I'm at it, does anyone know if Apollo teaches any courses on
writing type managers using the Open System Toolkit. I glanced through
the manual and it was less than crystal clear (at least for people who
aren't used to writing file systems).


                                   -- David Krowitz

mit-erl!mit-kermit!krowitz@eddie.mit.edu
mit-erl!mit-kermit!krowitz@mit-eddie.arpa
krowitz@mit-mc.arpa
(in order of decreasing preference)

freedman@calgary.UUCP (05/19/87)

In article <8705150741.AA00372@yale-eli.arpa>, sundar@case.CSNET (Sundar Iyengar) writes:
> For example, we would like a link called x to point to
> //x1/a, //x2/a, //x3/a....  Every time x is referenced, it should
> be resolved to //x1/a.  However, if the node x1 is down or not accessible,
> x should resolve to //x2/b, and so on.  Similarly for links to
> other objects.

Sounds like an ideal job for Apollo's Open System Toolkit to me.  With this 
package, you can create new kinds of filesystem objects which behave in
special ways.  What you do is create a set of type manager routines which take
care of accessing the object.  Once this is done, you can access the object
using standard language or system calls (open, close, etc), and your manager
routines will take care of the rest.

In your case, you would write the appropriate routines for opening the file
according to your filename resolution scheme.  You can inherit routines from
existing filesystem types, so  you won't have to write any of the routines for
reading, writing, (etc) the files.

	Dan Freedman
	The University of Calgary Computer Science Department.