/* * This file or a portion of this file is licensed under the terms of * the Globus Toolkit Public License, found in file GTPL, or at * http://www.globus.org/toolkit/download/license.html. This notice must * appear in redistributions of this file, with or without modification. * * Redistributions of this Software, with or without modification, must * reproduce the GTPL in: (1) the Software, or (2) the Documentation or * some other similar material which is provided with the Software (if * any). * * Copyright 1999-2004 University of Chicago and The University of * Southern California. All rights reserved. */ package org.griphyn.vdl.router; import java.util.*; import org.griphyn.vdl.dbschema.*; /** * This class maintains each element in the nesting of Definitions. * It turned out that the caching for LFNs etc must also be kept in * the stack instead of globally. In some cases, the caching may be * adverse to the performance, though. * * @author Jens-S. Vöckler * @author Yong Zhao * @version $Revision $ */ public class StackElement { /** * The database schema intermediary. */ private DatabaseSchema m_dbschema; /** * Temporarily saves filename lookups in a local cache. */ private Cache m_lfnCache; /** * Temporarily saves TR lookups in a local cache. */ private Cache m_TRCache; /** * ctor: Initializes the local caches and the major data element. * @param schema is a database backend manager */ public StackElement( DatabaseSchema schema ) { this.m_dbschema = schema; if ( schema.cachingMakesSense() ) { this.m_lfnCache = new Cache(600); this.m_TRCache = new Cache(600); } else { this.m_lfnCache = this.m_TRCache = null; } } /** * Obtains the reference to the database backend manager. * * @return a handle to the database backend manager. */ public DatabaseSchema getDatabaseSchema() { return this.m_dbschema; } /** * Obtains the reference to the transient LFN cache. * * @return a handle to the transient LFN cache, or null for no caching. */ public Cache getLFNCache() { return this.m_lfnCache; } /** * Obtains the reference to the transient TR cache. * * @return a handle to the transient TR cache, or null for no caching. */ public Cache getTRCache() { return this.m_TRCache; } }