01: /**
02: * This file or a portion of this file is licensed under the terms of
03: * the Globus Toolkit Public License, found in file GTPL, or at
04: * http://www.globus.org/toolkit/download/license.html. This notice must
05: * appear in redistributions of this file, with or without modification.
06: *
07: * Redistributions of this Software, with or without modification, must
08: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
09: * some other similar material which is provided with the Software (if
10: * any).
11: *
12: * Copyright 1999-2004 University of Chicago and The University of
13: * Southern California. All rights reserved.
14: */package org.griphyn.cPlanner.selector;
15:
16: import org.griphyn.cPlanner.classes.ReplicaLocation;
17:
18: import org.griphyn.common.catalog.ReplicaCatalogEntry;
19:
20: import java.util.Vector;
21:
22: /**
23: * A prototypical interface for a replica selector. It would be changed when
24: * Pegasus interfaces with the new RC API.
25: *
26: * @author Karan Vahi
27: * @author Gaurang Mehta
28: * @version $Revision: 50 $
29: */
30: public interface ReplicaSelector {
31:
32: /**
33: * The version of this API.
34: */
35: public static final String VERSION = "1.3";
36:
37: /**
38: * Selects a replica amongst all the replicas returned by the implementing
39: * Replica Mechanism. It should select all the locations for which the site
40: * attribute matches to the preffered site passed. If no match on the
41: * preffered site is found, it is upto the implementation to select a replica
42: * and return it.
43: *
44: * This function is called to determine if a file does exist on the output
45: * pool or not beforehand. We need all the locations to ensure that we are
46: * able to make a match if it so exists.
47: *
48: * @param rl the <code>ReplicaLocation</code> object containing all
49: * the pfn's associated with that LFN.
50: * @param prefferedSite the preffered site for picking up the replicas.
51: *
52: * @return <code>ReplicaLocation</code> corresponding to the replicas selected.
53: *
54: * @see org.griphyn.cPlanner.classes.ReplicaLocation
55: */
56: public abstract ReplicaLocation selectReplicas(ReplicaLocation rl,
57: String prefferedSite);
58:
59: /**
60: * Selects a single replica amongst all the replicas returned by the implementing
61: * Replica Mechanism. If more than one replica is found to be matching the
62: * preffered site, a random replica is picked up from the matching replicas.
63: * Else, in case of no match any replica maybe returned.
64: *
65: * @param rl the <code>ReplicaLocation</code> object containing all
66: * the pfn's associated with that LFN.
67: * @param prefferedSite the preffered site for picking up the replicas.
68: *
69: * @return <code>ReplicaCatalogEntry</code> corresponding to the location selected.
70: *
71: * @see org.griphyn.cPlanner.classes.ReplicaLocation
72: */
73: public abstract ReplicaCatalogEntry selectReplica(
74: ReplicaLocation rl, String prefferedSite);
75:
76: /**
77: * Returns a short description of the replica selector, that is being
78: * implemented by the implementing class.
79: *
80: * @return string corresponding to the description.
81: */
82: public abstract String description();
83:
84: }
|