summaryrefslogtreecommitdiff
path: root/indra/llmessage
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2010-03-18 17:19:57 -0700
committerJames Cook <james@lindenlab.com>2010-03-18 17:19:57 -0700
commit639b234762133e4d09d6d7b1bac9d25c5a681926 (patch)
treed99a727f3fa9c53faecd434b2735da1094b9a519 /indra/llmessage
parent10fc6ee4a012fa7232868261d6e11a76652c3cca (diff)
Partial support for Set Name returning error msg from service
Diffstat (limited to 'indra/llmessage')
-rw-r--r--indra/llmessage/llavatarnamecache.cpp20
-rw-r--r--indra/llmessage/llavatarnamecache.h18
2 files changed, 32 insertions, 6 deletions
diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp
index d7284c41a7..d49f1d3de5 100644
--- a/indra/llmessage/llavatarnamecache.cpp
+++ b/indra/llmessage/llavatarnamecache.cpp
@@ -37,6 +37,7 @@
#include "llcachename.h" // *TODO: remove
#include "llframetimer.h"
#include "llhttpclient.h"
+#include "llsd.h"
#include <map>
#include <set>
@@ -266,23 +267,36 @@ class LLSetNameResponder : public LLHTTPClient::Responder
{
public:
LLUUID mAgentID;
+ LLAvatarNameCache::set_name_signal_t mSignal;
- LLSetNameResponder(const LLUUID& agent_id) : mAgentID(agent_id) { }
+ LLSetNameResponder(const LLUUID& agent_id,
+ const LLAvatarNameCache::set_name_slot_t& slot)
+ : mAgentID(agent_id),
+ mSignal()
+ {
+ mSignal.connect(slot);
+ }
/*virtual*/ void result(const LLSD& content)
{
// force re-fetch
LLAvatarNameCache::sCache.erase(mAgentID);
+
+ mSignal(true, "", content);
}
/*virtual*/ void error(U32 status, const std::string& reason)
{
llinfos << "JAMESDEBUG set names failed " << status
<< " reason " << reason << llendl;
+
+ mSignal(false, reason, LLSD());
}
};
-void LLAvatarNameCache::setDisplayName(const LLUUID& agent_id, const std::string& display_name)
+void LLAvatarNameCache::setDisplayName(const LLUUID& agent_id,
+ const std::string& display_name,
+ const set_name_slot_t& slot)
{
LLSD body;
body["display_name"] = display_name;
@@ -291,7 +305,7 @@ void LLAvatarNameCache::setDisplayName(const LLUUID& agent_id, const std::string
std::string url = sNameServiceBaseURL + "agent/";
url += agent_id.asString();
url += "/set-display-name/";
- LLHTTPClient::post(url, body, new LLSetNameResponder(agent_id));
+ LLHTTPClient::post(url, body, new LLSetNameResponder(agent_id, slot));
}
void LLAvatarNameCache::toggleDisplayNames()
diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h
index a09f549877..8fc43860da 100644
--- a/indra/llmessage/llavatarnamecache.h
+++ b/indra/llmessage/llavatarnamecache.h
@@ -37,6 +37,9 @@
#include <boost/signals2.hpp>
+class LLSD;
+class LLUUID;
+
namespace LLAvatarNameCache
{
void initClass();
@@ -53,6 +56,7 @@ namespace LLAvatarNameCache
// otherwise returns false
bool get(const LLUUID& agent_id, LLAvatarName *av_name);
+ // Callback types for get() below
typedef boost::signals2::signal<
void (const LLUUID& agent_id, const LLAvatarName& av_name)>
callback_signal_t;
@@ -61,9 +65,17 @@ namespace LLAvatarNameCache
// Fetches name information and calls callback.
// If name information is in cache, callback will be called immediately.
void get(const LLUUID& agent_id, callback_slot_t slot);
-
- // Sends an update to the server
- void setDisplayName(const LLUUID& agent_id, const std::string& display_name);
+
+ // Callback types for setDisplayName() below
+ typedef boost::signals2::signal<
+ void (bool success, const std::string& reason, const LLSD& content)>
+ set_name_signal_t;
+ typedef set_name_signal_t::slot_type set_name_slot_t;
+
+ // Sends an update to the server to change a display name
+ // and calls back the application layer when done
+ void setDisplayName(const LLUUID& agent_id, const std::string& display_name,
+ const set_name_slot_t& slot);
// HACK: turn display names on and off
void toggleDisplayNames();