summaryrefslogtreecommitdiff
path: root/indra/newview/llattachmentsmgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llattachmentsmgr.h')
-rw-r--r--indra/newview/llattachmentsmgr.h264
1 files changed, 132 insertions, 132 deletions
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index 630b10030d..2428acfb38 100644
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -1,132 +1,132 @@
-/**
- * @file llattachmentsmgr.h
- * @brief Batches up attachment requests and sends them all
- * in one message.
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLATTACHMENTSMGR_H
-#define LL_LLATTACHMENTSMGR_H
-
-#include "llsingleton.h"
-
-//--------------------------------------------------------------------------------
-// LLAttachmentsMgr
-//
-// This class manages batching up of requests at two stages of
-// attachment rezzing.
-//
-// First, attachments requested to rez get saved in
-// mPendingAttachments and sent as a single
-// RezMultipleAttachmentsFromInv request. This batching is needed
-// mainly because of weaknessing the UI element->inventory item
-// handling, such that we don't always know when we are requesting
-// multiple items. Now they just pile up and get swept into a single
-// request during the idle loop.
-//
-// Second, after attachments arrive, we need to generate COF links for
-// them. There are both efficiency and UI correctness reasons why it
-// is better to request all the COF links at once and run a single
-// callback after they all complete. Given the vagaries of the
-// attachment system, there is no guarantee that we will get all the
-// attachments we ask for, but we frequently do. So in the common case
-// that all the desired attachments arrive fairly quickly, we generate
-// a single batched request for COF links. If attachments arrive late
-// or not at all, we will still issue COF link requests once a timeout
-// value has been exceeded.
-//
-// To handle attachments that never arrive, we forget about requests
-// that exceed a timeout value.
-//--------------------------------------------------------------------------------
-class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
-{
- LLSINGLETON(LLAttachmentsMgr);
- virtual ~LLAttachmentsMgr();
-
-public:
- // Stores info for attachments that will be requested during idle.
- struct AttachmentsInfo
- {
- LLUUID mItemID;
- U8 mAttachmentPt;
- bool mAdd;
- };
- typedef std::deque<AttachmentsInfo> attachments_vec_t;
-
- void addAttachmentRequest(const LLUUID& item_id,
- const U8 attachment_pt,
- const bool add);
- void onAttachmentRequested(const LLUUID& item_id);
- void requestAttachments(attachments_vec_t& attachment_requests);
- static void onIdle(void *);
-
- void onAttachmentArrived(const LLUUID& inv_item_id);
-
- void onDetachRequested(const LLUUID& inv_item_id);
- void onDetachCompleted(const LLUUID& inv_item_id);
-
- bool isAttachmentStateComplete() const;
-
-private:
-
- class LLItemRequestTimes: public std::map<LLUUID,LLTimer>
- {
- public:
- LLItemRequestTimes(const std::string& op_name, F32 timeout);
- void addTime(const LLUUID& inv_item_id);
- void removeTime(const LLUUID& inv_item_id);
- bool wasRequestedRecently(const LLUUID& item_id) const;
- bool getTime(const LLUUID& inv_item_id, LLTimer& timer) const;
-
- private:
- F32 mTimeout;
- std::string mOpName;
- };
-
- void removeAttachmentRequestTime(const LLUUID& inv_item_id);
- void onIdle();
- void requestPendingAttachments();
- void linkRecentlyArrivedAttachments();
- void expireOldAttachmentRequests();
- void expireOldDetachRequests();
- void checkInvalidCOFLinks();
- void spamStatusInfo();
-
- // Attachments that we are planning to rez but haven't requested from the server yet.
- attachments_vec_t mPendingAttachments;
-
- // Attachments that have been requested from server but have not arrived yet.
- LLItemRequestTimes mAttachmentRequests;
-
- // Attachments that have been requested to detach but have not gone away yet.
- LLItemRequestTimes mDetachRequests;
-
- // Attachments that have arrived but have not been linked in the COF yet.
- std::set<LLUUID> mRecentlyArrivedAttachments;
- LLTimer mCOFLinkBatchTimer;
-
- // Attachments that are linked in the COF but may be invalid.
- LLItemRequestTimes mQuestionableCOFLinks;
-};
-
-#endif
+/**
+ * @file llattachmentsmgr.h
+ * @brief Batches up attachment requests and sends them all
+ * in one message.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLATTACHMENTSMGR_H
+#define LL_LLATTACHMENTSMGR_H
+
+#include "llsingleton.h"
+
+//--------------------------------------------------------------------------------
+// LLAttachmentsMgr
+//
+// This class manages batching up of requests at two stages of
+// attachment rezzing.
+//
+// First, attachments requested to rez get saved in
+// mPendingAttachments and sent as a single
+// RezMultipleAttachmentsFromInv request. This batching is needed
+// mainly because of weaknessing the UI element->inventory item
+// handling, such that we don't always know when we are requesting
+// multiple items. Now they just pile up and get swept into a single
+// request during the idle loop.
+//
+// Second, after attachments arrive, we need to generate COF links for
+// them. There are both efficiency and UI correctness reasons why it
+// is better to request all the COF links at once and run a single
+// callback after they all complete. Given the vagaries of the
+// attachment system, there is no guarantee that we will get all the
+// attachments we ask for, but we frequently do. So in the common case
+// that all the desired attachments arrive fairly quickly, we generate
+// a single batched request for COF links. If attachments arrive late
+// or not at all, we will still issue COF link requests once a timeout
+// value has been exceeded.
+//
+// To handle attachments that never arrive, we forget about requests
+// that exceed a timeout value.
+//--------------------------------------------------------------------------------
+class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
+{
+ LLSINGLETON(LLAttachmentsMgr);
+ virtual ~LLAttachmentsMgr();
+
+public:
+ // Stores info for attachments that will be requested during idle.
+ struct AttachmentsInfo
+ {
+ LLUUID mItemID;
+ U8 mAttachmentPt;
+ bool mAdd;
+ };
+ typedef std::deque<AttachmentsInfo> attachments_vec_t;
+
+ void addAttachmentRequest(const LLUUID& item_id,
+ const U8 attachment_pt,
+ const bool add);
+ void onAttachmentRequested(const LLUUID& item_id);
+ void requestAttachments(attachments_vec_t& attachment_requests);
+ static void onIdle(void *);
+
+ void onAttachmentArrived(const LLUUID& inv_item_id);
+
+ void onDetachRequested(const LLUUID& inv_item_id);
+ void onDetachCompleted(const LLUUID& inv_item_id);
+
+ bool isAttachmentStateComplete() const;
+
+private:
+
+ class LLItemRequestTimes: public std::map<LLUUID,LLTimer>
+ {
+ public:
+ LLItemRequestTimes(const std::string& op_name, F32 timeout);
+ void addTime(const LLUUID& inv_item_id);
+ void removeTime(const LLUUID& inv_item_id);
+ bool wasRequestedRecently(const LLUUID& item_id) const;
+ bool getTime(const LLUUID& inv_item_id, LLTimer& timer) const;
+
+ private:
+ F32 mTimeout;
+ std::string mOpName;
+ };
+
+ void removeAttachmentRequestTime(const LLUUID& inv_item_id);
+ void onIdle();
+ void requestPendingAttachments();
+ void linkRecentlyArrivedAttachments();
+ void expireOldAttachmentRequests();
+ void expireOldDetachRequests();
+ void checkInvalidCOFLinks();
+ void spamStatusInfo();
+
+ // Attachments that we are planning to rez but haven't requested from the server yet.
+ attachments_vec_t mPendingAttachments;
+
+ // Attachments that have been requested from server but have not arrived yet.
+ LLItemRequestTimes mAttachmentRequests;
+
+ // Attachments that have been requested to detach but have not gone away yet.
+ LLItemRequestTimes mDetachRequests;
+
+ // Attachments that have arrived but have not been linked in the COF yet.
+ std::set<LLUUID> mRecentlyArrivedAttachments;
+ LLTimer mCOFLinkBatchTimer;
+
+ // Attachments that are linked in the COF but may be invalid.
+ LLItemRequestTimes mQuestionableCOFLinks;
+};
+
+#endif