summaryrefslogtreecommitdiff
path: root/indra/llmessage/llmessageconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmessage/llmessageconfig.cpp')
-rw-r--r--indra/llmessage/llmessageconfig.cpp110
1 files changed, 70 insertions, 40 deletions
diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp
index 78e22dd06d..539efc65f8 100644
--- a/indra/llmessage/llmessageconfig.cpp
+++ b/indra/llmessage/llmessageconfig.cpp
@@ -2,30 +2,25 @@
* @file llmessageconfig.cpp
* @brief Live file handling for messaging
*
- * $LicenseInfo:firstyear=2000&license=viewergpl$
- *
- * Copyright (c) 2000-2007, Linden Research, Inc.
- *
+ * $LicenseInfo:firstyear=2000&license=viewerlgpl$
* Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlife.com/developers/opensource/gplv2
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
*
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlife.com/developers/opensource/flossexception
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -52,20 +47,22 @@ static LLSD sMessages;
class LLMessageConfigFile : public LLLiveFile
{
public:
- LLMessageConfigFile()
- : LLLiveFile(filename(), messageConfigRefreshRate)
+ LLMessageConfigFile() :
+ LLLiveFile(filename(), messageConfigRefreshRate),
+ mMaxQueuedEvents(0)
{ }
- static std::string filename();
+ static std::string filename();
- LLSD mMessages;
+ LLSD mMessages;
std::string mServerDefault;
static LLMessageConfigFile& instance();
// return the singleton configuration file
- /* virtual */ void loadFile();
+ /* virtual */ bool loadFile();
void loadServerDefaults(const LLSD& data);
+ void loadMaxQueuedEvents(const LLSD& data);
void loadMessages(const LLSD& data);
void loadCapBans(const LLSD& blacklist);
void loadMessageBans(const LLSD& blacklist);
@@ -73,6 +70,10 @@ public:
public:
LLSD mCapBans;
+ S32 mMaxQueuedEvents;
+
+private:
+ static const S32 DEFAULT_MAX_QUEUED_EVENTS = 100;
};
std::string LLMessageConfigFile::filename()
@@ -91,30 +92,32 @@ LLMessageConfigFile& LLMessageConfigFile::instance()
}
// virtual
-void LLMessageConfigFile::loadFile()
+bool LLMessageConfigFile::loadFile()
{
LLSD data;
{
- llifstream file(filename().c_str());
+ llifstream file(filename());
if (file.is_open())
{
- llinfos << "Loading message.xml file at " << filename() << llendl;
+ LL_DEBUGS("AppInit") << "Loading message.xml file at " << filename() << LL_ENDL;
LLSDSerialize::fromXML(data, file);
}
if (data.isUndefined())
{
- llinfos << "LLMessageConfigFile::loadFile: file missing,"
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadFile: file missing,"
" ill-formed, or simply undefined; not changing the"
- " file" << llendl;
- return;
+ " file" << LL_ENDL;
+ return false;
}
}
loadServerDefaults(data);
+ loadMaxQueuedEvents(data);
loadMessages(data);
loadCapBans(data);
loadMessageBans(data);
+ return true;
}
void LLMessageConfigFile::loadServerDefaults(const LLSD& data)
@@ -122,6 +125,18 @@ void LLMessageConfigFile::loadServerDefaults(const LLSD& data)
mServerDefault = data["serverDefaults"][sServerName].asString();
}
+void LLMessageConfigFile::loadMaxQueuedEvents(const LLSD& data)
+{
+ if (data.has("maxQueuedEvents"))
+ {
+ mMaxQueuedEvents = data["maxQueuedEvents"].asInteger();
+ }
+ else
+ {
+ mMaxQueuedEvents = DEFAULT_MAX_QUEUED_EVENTS;
+ }
+}
+
void LLMessageConfigFile::loadMessages(const LLSD& data)
{
mMessages = data["messages"];
@@ -141,15 +156,15 @@ void LLMessageConfigFile::loadCapBans(const LLSD& data)
LLSD bans = data["capBans"];
if (!bans.isMap())
{
- llinfos << "LLMessageConfigFile::loadCapBans: missing capBans section"
- << llendl;
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadCapBans: missing capBans section"
+ << LL_ENDL;
return;
}
mCapBans = bans;
- llinfos << "LLMessageConfigFile::loadCapBans: "
- << bans.size() << " ban tests" << llendl;
+ LL_DEBUGS("AppInit") << "LLMessageConfigFile::loadCapBans: "
+ << bans.size() << " ban tests" << LL_ENDL;
}
void LLMessageConfigFile::loadMessageBans(const LLSD& data)
@@ -157,8 +172,8 @@ void LLMessageConfigFile::loadMessageBans(const LLSD& data)
LLSD bans = data["messageBans"];
if (!bans.isMap())
{
- llinfos << "LLMessageConfigFile::loadMessageBans: missing messageBans section"
- << llendl;
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadMessageBans: missing messageBans section"
+ << LL_ENDL;
return;
}
@@ -182,8 +197,8 @@ void LLMessageConfig::initClass(const std::string& server_name,
sServerName = server_name;
sConfigDir = config_dir;
(void) LLMessageConfigFile::instance();
- llinfos << "LLMessageConfig::initClass config file "
- << config_dir << "/" << messageConfigFileName << llendl;
+ LL_DEBUGS("AppInit") << "LLMessageConfig::initClass config file "
+ << config_dir << "/" << messageConfigFileName << LL_ENDL;
}
//static
@@ -191,10 +206,10 @@ void LLMessageConfig::useConfig(const LLSD& config)
{
LLMessageConfigFile &the_file = LLMessageConfigFile::instance();
the_file.loadServerDefaults(config);
+ the_file.loadMaxQueuedEvents(config);
the_file.loadMessages(config);
the_file.loadCapBans(config);
the_file.loadMessageBans(config);
-
}
//static
@@ -213,6 +228,13 @@ LLMessageConfig::Flavor LLMessageConfig::getServerDefaultFlavor()
}
//static
+S32 LLMessageConfig::getMaxQueuedEvents()
+{
+ LLMessageConfigFile& file = LLMessageConfigFile::instance();
+ return file.mMaxQueuedEvents;
+}
+
+//static
LLMessageConfig::Flavor LLMessageConfig::getMessageFlavor(const std::string& msg_name)
{
LLMessageConfigFile& file = LLMessageConfigFile::instance();
@@ -252,6 +274,14 @@ bool LLMessageConfig::isValidMessage(const std::string& msg_name)
return file.mMessages.has(msg_name);
}
+//static
+bool LLMessageConfig::onlySendLatest(const std::string& msg_name)
+{
+ LLMessageConfigFile& file = LLMessageConfigFile::instance();
+ LLSD config = file.mMessages[msg_name];
+ return config["only-send-latest"].asBoolean();
+}
+
bool LLMessageConfig::isCapBanned(const std::string& cap_name)
{
return LLMessageConfigFile::instance().isCapBanned(cap_name);