diff options
Diffstat (limited to 'indra/newview/llremoteparcelrequest.h')
-rw-r--r-- | indra/newview/llremoteparcelrequest.h | 64 |
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 |