summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/io/io_task.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-29 22:51:04 +0800
committerchai <chaifix@163.com>2019-03-29 22:51:04 +0800
commitc302f5ae5f9e30a28e487e8a764d9cc31546bbea (patch)
tree7f18bedeece950600336ea7ced7c52c468552c98 /source/modules/asura-utils/io/io_task.cpp
parent157530b8b6e11efc5573d5a0db8987a440197aa1 (diff)
*rename
Diffstat (limited to 'source/modules/asura-utils/io/io_task.cpp')
-rw-r--r--source/modules/asura-utils/io/io_task.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/source/modules/asura-utils/io/io_task.cpp b/source/modules/asura-utils/io/io_task.cpp
new file mode 100644
index 0000000..361b9c5
--- /dev/null
+++ b/source/modules/asura-utils/io/io_task.cpp
@@ -0,0 +1,55 @@
+#include "file_system.h"
+#include "io_task.h"
+
+#include <iostream>
+
+using namespace AEScripting;
+using namespace Luax;
+
+namespace AsuraEngine
+{
+ namespace IO
+ {
+
+ IOTask::IOTask(const std::string& path, DataBuffer* buffer, IOTaskType type)
+ : mPath(path)
+ , mBuffer(buffer)
+ {
+ }
+
+ IOTask::~IOTask()
+ {
+ }
+
+ bool IOTask::Execute()
+ {
+ File file(mPath);
+ if (mType == IOTASK_TYPE_WRITE)
+ {
+
+ }
+ // pathȡݱmBuffer
+ else if (mType == IOTASK_TYPE_READ)
+ {
+ file.Open(File::FILE_MODE_READ);
+ file.ReadAll(mBuffer);
+ file.Close();
+ }
+ return true;
+ }
+
+ void IOTask::Invoke(lua_State* invokeThreaad)
+ {
+ if (mCallback)
+ {
+ LuaxScopedState state(invokeThreaad);
+ if (PushLuaxMemberRef(state, mCallback))
+ {
+ PushLuaxMemberRef(state, mBufferRef);
+ state.Call(1, 0);
+ }
+ }
+ }
+
+ }
+}