mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2026-02-15 04:03:49 +01:00
fixed 2 bugs
This commit is contained in:
parent
e5095f4624
commit
4a2a60990b
@ -27,6 +27,24 @@ static nn_Exit sandbox_handler(nn_ComponentRequest *req) {
|
|||||||
return NN_OK;
|
return NN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nn_Exit sandbox_arch(nn_ArchitectureRequest *req) {
|
||||||
|
nn_Computer *c = req->computer;
|
||||||
|
switch(req->action) {
|
||||||
|
case NN_ARCH_INIT:
|
||||||
|
return NN_OK;
|
||||||
|
case NN_ARCH_DEINIT:
|
||||||
|
return NN_OK;
|
||||||
|
case NN_ARCH_FREEMEM:
|
||||||
|
req->freeMemory = 0;
|
||||||
|
return NN_OK;
|
||||||
|
case NN_ARCH_TICK:
|
||||||
|
nn_pushstring(c, "Hello from component call");
|
||||||
|
nn_call(c, "sandbox", "log");
|
||||||
|
return NN_OK;
|
||||||
|
}
|
||||||
|
return NN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
nn_Context ctx;
|
nn_Context ctx;
|
||||||
nn_initContext(&ctx);
|
nn_initContext(&ctx);
|
||||||
@ -34,6 +52,12 @@ int main() {
|
|||||||
// create the universe
|
// create the universe
|
||||||
nn_Universe *u = nn_createUniverse(&ctx);
|
nn_Universe *u = nn_createUniverse(&ctx);
|
||||||
|
|
||||||
|
nn_Architecture arch = {
|
||||||
|
.name = "Sandbox test",
|
||||||
|
.state = NULL,
|
||||||
|
.handler = sandbox_arch,
|
||||||
|
};
|
||||||
|
|
||||||
nn_ComponentMethod sandboxMethods[] = {
|
nn_ComponentMethod sandboxMethods[] = {
|
||||||
{"log", "log(msg: string) - Log to stdout", true},
|
{"log", "log(msg: string) - Log to stdout", true},
|
||||||
{NULL},
|
{NULL},
|
||||||
@ -42,10 +66,9 @@ int main() {
|
|||||||
|
|
||||||
nn_Computer *c = nn_createComputer(u, NULL, "computer0", 8 * NN_MiB, 256, 256);
|
nn_Computer *c = nn_createComputer(u, NULL, "computer0", 8 * NN_MiB, 256, 256);
|
||||||
|
|
||||||
nn_addComponent(c, ctype, "sandbox", -1, NULL);
|
nn_setArchitecture(c, &arch);
|
||||||
|
|
||||||
nn_pushstring(c, "Hello from component call");
|
nn_addComponent(c, ctype, "sandbox", -1, NULL);
|
||||||
nn_call(c, "sandbox", "log");
|
|
||||||
|
|
||||||
printf("Component added: %s\n", nn_hasComponent(c, "sandbox") ? "TRUE" : "FALSE");
|
printf("Component added: %s\n", nn_hasComponent(c, "sandbox") ? "TRUE" : "FALSE");
|
||||||
printf("Method active: %s\n", nn_hasMethod(c, "sandbox", "log") ? "TRUE" : "FALSE");
|
printf("Method active: %s\n", nn_hasMethod(c, "sandbox", "log") ? "TRUE" : "FALSE");
|
||||||
|
|||||||
@ -826,7 +826,7 @@ nn_Exit nn_addComponent(nn_Computer *computer, nn_ComponentType *ctype, const ch
|
|||||||
|
|
||||||
computer->components[computer->componentLen++] = c;
|
computer->components[computer->componentLen++] = c;
|
||||||
|
|
||||||
if(computer->state != NN_BOOTUP) {
|
if(computer->state == NN_RUNNING) {
|
||||||
err = nn_pushstring(computer, "component_added");
|
err = nn_pushstring(computer, "component_added");
|
||||||
if(err) return err;
|
if(err) return err;
|
||||||
err = nn_pushstring(computer, address);
|
err = nn_pushstring(computer, address);
|
||||||
@ -913,7 +913,7 @@ nn_Exit nn_removeComponent(nn_Computer *computer, const char *address) {
|
|||||||
if(c.address == NULL) return NN_EBADSTATE;
|
if(c.address == NULL) return NN_EBADSTATE;
|
||||||
nn_dropComponent(computer, c);
|
nn_dropComponent(computer, c);
|
||||||
|
|
||||||
if(computer->state != NN_BOOTUP) {
|
if(computer->state == NN_RUNNING) {
|
||||||
nn_Exit err = nn_pushstring(computer, "component_removed");
|
nn_Exit err = nn_pushstring(computer, "component_removed");
|
||||||
if(err) return err;
|
if(err) return err;
|
||||||
err = nn_pushstring(computer, address);
|
err = nn_pushstring(computer, address);
|
||||||
@ -1254,7 +1254,9 @@ size_t nn_countSignals(nn_Computer *computer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
nn_Exit nn_pushSignal(nn_Computer *computer, size_t valueCount) {
|
nn_Exit nn_pushSignal(nn_Computer *computer, size_t valueCount) {
|
||||||
|
if(computer->state != NN_RUNNING) return nn_popn(computer, valueCount);
|
||||||
if(computer->signalCount == NN_MAX_SIGNALS) return NN_ELIMIT;
|
if(computer->signalCount == NN_MAX_SIGNALS) return NN_ELIMIT;
|
||||||
|
if(computer->stackSize < valueCount) return NN_EBELOWSTACK;
|
||||||
|
|
||||||
int cost = nn_countValueCost(computer, valueCount);
|
int cost = nn_countValueCost(computer, valueCount);
|
||||||
if(cost == -1) return NN_EBADSTATE;
|
if(cost == -1) return NN_EBADSTATE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user