summaryrefslogtreecommitdiff
path: root/indra/newview/llremoteparcelrequest.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llremoteparcelrequest.h')
-rw-r--r--indra/newview/llremoteparcelrequest.h64
1 files changed, 60 insertions, 4 deletions
diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h
index c92ee3ff3a..3a16e25ef6 100644
--- a/indra/newview/llremoteparcelrequest.h
+++ b/indra/newview/llremoteparcelrequest.h
@@ -38,17 +38,73 @@
#include "llhttpclient.h"
#include "llpanel.h"
+class LLRemoteParcelInfoObserver;
+
class LLRemoteParcelRequestResponder : public LLHTTPClient::Responder
{
public:
- LLRemoteParcelRequestResponder(LLHandle<LLPanel> place_panel_handle);
+ LLRemoteParcelRequestResponder(LLHandle<LLRemoteParcelInfoObserver> observer_handle);
+
//If we get back a normal response, handle it here
- virtual void result(const LLSD& content);
+ /*virtual*/ void result(const LLSD& content);
+
//If we get back an error (not found, etc...), handle it here
- virtual void error(U32 status, const std::string& reason);
+ /*virtual*/ void error(U32 status, const std::string& reason);
+
+protected:
+ LLHandle<LLRemoteParcelInfoObserver> mObserverHandle;
+};
+
+struct LLParcelData
+{
+ LLUUID parcel_id;
+ LLUUID owner_id;
+ std::string name;
+ std::string desc;
+ S32 actual_area;
+ S32 billable_area;
+ U8 flags;
+ F32 global_x;
+ F32 global_y;
+ F32 global_z;
+ std::string sim_name;
+ LLUUID snapshot_id;
+ F32 dwell;
+ S32 sale_price;
+ S32 auction_id;
+};
+
+// An interface class for panels which display parcel information
+// like name, description, area, snapshot etc.
+class LLRemoteParcelInfoObserver
+{
+public:
+ LLRemoteParcelInfoObserver() { mObserverHandle.bind(this); }
+ virtual ~LLRemoteParcelInfoObserver() {}
+ virtual void processParcelInfo(const LLParcelData& parcel_data) = 0;
+ virtual void setParcelID(const LLUUID& parcel_id) = 0;
+ virtual void setErrorStatus(U32 status, const std::string& reason) = 0;
+ LLHandle<LLRemoteParcelInfoObserver> getObserverHandle() const { return mObserverHandle; }
protected:
- LLHandle<LLPanel> mPlacePanelHandle;
+ LLRootHandle<LLRemoteParcelInfoObserver> mObserverHandle;
+};
+
+class LLRemoteParcelInfoProcessor : public LLSingleton<LLRemoteParcelInfoProcessor>
+{
+public:
+ virtual ~LLRemoteParcelInfoProcessor() {}
+
+ void addObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer);
+ void removeObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer);
+
+ void sendParcelInfoRequest(const LLUUID& parcel_id);
+
+ static void processParcelInfoReply(LLMessageSystem* msg, void**);
+
+private:
+ typedef std::multimap<LLUUID, LLRemoteParcelInfoObserver*> observer_multimap_t;
+ observer_multimap_t mObservers;
};
#endif // LL_LLREMOTEPARCELREQUEST_H