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); +				} +			} +		} + +	} +} | 
