added the main program to handle SIGINT
This commit is contained in:
parent
f89d809cdc
commit
bc5ab97ccf
@ -1374,6 +1374,7 @@ static MOO_INLINE moo_pfrc_t pf_basic_new (moo_t* moo, moo_ooi_t nargs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (MOO_OOP_IS_SMOOI(((moo_oop_class_t)_class)->trsize))
|
if (MOO_OOP_IS_SMOOI(((moo_oop_class_t)_class)->trsize))
|
||||||
{
|
{
|
||||||
obj = moo_instantiatewithtrailer (moo, _class, size, MOO_NULL, MOO_OOP_TO_SMOOI(((moo_oop_class_t)_class)->trsize));
|
obj = moo_instantiatewithtrailer (moo, _class, size, MOO_NULL, MOO_OOP_TO_SMOOI(((moo_oop_class_t)_class)->trsize));
|
||||||
@ -4307,7 +4308,7 @@ oops:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int moo_abort (moo_t* moo)
|
void moo_abort (moo_t* moo)
|
||||||
{
|
{
|
||||||
moo->abort_req = 1;
|
moo->abort_req = 1;
|
||||||
}
|
}
|
||||||
|
@ -978,6 +978,18 @@ static void cancel_tick (void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handle_term (int sig)
|
||||||
|
{
|
||||||
|
if (g_moo) moo_abort (g_moo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setup_term (void)
|
||||||
|
{
|
||||||
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = handle_term;
|
||||||
|
sigaction (SIGINT, &sa, MOO_NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
|
|
||||||
int main (int argc, char* argv[])
|
int main (int argc, char* argv[])
|
||||||
@ -1139,6 +1151,7 @@ int main (int argc, char* argv[])
|
|||||||
xret = 0;
|
xret = 0;
|
||||||
g_moo = moo;
|
g_moo = moo;
|
||||||
setup_tick ();
|
setup_tick ();
|
||||||
|
setup_term ();
|
||||||
|
|
||||||
objname.ptr = str_my_object;
|
objname.ptr = str_my_object;
|
||||||
objname.len = 8;
|
objname.len = 8;
|
||||||
|
@ -799,7 +799,6 @@ moo_pfimpl_t moo_findpfimpl (moo_t* moo, const moo_pfinfo_t* pfinfo, moo_oow_t p
|
|||||||
return MOO_NULL;
|
return MOO_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
int moo_setclasstrsize (moo_t* moo, moo_oop_t _class, moo_oow_t size)
|
int moo_setclasstrsize (moo_t* moo, moo_oop_t _class, moo_oow_t size)
|
||||||
@ -835,13 +834,12 @@ int moo_setclasstrsize (moo_t* moo, moo_oop_t _class, moo_oow_t size)
|
|||||||
|
|
||||||
if (c->trsize != moo->_nil)
|
if (c->trsize != moo->_nil)
|
||||||
{
|
{
|
||||||
MOO_DEBUG3 (moo, "Not allowed to reset trailer size to %zu on the %.*js class\n",
|
MOO_DEBUG3 (moo, "Not allowed to re-set trailer size to %zu on the %.*js class\n",
|
||||||
size,
|
size,
|
||||||
MOO_OBJ_GET_SIZE(c->name),
|
MOO_OBJ_GET_SIZE(c->name),
|
||||||
MOO_OBJ_GET_CHAR_SLOT(c->name));
|
MOO_OBJ_GET_CHAR_SLOT(c->name));
|
||||||
goto eperm;
|
goto eperm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sc = (moo_oop_class_t)c->superclass;
|
sc = (moo_oop_class_t)c->superclass;
|
||||||
if (MOO_OOP_IS_SMOOI(sc->trsize) && size < MOO_OOP_TO_SMOOI(sc->trsize))
|
if (MOO_OOP_IS_SMOOI(sc->trsize) && size < MOO_OOP_TO_SMOOI(sc->trsize))
|
||||||
@ -869,11 +867,9 @@ eperm:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* moo_getobjtrailer (moo_t* moo, moo_oop_t obj, moo_oow_t* size)
|
void* moo_getobjtrailer (moo_t* moo, moo_oop_t obj, moo_oow_t* size)
|
||||||
{
|
{
|
||||||
if (!MOO_OBJ_IS_OOP_POINTER(obj) || !MOO_OBJ_GET_FLAGS_TRAILER(obj)) return MOO_NULL;
|
if (!MOO_OBJ_IS_OOP_POINTER(obj) || !MOO_OBJ_GET_FLAGS_TRAILER(obj)) return MOO_NULL;
|
||||||
|
|
||||||
if (size) *size = MOO_OBJ_GET_TRAILER_SIZE(obj);
|
if (size) *size = MOO_OBJ_GET_TRAILER_SIZE(obj);
|
||||||
return MOO_OBJ_GET_TRAILER_BYTE(obj);
|
return MOO_OBJ_GET_TRAILER_BYTE(obj);
|
||||||
}
|
}
|
||||||
|
@ -1394,6 +1394,10 @@ MOO_EXPORT int moo_invoke (
|
|||||||
const moo_oocs_t* mthname
|
const moo_oocs_t* mthname
|
||||||
);
|
);
|
||||||
|
|
||||||
|
MOO_EXPORT void moo_abort (
|
||||||
|
moo_t* moo
|
||||||
|
);
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* COMMON OBJECT MANAGEMENT FUNCTIONS
|
* COMMON OBJECT MANAGEMENT FUNCTIONS
|
||||||
* ========================================================================= */
|
* ========================================================================= */
|
||||||
|
@ -62,7 +62,7 @@ static moo_pfrc_t pf_connect (moo_t* moo, moo_ooi_t nargs)
|
|||||||
goto softfail;
|
goto softfail;
|
||||||
}
|
}
|
||||||
|
|
||||||
x11 = (x11_t*)MOO_STACK_GETRCV(moo, nargs);
|
x11 = (x11_t*)moo_getobjtrailer(moo, MOO_STACK_GETRCV(moo, nargs), MOO_NULL);
|
||||||
/*
|
/*
|
||||||
name = MOO_STACK_GETARG(moo, nargs, 0);
|
name = MOO_STACK_GETARG(moo, nargs, 0);
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ static moo_pfrc_t pf_disconnect (moo_t* moo, moo_ooi_t nargs)
|
|||||||
goto softfail;
|
goto softfail;
|
||||||
}
|
}
|
||||||
|
|
||||||
x11 = (x11_t*)MOO_STACK_GETRCV(moo, nargs);
|
x11 = (x11_t*)moo_getobjtrailer(moo, MOO_STACK_GETRCV(moo, nargs), MOO_NULL);
|
||||||
|
|
||||||
MOO_DEBUG1 (moo, "<x11.disconnect> %p\n", x11->c);
|
MOO_DEBUG1 (moo, "<x11.disconnect> %p\n", x11->c);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user