lltransfertargetvfile.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltransfertargetvfile.h
  3.  * @brief Transfer system for receiving a vfile.
  4.  *
  5.  * $LicenseInfo:firstyear=2006&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2006-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLTRANSFERTARGETVFILE_H
  33. #define LL_LLTRANSFERTARGETVFILE_H
  34. #include "lltransfermanager.h"
  35. #include "llassetstorage.h"
  36. #include "llvfile.h"
  37. class LLVFile;
  38. // Lame, an S32 for now until I figure out the deal with how we want to do
  39. // error codes.
  40. typedef void (*LLTTVFCompleteCallback)(
  41. S32 status,
  42. const LLUUID& file_id,
  43. LLAssetType::EType file_type,
  44. void* user_data, LLExtStat ext_status );
  45. class LLTransferTargetParamsVFile : public LLTransferTargetParams
  46. {
  47. public:
  48. LLTransferTargetParamsVFile();
  49. void setAsset(const LLUUID& asset_id, LLAssetType::EType asset_type);
  50. void setCallback(LLTTVFCompleteCallback cb, void* user_data);
  51. LLUUID getAssetID() const { return mAssetID; }
  52. LLAssetType::EType getAssetType() const { return mAssetType; }
  53. friend class LLTransferTargetVFile;
  54. protected:
  55. bool unpackParams(LLDataPacker& dp);
  56. LLUUID mAssetID;
  57. LLAssetType::EType mAssetType;
  58. LLTTVFCompleteCallback mCompleteCallback;
  59. void* mUserDatap;
  60. S32 mErrCode;
  61. };
  62. class LLTransferTargetVFile : public LLTransferTarget
  63. {
  64. public:
  65. LLTransferTargetVFile(const LLUUID& uuid, LLTransferSourceType src_type);
  66. virtual ~LLTransferTargetVFile();
  67. //static void requestTransfer(LLTransferTargetChannel* channelp,
  68. // const char* local_filename,
  69. // const LLTransferSourceParams& source_params,
  70. // LLTTVFCompleteCallback callback);
  71. static void updateQueue(bool shutdown = false);
  72. protected:
  73. virtual bool unpackParams(LLDataPacker& dp);
  74. /*virtual*/ void applyParams(const LLTransferTargetParams& params);
  75. /*virtual*/ LLTSCode dataCallback(const S32 packet_id, U8* in_datap, const S32 in_size);
  76. /*virtual*/ void completionCallback(const LLTSCode status);
  77. LLTransferTargetParamsVFile mParams;
  78. BOOL mNeedsCreate;
  79. LLUUID mTempID;
  80. };
  81. #endif // LL_LLTRANSFERTARGETFILE_H