diff options
author | Loren Shih <seraph@lindenlab.com> | 2010-09-01 12:02:48 -0400 |
---|---|---|
committer | Loren Shih <seraph@lindenlab.com> | 2010-09-01 12:02:48 -0400 |
commit | 0440fe4dccc44c9474c1ee05c506370350b94320 (patch) | |
tree | adeb1c23e200e83c552a74940847b47e4e84e2e4 /indra/newview/llattachmentsmgr.h | |
parent | 7be968ec0b0c76eb2c999a1165fa87799f79d95e (diff) |
VWR-22695 FIXED Adding attachments messaging is inefficient
Single attachment request are now batched up and sent all at once as a single message.
Diffstat (limited to 'indra/newview/llattachmentsmgr.h')
-rw-r--r-- | indra/newview/llattachmentsmgr.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h new file mode 100644 index 0000000000..1d8ab74dfd --- /dev/null +++ b/indra/newview/llattachmentsmgr.h @@ -0,0 +1,73 @@ +/** + * @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" + +class LLViewerInventoryItem; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// LLAttachmentsMgr +// +// The sole purpose of this class is to take attachment +// requests, queue them up, and send them all at once. +// This handles situations where the viewer may request +// a bunch of attachments at once in a short period of +// time, where each of the requests would normally be +// sent as a separate message versus being batched into +// one single message. +// +// The intent of this batching is to reduce viewer->server +// traffic. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr> +{ +public: + LLAttachmentsMgr(); + virtual ~LLAttachmentsMgr(); + + void addAttachment(const LLUUID& item_id, + const U8 attachment_pt, + const BOOL add); + static void onIdle(void *); +protected: + void onIdle(); +private: + struct AttachmentsInfo + { + LLUUID mItemID; + U8 mAttachmentPt; + BOOL mAdd; + }; + + typedef std::vector<AttachmentsInfo> attachments_vec_t; + attachments_vec_t mPendingAttachments; +}; + +#endif |