summaryrefslogtreecommitdiff
path: root/source/libs/asura-lib-utils/io
diff options
context:
space:
mode:
Diffstat (limited to 'source/libs/asura-lib-utils/io')
-rw-r--r--source/libs/asura-lib-utils/io/io_task.cpp15
-rw-r--r--source/libs/asura-lib-utils/io/io_task.h8
2 files changed, 17 insertions, 6 deletions
diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp
index a96c293..1a50e56 100644
--- a/source/libs/asura-lib-utils/io/io_task.cpp
+++ b/source/libs/asura-lib-utils/io/io_task.cpp
@@ -1,5 +1,8 @@
#include "io_task.h"
+using namespace AEScripting;
+using namespace Luax;
+
namespace AsuraEngine
{
namespace IO
@@ -20,9 +23,17 @@ namespace AsuraEngine
return true;
}
- void IOTask::Invoke()
+ void IOTask::Invoke(lua_State* thread)
{
-
+ if (mCallback)
+ {
+ LuaxScopedState state(thread);
+ if (PushLuaxMemberRef(state, mCallback))
+ {
+ PushLuaxMemberRef(state, mDstRef);
+ state.Call(1, 0);
+ }
+ }
}
}
diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h
index aa5b38e..a79b2a8 100644
--- a/source/libs/asura-lib-utils/io/io_task.h
+++ b/source/libs/asura-lib-utils/io/io_task.h
@@ -4,7 +4,7 @@
#include <string>
#include "../scripting/portable.hpp"
-#include "../threading/thread_task.h"
+#include "../threading/task.h"
#include "data_buffer.h"
@@ -18,7 +18,7 @@ namespace AsuraEngine
///
class IOTask ASURA_FINAL
: public AEScripting::Portable<IOTask>
- , public AEThreading::ThreadTask
+ , public AEThreading::Task
{
public:
@@ -28,13 +28,13 @@ namespace AsuraEngine
~IOTask();
bool Execute() override ;
- void Invoke() override;
+ void Invoke(lua_State* thread) override;
private:
std::string mPath;
- DataBuffer* mDst;
+ DataBuffer* mDst;
Luax::LuaxMemberRef mDstRef;
LUAX_DECL_METHOD(_New);