summaryrefslogtreecommitdiff
path: root/indra/newview/llassetuploadqueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llassetuploadqueue.h')
-rw-r--r--indra/newview/llassetuploadqueue.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/indra/newview/llassetuploadqueue.h b/indra/newview/llassetuploadqueue.h
new file mode 100644
index 0000000000..6e4caa1b0f
--- /dev/null
+++ b/indra/newview/llassetuploadqueue.h
@@ -0,0 +1,74 @@
+/**
+ * @file llassetuploadqueue.h
+ * @brief Serializes asset upload request
+ * Copyright (c) 2007, Linden Research, Inc.
+ *
+ * $LicenseInfo:firstyear=2007&license=viewergpl$
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLASSETUPLOADQUEUE_H
+#define LL_LLASSETUPLOADQUEUE_H
+
+#include "lluuid.h"
+
+#include <string>
+#include <deque>
+
+class LLAssetUploadQueueSupplier;
+
+class LLAssetUploadQueue
+{
+public:
+
+ // Takes ownership of supplier.
+ LLAssetUploadQueue(LLAssetUploadQueueSupplier* supplier);
+ virtual ~LLAssetUploadQueue();
+
+ void queue(const std::string& filename,
+ const LLUUID& task_id,
+ const LLUUID& item_id,
+ BOOL is_running,
+ BOOL is_target_mono,
+ const LLUUID& queue_id,
+ U8* data,
+ U32 data_size,
+ std::string script_name);
+
+ bool isEmpty() const {return mQueue.empty();}
+
+private:
+
+ friend class LLAssetUploadChainResponder;
+
+ struct UploadData
+ {
+ std::string mFilename;
+ LLUUID mTaskId;
+ LLUUID mItemId;
+ BOOL mIsRunning;
+ BOOL mIsTargetMono;
+ LLUUID mQueueId;
+ U8* mData;
+ U32 mDataSize;
+ std::string mScriptName;
+ };
+
+ // Ownership of mSupplier passed to currently waiting responder
+ // and returned to queue when no requests in progress.
+ LLAssetUploadQueueSupplier* mSupplier;
+ std::deque<UploadData> mQueue;
+
+ // Passes on ownership of mSupplier if request is made.
+ void request(LLAssetUploadQueueSupplier** supplier);
+};
+
+class LLAssetUploadQueueSupplier
+{
+public:
+ virtual ~LLAssetUploadQueueSupplier();
+ virtual LLAssetUploadQueue* get() const = 0;
+ virtual void log(std::string message) const = 0;
+};
+
+#endif // LL_LLASSETUPLOADQUEUE_H