Allow the BundledComponentRepository to be configured to wipe out its

bundle cache if it fails to locate the data for a character action. Also
updated wipeBundle() signature.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3147 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2004-10-18 21:39:18 +00:00
parent ad4ac9318a
commit dcea064ecb
2 changed files with 21 additions and 3 deletions
@@ -1,5 +1,5 @@
// //
// $Id: BundleUtil.java,v 1.9 2004/08/27 02:12:27 mdb Exp $ // $Id: BundleUtil.java,v 1.10 2004/10/18 21:39:18 mdb Exp $
// //
// Narya library - tools for developing networked games // Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -99,7 +99,7 @@ public class BundleUtil
if (wipeBundleOnFailure) { if (wipeBundleOnFailure) {
StreamUtil.close(bin); StreamUtil.close(bin);
bin = null; bin = null;
bundle.wipeBundle(); bundle.wipeBundle(false);
} }
throw ioe; throw ioe;
@@ -1,5 +1,5 @@
// //
// $Id: BundledComponentRepository.java,v 1.34 2004/08/27 02:12:27 mdb Exp $ // $Id: BundledComponentRepository.java,v 1.35 2004/10/18 21:39:18 mdb Exp $
// //
// Narya library - tools for developing networked games // Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -156,6 +156,18 @@ public class BundledComponentRepository
} }
} }
/**
* Configures the bundled component repository to wipe any bundles
* that report certain kinds of failure. In the event that an unpacked
* bundle becomes corrupt, this is useful in that it will force the
* bundle to be unpacked on the next application invocation,
* potentially remedying the problem of a corrupt unpacking.
*/
public void setWipeOnFailure (boolean wipeOnFailure)
{
_wipeOnFailure = true;
}
// documentation inherited // documentation inherited
public CharacterComponent getComponent (int componentId) public CharacterComponent getComponent (int componentId)
throws NoSuchComponentException throws NoSuchComponentException
@@ -332,6 +344,9 @@ public class BundledComponentRepository
if (aset == null) { if (aset == null) {
Log.warning("Unable to locate tileset for action '" + Log.warning("Unable to locate tileset for action '" +
action + "' " + component + "."); action + "' " + component + ".");
if (_wipeOnFailure) {
_bundle.wipeBundle(false);
}
return null; return null;
} }
@@ -504,4 +519,7 @@ public class BundledComponentRepository
/** The component table. */ /** The component table. */
protected HashIntMap _components = new HashIntMap(); protected HashIntMap _components = new HashIntMap();
/** Whether or not we wipe our bundles on any failure. */
protected boolean _wipeOnFailure;
} }