summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/io
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-04-03 21:56:51 +0800
committerchai <chaifix@163.com>2019-04-03 21:56:51 +0800
commite13616b5c40f912853be99f0603f0e4c97b22062 (patch)
tree6663eab986dbf0317f326bce863edc3d7bf3332e /source/modules/asura-utils/io
parentc8a6a8e2dd6f015a31b4f8191ad945a78fe77f3d (diff)
*misc
Diffstat (limited to 'source/modules/asura-utils/io')
-rw-r--r--source/modules/asura-utils/io/compressor.h2
-rw-r--r--source/modules/asura-utils/io/data_buffer.h16
-rw-r--r--source/modules/asura-utils/io/file_data.cpp9
-rw-r--r--source/modules/asura-utils/io/io_task.cpp6
-rw-r--r--source/modules/asura-utils/io/io_task.h7
5 files changed, 25 insertions, 15 deletions
diff --git a/source/modules/asura-utils/io/compressor.h b/source/modules/asura-utils/io/compressor.h
index 30a074c..65fd88a 100644
--- a/source/modules/asura-utils/io/compressor.h
+++ b/source/modules/asura-utils/io/compressor.h
@@ -20,8 +20,6 @@ namespace AsuraEngine
LUAX_DECL_METHOD(_Compress);
LUAX_DECL_METHOD(_Decompress);
-
-
};
}
diff --git a/source/modules/asura-utils/io/data_buffer.h b/source/modules/asura-utils/io/data_buffer.h
index 61d158b..c60444e 100644
--- a/source/modules/asura-utils/io/data_buffer.h
+++ b/source/modules/asura-utils/io/data_buffer.h
@@ -56,6 +56,14 @@ namespace AsuraEngine
private:
+ LUAX_DECL_METHOD(_New);
+ LUAX_DECL_METHOD(_GetData);
+ LUAX_DECL_METHOD(_GetSize);
+ LUAX_DECL_METHOD(_GetCapacity);
+ LUAX_DECL_METHOD(_Refactor);
+ LUAX_DECL_METHOD(_Load);
+ LUAX_DECL_METHOD(_Clear);
+
///
/// Buffer׵ַݵij
///
@@ -69,14 +77,6 @@ namespace AsuraEngine
AEThreading::Mutex mMutex;
- LUAX_DECL_METHOD(_New);
- LUAX_DECL_METHOD(_GetData);
- LUAX_DECL_METHOD(_GetSize);
- LUAX_DECL_METHOD(_GetCapacity);
- LUAX_DECL_METHOD(_Refactor);
- LUAX_DECL_METHOD(_Load);
- LUAX_DECL_METHOD(_Clear);
-
};
}
diff --git a/source/modules/asura-utils/io/file_data.cpp b/source/modules/asura-utils/io/file_data.cpp
index 92333cf..ad58db9 100644
--- a/source/modules/asura-utils/io/file_data.cpp
+++ b/source/modules/asura-utils/io/file_data.cpp
@@ -21,6 +21,8 @@ namespace AsuraEngine
FileData::~FileData()
{
+ if (mData)
+ mData->Release();
}
const std::string& FileData::GetFileName()
@@ -40,7 +42,12 @@ namespace AsuraEngine
void FileData::BindData(ASURA_MOVE DataBuffer* buffer)
{
+ if (!buffer)
+ return;
+ if (mData)
+ mData->Release();
mData = buffer;
+ mData->Retain();
}
DataBuffer* FileData::GetDataBuffer()
@@ -49,4 +56,4 @@ namespace AsuraEngine
}
}
-}
+} \ No newline at end of file
diff --git a/source/modules/asura-utils/io/io_task.cpp b/source/modules/asura-utils/io/io_task.cpp
index 5f0e1c8..ca03b09 100644
--- a/source/modules/asura-utils/io/io_task.cpp
+++ b/source/modules/asura-utils/io/io_task.cpp
@@ -15,10 +15,14 @@ namespace AsuraEngine
: mPath(path)
, mBuffer(buffer)
{
+ if (buffer)
+ buffer->Retain();
}
IOTask::~IOTask()
{
+ if (mBuffer)
+ mBuffer->Release();
}
bool IOTask::Execute()
@@ -31,6 +35,8 @@ namespace AsuraEngine
// pathȡݱmBuffer
else if (mType == IOTASK_TYPE_READ)
{
+ if (!mBuffer)
+ return false;
file.Open(File::FILE_MODE_READ);
file.ReadAll(mBuffer);
file.Close();
diff --git a/source/modules/asura-utils/io/io_task.h b/source/modules/asura-utils/io/io_task.h
index 09c8798..0cf5023 100644
--- a/source/modules/asura-utils/io/io_task.h
+++ b/source/modules/asura-utils/io/io_task.h
@@ -24,8 +24,7 @@ namespace AsuraEngine
/// ȡļ
///
class IOTask ASURA_FINAL
- : public AEThreading::Task
- , public AEScripting::Portable<IOTask>
+ : public AEScripting::Portable<IOTask, AEThreading::Task>
{
public:
@@ -46,8 +45,8 @@ namespace AsuraEngine
std::string mPath;
IOTaskType mType;
- asura_ref DataBuffer* mBuffer;
- Luax::LuaxMemberRef mBufferRef;
+ DataBuffer* mBuffer;
+ Luax::LuaxMemberRef mBufferRef;
};