summaryrefslogtreecommitdiff
path: root/source/libs/asura-lib-utils/io/io_task.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-04-02 08:47:15 +0800
committerchai <chaifix@163.com>2019-04-02 08:47:15 +0800
commit250e30d73f09e9da2b5a81d0fbae63744ae12a73 (patch)
tree0f55daf334c073e1779d7a1284799a2056aad714 /source/libs/asura-lib-utils/io/io_task.cpp
parent66fe16dd5ed57ae958fc25158d0defae2e6fae6a (diff)
*misc
Diffstat (limited to 'source/libs/asura-lib-utils/io/io_task.cpp')
-rw-r--r--source/libs/asura-lib-utils/io/io_task.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp
new file mode 100644
index 0000000..361b9c5
--- /dev/null
+++ b/source/libs/asura-lib-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);
+ }
+ }
+ }
+
+ }
+}