From 157530b8b6e11efc5573d5a0db8987a440197aa1 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 29 Mar 2019 22:28:40 +0800 Subject: *misc --- .../asura-lib-utils/io/binding/_data_buffer.cpp | 1 + source/libs/asura-lib-utils/io/io_batch_task.cpp | 0 source/libs/asura-lib-utils/io/io_batch_task.h | 31 ++++++++++++++++++++++ source/libs/asura-lib-utils/io/io_task.cpp | 4 +-- source/libs/asura-lib-utils/io/io_task.h | 2 +- 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 source/libs/asura-lib-utils/io/io_batch_task.cpp create mode 100644 source/libs/asura-lib-utils/io/io_batch_task.h (limited to 'source/libs/asura-lib-utils/io') diff --git a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp b/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp index 6725bc4..cd73b31 100644 --- a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp +++ b/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp @@ -42,6 +42,7 @@ namespace AsuraEngine size_t size = lua_tonumber(L, 1); DataBuffer* buffer = new DataBuffer(size); buffer->PushLuaxUserdata(state); + return 1; } else { diff --git a/source/libs/asura-lib-utils/io/io_batch_task.cpp b/source/libs/asura-lib-utils/io/io_batch_task.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-utils/io/io_batch_task.h b/source/libs/asura-lib-utils/io/io_batch_task.h new file mode 100644 index 0000000..c0be921 --- /dev/null +++ b/source/libs/asura-lib-utils/io/io_batch_task.h @@ -0,0 +1,31 @@ +#ifndef __ASURA_IO_BATCH_TASK_H__ +#define __ASURA_IO_BATCH_TASK_H__ + +#include "io_task.h" + +namespace AsuraEngine +{ + namespace IO + { + + /// + /// 批量处理读或者写。一次性提交一个table,依次处理后返回结果。 + /// + class IOBatchTask ASURA_FINAL : public AEThreading::Task + { + public: + + private: + + /// + /// 任务表,每一条的结构如下: + /// { path = "", } + /// + Luax::LuaxMemberRef mTasks; + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp index 38e21ad..361b9c5 100644 --- a/source/libs/asura-lib-utils/io/io_task.cpp +++ b/source/libs/asura-lib-utils/io/io_task.cpp @@ -38,11 +38,11 @@ namespace AsuraEngine return true; } - void IOTask::Invoke() + void IOTask::Invoke(lua_State* invokeThreaad) { if (mCallback) { - LuaxScopedState state(LuaEnv::Get()->GetMainThread()); + LuaxScopedState state(invokeThreaad); if (PushLuaxMemberRef(state, mCallback)) { PushLuaxMemberRef(state, mBufferRef); diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h index 5f454ee..8f04142 100644 --- a/source/libs/asura-lib-utils/io/io_task.h +++ b/source/libs/asura-lib-utils/io/io_task.h @@ -35,7 +35,7 @@ namespace AsuraEngine ~IOTask(); bool Execute() override ; - void Invoke() override; + void Invoke(lua_State* invokeThreaad) override; private: -- cgit v1.1-26-g67d0