interface/event
This commit is contained in:
parent
c0aa5e950d
commit
dd860c461d
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
*~
|
||||
*.old
|
||||
*.tar.gz
|
||||
session.vim
|
||||
|
||||
/build
|
||||
/cache
|
||||
|
13
src/interface/event.h
Normal file
13
src/interface/event.h
Normal file
@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
#include "core/types.h"
|
||||
|
||||
namespace interface
|
||||
{
|
||||
struct Event
|
||||
{
|
||||
enum class Type {
|
||||
START,
|
||||
} type;
|
||||
};
|
||||
}
|
||||
|
@ -5,10 +5,13 @@
|
||||
|
||||
namespace interface
|
||||
{
|
||||
struct Event;
|
||||
|
||||
struct Module
|
||||
{
|
||||
virtual ~Module(){};
|
||||
virtual void start() = 0;
|
||||
virtual void event(const interface::Event &event) = 0;
|
||||
|
||||
virtual int test_add(int a, int b) = 0;
|
||||
};
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "config.h"
|
||||
#include "interface/module.h"
|
||||
#include "interface/server.h"
|
||||
#include "interface/event.h"
|
||||
#include <iostream>
|
||||
|
||||
extern server::Config g_server_config;
|
||||
@ -34,7 +35,9 @@ struct CState: public State, public interface::Server
|
||||
m_compiler->construct(module_name.c_str(), this));
|
||||
//int a = m->test_add(1, 2);
|
||||
//std::cout<<"a = "<<a<<std::endl;
|
||||
m->start();
|
||||
interface::Event event;
|
||||
event.type = interface::Event::Type::START;
|
||||
m->event(event);
|
||||
}
|
||||
|
||||
void load_modules(const ss_ &path)
|
||||
|
@ -1,8 +1,11 @@
|
||||
#include "interface/module.h"
|
||||
#include "interface/server.h"
|
||||
#include "interface/fs.h"
|
||||
#include "interface/event.h"
|
||||
#include <iostream>
|
||||
|
||||
using interface::Event;
|
||||
|
||||
struct Module: public interface::Module
|
||||
{
|
||||
interface::Server *m_server;
|
||||
@ -18,6 +21,20 @@ struct Module: public interface::Module
|
||||
std::cout<<"__loader destruct"<<std::endl;
|
||||
}
|
||||
|
||||
void event(const interface::Event &event)
|
||||
{
|
||||
switch(event.type){
|
||||
case Event::Type::START:
|
||||
start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int test_add(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
|
||||
void start()
|
||||
{
|
||||
auto list = interface::getGlobalFilesystem()->list_directory(m_server->get_modules_path());
|
||||
@ -27,11 +44,6 @@ struct Module: public interface::Module
|
||||
m_server->load_module(n.name, m_server->get_modules_path()+"/"+n.name);
|
||||
}
|
||||
}
|
||||
|
||||
int test_add(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
|
@ -1,7 +1,10 @@
|
||||
#include "interface/module.h"
|
||||
#include "interface/server.h"
|
||||
#include "interface/event.h"
|
||||
#include <iostream>
|
||||
|
||||
using interface::Event;
|
||||
|
||||
struct Module: public interface::Module
|
||||
{
|
||||
Module()
|
||||
@ -14,14 +17,23 @@ struct Module: public interface::Module
|
||||
std::cout<<"test1 destruct"<<std::endl;
|
||||
}
|
||||
|
||||
void start()
|
||||
void event(const interface::Event &event)
|
||||
{
|
||||
switch(event.type){
|
||||
case Event::Type::START:
|
||||
start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int test_add(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
|
||||
void start()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
|
Loading…
x
Reference in New Issue
Block a user