summaryrefslogtreecommitdiff
path: root/indra/newview/llestateinfomodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llestateinfomodel.h')
-rw-r--r--indra/newview/llestateinfomodel.h137
1 files changed, 91 insertions, 46 deletions
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index d6f00c573c..85f9f91d86 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -32,7 +32,10 @@ class LLMessageSystem;
#include "llsingleton.h"
#include "llcoros.h"
#include "lleventcoro.h"
+#include "lldispatcher.h"
+#include "llregionflags.h"
+class LLViewerRegion;
/**
* Contains estate info, notifies interested parties of its changes.
*/
@@ -42,68 +45,110 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
LOG_CLASS(LLEstateInfoModel);
public:
- typedef boost::signals2::signal<void()> update_signal_t;
- boost::signals2::connection setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
- boost::signals2::connection setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
+ typedef std::vector<std::string> strings_t;
+ typedef boost::signals2::signal<void()> update_signal_t;
+ typedef boost::signals2::signal<void(U32)> update_flaged_signal_t;
+ typedef boost::signals2::connection connection_t;
- void sendEstateInfo(); /// send estate info to the simulator
+ connection_t setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
+ connection_t setUpdateAccessCallback(const update_flaged_signal_t::slot_type& cb);
+ connection_t setUpdateExperienceCallback(const update_signal_t::slot_type& cb);
+ connection_t setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
+
+ void setRegion(LLViewerRegion* region);
+ void clearRegion();
+ void sendEstateInfo(); /// send estate info to the simulator
// getters
- bool getUseFixedSun() const;
- bool getIsExternallyVisible() const;
- bool getAllowDirectTeleport() const;
- bool getDenyAnonymous() const;
- bool getDenyAgeUnverified() const;
- bool getAllowVoiceChat() const;
- bool getAllowAccessOverride() const;
- bool getAllowEnvironmentOverride() const;
-
- const std::string& getName() const { return mName; }
- const LLUUID& getOwnerID() const { return mOwnerID; }
- U32 getID() const { return mID; }
- F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
+ bool getUseFixedSun() const { return getFlag(REGION_FLAGS_SUN_FIXED); }
+ bool getIsExternallyVisible() const { return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE); }
+ bool getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
+ bool getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); }
+ bool getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); }
+ bool getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
+ bool getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
+ bool getAllowEnvironmentOverride() const { return getFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE); }
+
+ const std::string& getName() const { return mName; }
+ const LLUUID& getOwnerID() const { return mOwnerID; }
+ U32 getID() const { return mID; }
+ F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
// setters
- void setUseFixedSun(bool val);
- void setIsExternallyVisible(bool val);
- void setAllowDirectTeleport(bool val);
- void setDenyAnonymous(bool val);
- void setDenyAgeUnverified(bool val);
- void setAllowVoiceChat(bool val);
- void setAllowAccessOverride(bool val);
- void setAllowEnvironmentOverride(bool val);
+ void setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); }
+ void setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); }
+ void setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); }
+ void setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); }
+ void setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); }
+ void setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
+ void setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); }
+ void setAllowEnvironmentOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE, val); }
- void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
+ void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
-protected:
- typedef std::vector<std::string> strings_t;
+ const uuid_set_t & getAllowedAgents() const { return mAllowedAgents; }
+ const uuid_set_t & getAllowedGroups() const { return mAllowedGroups; }
+ const uuid_set_t & getBannedAgents() const { return mBannedAgents; }
+ const uuid_set_t & getEstateManagers() const { return mEstateManagers; }
+
+ const uuid_set_t & getAllowedExperiences() const { return mExperienceAllowed; }
+ const uuid_set_t & getTrustedExperiences() const { return mExperienceTrusted; }
+ const uuid_set_t & getBlockedExperiences() const { return mExperienceBlocked; }
+
+ void sendEstateOwnerMessage(const std::string& request, const strings_t& strings);
+
+ //---------------------------------------------------------------------
+ /// refresh model with data from the incoming server message
+ void updateEstateInfo(const strings_t& strings);
+ void updateAccessInfo(const strings_t& strings);
+ void updateExperienceInfo(const strings_t& strings);
+
+ const LLUUID & getLastInvoice() { return mRequestInvoice; }
+ const LLUUID & nextInvoice() { mRequestInvoice.generate(); return mRequestInvoice; }
- friend class LLDispatchEstateUpdateInfo;
+protected:
- /// refresh model with data from the incoming server message
- void update(const strings_t& strings);
+ void notifyCommit();
- void notifyCommit();
+ virtual void initSingleton() override;
private:
- bool commitEstateInfoCaps();
- void commitEstateInfoDataserver();
- inline bool getFlag(U64 flag) const;
- inline void setFlag(U64 flag, bool val);
- U64 getFlags() const { return mFlags; }
- std::string getInfoDump();
+ bool commitEstateInfoCaps();
+ void commitEstateInfoDataserver();
+ inline bool getFlag(U64 flag) const;
+ inline void setFlag(U64 flag, bool val);
+ U64 getFlags() const { return mFlags; }
+ std::string getInfoDump();
// estate info
- std::string mName; /// estate name
- LLUUID mOwnerID; /// estate owner id
- U32 mID; /// estate id
- U64 mFlags; /// estate flags
- F32 mSunHour; /// estate sun hour
+ std::string mName; /// estate name
+ LLUUID mOwnerID; /// estate owner id
+ U32 mID; /// estate id
+ U64 mFlags; /// estate flags
+ F32 mSunHour; /// estate sun hour
+
+ uuid_set_t mAllowedAgents;
+ uuid_set_t mAllowedGroups;
+ uuid_set_t mBannedAgents;
+ uuid_set_t mEstateManagers;
+
+ uuid_set_t mExperienceAllowed;
+ uuid_set_t mExperienceTrusted;
+ uuid_set_t mExperienceBlocked;
+
+ update_signal_t mUpdateSignal; /// emitted when we receive update from sim
+ update_flaged_signal_t mUpdateAccess;
+ update_signal_t mUpdateExperience;
+ update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
+
+ LLDispatcher mDispatch;
+ LLUUID mRequestInvoice;
+ LLViewerRegion* mRegion;
+
+ void commitEstateInfoCapsCoro(std::string url);
- update_signal_t mUpdateSignal; /// emitted when we receive update from sim
- update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
+ static void processEstateOwnerRequest(LLMessageSystem* msg, void**);
- void commitEstateInfoCapsCoro(std::string url);
};
inline bool LLEstateInfoModel::getFlag(U64 flag) const