summaryrefslogtreecommitdiff
path: root/indra/lscript/lscript_execute/llscriptresource.cpp
diff options
context:
space:
mode:
authorKelly Washington <kelly@lindenlab.com>2009-02-24 19:29:36 +0000
committerKelly Washington <kelly@lindenlab.com>2009-02-24 19:29:36 +0000
commitaa2b978bf59dd74083bec86c61a29fefb4ebb14c (patch)
tree63d0e55a524208eb2bdad1a1a6f0d03af1b39de2 /indra/lscript/lscript_execute/llscriptresource.cpp
parentf5242719b628efb148f05ba44ce78f9818ec617a (diff)
merge -r 112783:112799 linden/branches/kelly/lsl-http-in-merge to linden/trunk
Diffstat (limited to 'indra/lscript/lscript_execute/llscriptresource.cpp')
-rw-r--r--indra/lscript/lscript_execute/llscriptresource.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/indra/lscript/lscript_execute/llscriptresource.cpp b/indra/lscript/lscript_execute/llscriptresource.cpp
new file mode 100644
index 0000000000..cc802987b9
--- /dev/null
+++ b/indra/lscript/lscript_execute/llscriptresource.cpp
@@ -0,0 +1,86 @@
+/**
+ * @file llscriptresource.cpp
+ * @brief LLScriptResource class implementation for managing limited resources
+ *
+ * $LicenseInfo:firstyear=2008&license=internal$
+ *
+ * Copyright (c) 2008, Linden Research, Inc.
+ *
+ * The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
+ * this source code is governed by the Linden Lab Source Code Disclosure
+ * Agreement ("Agreement") previously entered between you and Linden
+ * Lab. By accessing, using, copying, modifying or distributing this
+ * software, you acknowledge that you have been informed of your
+ * obligations under the Agreement and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llscriptresource.h"
+#include "llerror.h"
+
+LLScriptResource::LLScriptResource()
+: mTotal(0),
+ mUsed(0)
+{
+}
+
+bool LLScriptResource::request(S32 amount /* = 1 */)
+{
+ if (mUsed + amount <= mTotal)
+ {
+ mUsed += amount;
+ return true;
+ }
+
+ return false;
+}
+
+bool LLScriptResource::release(S32 amount /* = 1 */)
+{
+ if (mUsed >= amount)
+ {
+ mUsed -= amount;
+ return true;
+ }
+
+ return false;
+}
+
+S32 LLScriptResource::getAvailable() const
+{
+ if (mUsed > mTotal)
+ {
+ // It is possible after a parcel ownership change for more than total to be used
+ // In this case the user of this class just wants to know
+ // whether or not they can use a resource
+ return 0;
+ }
+ return (mTotal - mUsed);
+}
+
+void LLScriptResource::setTotal(S32 amount)
+{
+ // This may cause this resource to be over spent
+ // such that more are in use than total allowed
+ // Until those resources are released getAvailable will return 0.
+ mTotal = amount;
+}
+
+S32 LLScriptResource::getTotal() const
+{
+ return mTotal;
+}
+
+S32 LLScriptResource::getUsed() const
+{
+ return mUsed;
+}
+
+bool LLScriptResource::isOverLimit() const
+{
+ return (mUsed > mTotal);
+}