diff options
Diffstat (limited to 'source/libs/asura-lib-utils/io/io_task.cpp')
-rw-r--r-- | source/libs/asura-lib-utils/io/io_task.cpp | 55 |
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); + } + } + } + + } +} |