From 250e30d73f09e9da2b5a81d0fbae63744ae12a73 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 2 Apr 2019 08:47:15 +0800 Subject: *misc --- source/libs/asura-lib-utils/io/io_task.cpp | 55 ++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/libs/asura-lib-utils/io/io_task.cpp (limited to 'source/libs/asura-lib-utils/io/io_task.cpp') 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 + +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); + } + } + } + + } +} -- cgit v1.1-26-g67d0