From 4ecb9cb63e4993b3b4bc65d73ed255139b5c3f75 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Tue, 1 May 2007 21:39:25 +0000 Subject: svn merge -r 59163:61099 svn+ssh://svn/svn/linden/branches/release-candidate into release --- indra/llmessage/llhttpsender.cpp | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 indra/llmessage/llhttpsender.cpp (limited to 'indra/llmessage/llhttpsender.cpp') diff --git a/indra/llmessage/llhttpsender.cpp b/indra/llmessage/llhttpsender.cpp new file mode 100644 index 0000000000..4152dedae5 --- /dev/null +++ b/indra/llmessage/llhttpsender.cpp @@ -0,0 +1,70 @@ +/** + * @file llhttpsender.cpp + * @brief Abstracts details of sending messages via HTTP. + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + +#include "llhttpsender.h" + +#include +#include + +#include "llhost.h" +#include "llsd.h" + +namespace +{ + typedef std::map SenderMap; + static SenderMap senderMap; +} + +//virtual +LLHTTPSender::~LLHTTPSender() +{ +} + +//virtual +void LLHTTPSender::send(const LLHost& host, const char* name, + const LLSD& body, + LLHTTPClient::ResponderPtr response) const +{ + // Default implementation inserts sender, message and sends HTTP POST + std::ostringstream stream; + stream << "http://" << host << "/trusted-message/" << name; + llinfos << "LLHTTPSender::send: POST to " << stream.str() << llendl; + LLHTTPClient::post(stream.str(), body, response); +} + +//static +void LLHTTPSender::setSender(const LLHost& host, LLHTTPSender* sender) +{ + llinfos << "LLHTTPSender::setSender " << host << llendl; + senderMap[host] = sender; +} + +//static +const LLHTTPSender& LLHTTPSender::getSender(const LLHost& host) +{ + static LLHTTPSender defaultSender; + SenderMap::const_iterator iter = senderMap.find(host); + if(iter == senderMap.end()) + { + return defaultSender; + } + return *(iter->second); +} + +//static +void LLHTTPSender::clearSender(const LLHost& host) +{ + SenderMap::iterator iter = senderMap.find(host); + if(iter != senderMap.end()) + { + delete iter->second; + senderMap.erase(iter); + } +} -- cgit v1.3