2 #include "NPLMessageQueue.h" 3 #include <boost/noncopyable.hpp> 26 virtual HRESULT
Decompress(
void** ppData,
int* pcBytes ) = 0;
30 virtual HRESULT
Load() = 0;
47 virtual int GetProcessorQueueID(){
return 0;};
82 virtual HRESULT LockDeviceObject() = 0;
84 virtual HRESULT UnLockDeviceObject() = 0;
88 virtual HRESULT Process(
void* pData,
int cBytes ) = 0;
90 virtual HRESULT CopyToResource() = 0;
92 virtual void SetResourceError() = 0;
107 ResourceRequestType_Local,
108 ResourceRequestType_Asset,
109 ResourceRequestType_Web,
110 ResourceRequestType_Quit,
116 ResourceRequestID_Local = 0,
117 ResourceRequestID_Asset,
118 ResourceRequestID_Web,
119 ResourceRequestID_Asset_BigFile,
120 ResourceRequestID_AudioFile,
127 private boost::noncopyable
129 ResourceRequest(
ResourceRequestType nType = ResourceRequestType_Local):m_nType(nType),m_pDataLoader(NULL), m_pDataProcessor(NULL), m_ppDeviceObject(NULL), m_pHR(NULL), m_nProcessorQueueID(0), m_last_error_code(S_OK) {}
138 HRESULT m_last_error_code;
139 void** m_ppDeviceObject;
153 typedef ParaIntrusivePtr<ResourceRequest> ResourceRequest_ptr;
163 BufferStatus try_push(ResourceRequest_ptr& item);
ResourceRequestType
resource request type.
Definition: IDataLoader.h:105
virtual bool IsDeviceObject()
default to true.
Definition: IDataLoader.h:39
virtual HRESULT Decompress(void **ppData, int *pcBytes)=0
Decompress is called by one of the processing threads to decompress the data.
it implements a producer/consumer(s) queue design pattern.
Definition: NPLMessageQueue.h:26
virtual void * GetCurlInterface(int nID=0)
get the libcurl easy interface that this thread is related to.
Definition: IDataLoader.h:53
different physics engine has different winding order.
Definition: EventBinding.h:32
the message queue
Definition: IDataLoader.h:156
ResourceRequestType m_nType
request type
Definition: IDataLoader.h:133
virtual int GetEstimatedSizeInBytes()
this function is solely used in statistics reporting.
Definition: IDataLoader.h:36
virtual HRESULT Destroy()=0
Destroy is called by the graphics thread when it has consumed the data, unless IsDeviceObject() is fa...
interface of processor worker data
Definition: IDataLoader.h:44
virtual IProcessorWorkerData * GetProcessorWorkerData()
get thread local data.
Definition: IDataLoader.h:97
multi-threaded reference counted base class for boost::intrusive_ptr all boost::intrusive_ptr<T>, should derive from this class.
Definition: intrusive_ptr.h:47
virtual bool IsDeviceObject()
default to true.
Definition: IDataLoader.h:100
virtual int GetBytesProcessed()
get total number of bytes processed.
Definition: IDataLoader.h:59
virtual HRESULT Load()=0
Load is called from the IO thread to load data.
virtual void AddBytesProcessed(int nBytesProcessed)
add number of bytes processed.
Definition: IDataLoader.h:56
IDataProcessor is an interface that the AsyncLoader class uses to process and copy data into locked r...
Definition: IDataLoader.h:76
virtual void SetProcessorWorkerData(IProcessorWorkerData *pThreadLocalData)
set thread local data.
Definition: IDataLoader.h:95
if one wants to create and delete many objects of the same type per frame, derive your class from Poo...
Definition: PoolBase.h:60
IDataLoader is an interface that the AsyncLoader class uses to load data from disk.
Definition: IDataLoader.h:14
virtual const char * GetFileName()
get the file name
Definition: IDataLoader.h:20
ResourceRequestID
predefined resource request id.
Definition: IDataLoader.h:114
ParaEngine resource request.
Definition: IDataLoader.h:124
virtual const char * GetKeyName()
get the key name
Definition: IDataLoader.h:23
int m_nProcessorQueueID
process queue id, default to 0.
Definition: IDataLoader.h:147
virtual void SetEstimatedSizeInBytes(int nSize)
this function is solely used in statistics reporting.
Definition: IDataLoader.h:33