diff options
author | Steve Bennetts <steve@lindenlab.com> | 2009-10-23 12:15:22 -0700 |
---|---|---|
committer | Steve Bennetts <steve@lindenlab.com> | 2009-10-23 12:15:22 -0700 |
commit | 127b428863707c882fbf4d30699321b8a2365644 (patch) | |
tree | 728c98bd177635891f0646ccabcf86b70341d4a0 /indra/llui/llnotificationslistener.cpp | |
parent | 0220106ecdecd323854522a5bc3fd6455c60fdfc (diff) | |
parent | 2438a9168b117dcabf5e5819f93e08a874735a26 (diff) |
merge
Diffstat (limited to 'indra/llui/llnotificationslistener.cpp')
-rw-r--r-- | indra/llui/llnotificationslistener.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/indra/llui/llnotificationslistener.cpp b/indra/llui/llnotificationslistener.cpp new file mode 100644 index 0000000000..75f4d6177d --- /dev/null +++ b/indra/llui/llnotificationslistener.cpp @@ -0,0 +1,55 @@ +/** + * @file llnotificationslistener.cpp + * @author Brad Kittenbrink + * @date 2009-07-08 + * @brief Implementation for llnotificationslistener. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * Copyright (c) 2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "llnotificationslistener.h" + +#include "llnotifications.h" + +LLNotificationsListener::LLNotificationsListener(LLNotifications & notifications) : + LLDispatchListener("LLNotifications", "op"), + mNotifications(notifications) +{ + add("requestAdd", &LLNotificationsListener::requestAdd); +} + +void LLNotificationsListener::requestAdd(const LLSD& event_data) const +{ + if(event_data.has("reply")) + { + mNotifications.add(event_data["name"], + event_data["substitutions"], + event_data["payload"], + boost::bind(&LLNotificationsListener::NotificationResponder, + this, + event_data["reply"].asString(), + _1, _2 + ) + ); + } + else + { + mNotifications.add(event_data["name"], + event_data["substitutions"], + event_data["payload"]); + } +} + +void LLNotificationsListener::NotificationResponder(const std::string& reply_pump, + const LLSD& notification, + const LLSD& response) const +{ + LLSD reponse_event; + reponse_event["notification"] = notification; + reponse_event["response"] = response; + LLEventPumps::getInstance()->obtain(reply_pump).post(reponse_event); +} |