defined MIO_FEATURE_MUX and MIO_FEATURE_LOG
This commit is contained in:
parent
b0040b8454
commit
487a0d19a0
@ -341,7 +341,7 @@ int main (int argc, char* argv[])
|
||||
mio_dev_sck_connect_t tcp_conn;
|
||||
tcp_server_t* ts;
|
||||
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -1025,7 +1025,7 @@ int main (int argc, char* argv[])
|
||||
SSL_library_init ();
|
||||
#endif
|
||||
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -215,7 +215,7 @@ int main (int argc, char* argv[])
|
||||
fprintf (stderr, "Usage: %s ipaddr:port\n", argv[0]);
|
||||
return -1;
|
||||
}
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(&mmgr, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -161,7 +161,7 @@ int main (int argc, char* argv[])
|
||||
if (strcmp(argv[i], "--line-comment") == 0) o |= MIO_JSON_LINE_COMMENT;
|
||||
}
|
||||
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -73,7 +73,7 @@ int main (int argc, char* argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -218,7 +218,7 @@ void* thr_func (void* arg)
|
||||
mio_svc_htts_t* htts = MIO_NULL;
|
||||
mio_dev_sck_bind_t htts_bind_info;
|
||||
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
@ -570,7 +570,7 @@ int main (int argc, char* argv[])
|
||||
XX_MQ_INIT (&xx_mq);
|
||||
xx_tmridx = MIO_TMRIDX_INVALID;
|
||||
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, 512, MIO_NULL);
|
||||
mio = mio_open(MIO_NULL, 0, MIO_NULL, MIO_FEATURE_ALL, 512, MIO_NULL);
|
||||
if (!mio)
|
||||
{
|
||||
printf ("Cannot open mio\n");
|
||||
|
@ -1527,6 +1527,10 @@ mio_ooi_t mio_logbfmtv (mio_t* mio, mio_bitmask_t mask, const mio_bch_t* fmt, va
|
||||
int x;
|
||||
mio_fmtout_t fo;
|
||||
|
||||
/* there may internal log calls even if this feature is disabled.
|
||||
* the explicit check is required */
|
||||
if (MIO_UNLIKELY(!(mio->_features & MIO_FEATURE_LOG))) return -1;
|
||||
|
||||
if (mio->log.default_type_mask & MIO_LOG_ALL_TYPES)
|
||||
{
|
||||
/* if a type is given, it's not untyped any more.
|
||||
@ -1594,6 +1598,10 @@ mio_ooi_t mio_logufmtv (mio_t* mio, mio_bitmask_t mask, const mio_uch_t* fmt, va
|
||||
int x;
|
||||
mio_fmtout_t fo;
|
||||
|
||||
/* there may internal log calls even if this feature is disabled.
|
||||
* the explicit check is required */
|
||||
if (MIO_UNLIKELY(!(mio->_features & MIO_FEATURE_LOG))) return -1;
|
||||
|
||||
if (mio->log.default_type_mask & MIO_LOG_ALL_TYPES)
|
||||
{
|
||||
/* if a type is given, it's not untyped any more.
|
||||
|
@ -71,7 +71,7 @@ static mio_mmgr_t default_mmgr =
|
||||
|
||||
/* ========================================================================= */
|
||||
|
||||
mio_t* mio_open (mio_mmgr_t* mmgr, mio_oow_t xtnsize, mio_cmgr_t* cmgr, mio_oow_t tmrcapa, mio_errinf_t* errinfo)
|
||||
mio_t* mio_open (mio_mmgr_t* mmgr, mio_oow_t xtnsize, mio_cmgr_t* cmgr, mio_bitmask_t features, mio_oow_t tmrcapa, mio_errinf_t* errinfo)
|
||||
{
|
||||
mio_t* mio;
|
||||
|
||||
@ -81,7 +81,7 @@ mio_t* mio_open (mio_mmgr_t* mmgr, mio_oow_t xtnsize, mio_cmgr_t* cmgr, mio_oow_
|
||||
mio = (mio_t*)MIO_MMGR_ALLOC(mmgr, MIO_SIZEOF(mio_t) + xtnsize);
|
||||
if (mio)
|
||||
{
|
||||
if (mio_init(mio, mmgr, cmgr, tmrcapa) <= -1)
|
||||
if (mio_init(mio, mmgr, cmgr, features, tmrcapa) <= -1)
|
||||
{
|
||||
if (errinfo) mio_geterrinf (mio, errinfo);
|
||||
MIO_MMGR_FREE (mmgr, mio);
|
||||
@ -104,7 +104,7 @@ void mio_close (mio_t* mio)
|
||||
MIO_MMGR_FREE (mio->_mmgr, mio);
|
||||
}
|
||||
|
||||
int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_oow_t tmrcapa)
|
||||
int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_bitmask_t features, mio_oow_t tmrcapa)
|
||||
{
|
||||
int sys_inited = 0;
|
||||
|
||||
@ -112,6 +112,7 @@ int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_oow_t tmrcapa)
|
||||
mio->_instsize = MIO_SIZEOF(*mio);
|
||||
mio->_mmgr = mmgr;
|
||||
mio->_cmgr = cmgr;
|
||||
mio->_features = features;
|
||||
|
||||
/* initialize data for logging support */
|
||||
mio->option.log_mask = MIO_LOG_ALL_LEVELS | MIO_LOG_ALL_TYPES;
|
||||
@ -744,7 +745,7 @@ static void kill_all_halted_devices (mio_t* mio)
|
||||
}
|
||||
}
|
||||
|
||||
int mio_exec (mio_t* mio)
|
||||
static MIO_INLINE int __exec (mio_t* mio)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
@ -790,14 +791,23 @@ int mio_exec (mio_t* mio)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mio_exec (mio_t* mio)
|
||||
{
|
||||
MIO_ASSERT (mio, (MIO_FEATURE_ALL & MIO_FEATURE_MUX)); /* never call this if you disableed this feature */
|
||||
return __exec(mio);
|
||||
}
|
||||
|
||||
void mio_stop (mio_t* mio, mio_stopreq_t stopreq)
|
||||
{
|
||||
MIO_ASSERT (mio, (MIO_FEATURE_ALL & MIO_FEATURE_MUX)); /* never call this if you disableed this feature */
|
||||
mio->stopreq = stopreq;
|
||||
mio_sys_intrmux (mio);
|
||||
}
|
||||
|
||||
int mio_loop (mio_t* mio)
|
||||
{
|
||||
MIO_ASSERT (mio, (MIO_FEATURE_ALL & MIO_FEATURE_MUX)); /* never call this if you disableed this feature */
|
||||
|
||||
if (MIO_DEVL_IS_EMPTY(&mio->actdev)) return 0;
|
||||
|
||||
mio->stopreq = MIO_STOPREQ_NONE;
|
||||
@ -806,7 +816,7 @@ int mio_loop (mio_t* mio)
|
||||
|
||||
while (mio->stopreq == MIO_STOPREQ_NONE && !MIO_DEVL_IS_EMPTY(&mio->actdev))
|
||||
{
|
||||
if (mio_exec(mio) <= -1) break;
|
||||
if (__exec(mio) <= -1) break;
|
||||
/* you can do other things here */
|
||||
}
|
||||
|
||||
|
@ -120,6 +120,15 @@ struct mio_errinf_t
|
||||
};
|
||||
typedef struct mio_errinf_t mio_errinf_t;
|
||||
|
||||
enum mio_feature_t
|
||||
{
|
||||
MIO_FEATURE_LOG = ((mio_bitmask_t)1 << 0),
|
||||
MIO_FEATURE_MUX = ((mio_bitmask_t)1 << 1),
|
||||
|
||||
MIO_FEATURE_ALL = (MIO_FEATURE_LOG | MIO_FEATURE_MUX)
|
||||
};
|
||||
typedef enum mio_feature_t mio_feature_t;
|
||||
|
||||
enum mio_option_t
|
||||
{
|
||||
MIO_TRAIT,
|
||||
@ -634,6 +643,8 @@ struct mio_t
|
||||
mio_oow_t len;
|
||||
} errmsg;
|
||||
|
||||
mio_bitmask_t _features;
|
||||
|
||||
unsigned short int _shuterr;
|
||||
unsigned short int _fini_in_progress;
|
||||
|
||||
@ -699,6 +710,7 @@ MIO_EXPORT mio_t* mio_open (
|
||||
mio_mmgr_t* mmgr,
|
||||
mio_oow_t xtnsize,
|
||||
mio_cmgr_t* cmgr,
|
||||
mio_bitmask_t features,
|
||||
mio_oow_t tmrcapa, /**< initial timer capacity */
|
||||
mio_errinf_t* errinf
|
||||
);
|
||||
@ -711,6 +723,7 @@ MIO_EXPORT int mio_init (
|
||||
mio_t* mio,
|
||||
mio_mmgr_t* mmgr,
|
||||
mio_cmgr_t* cmgr,
|
||||
mio_bitmask_t features,
|
||||
mio_oow_t tmrcapa
|
||||
);
|
||||
|
||||
|
@ -157,8 +157,8 @@ void mio_sys_finimux (mio_t* mio)
|
||||
|
||||
void mio_sys_intrmux (mio_t* mio)
|
||||
{
|
||||
mio_sys_mux_t* mux = &mio->sysdep->mux;
|
||||
/* for now, thie only use of the control pipe is to interrupt the multiplexer */
|
||||
mio_sys_mux_t* mux = &mio->sysdep->mux;
|
||||
if (mux->ctrlp[1] != MIO_SYSHND_INVALID) write (mux->ctrlp[1], "Q", 1);
|
||||
}
|
||||
|
||||
|
@ -35,11 +35,17 @@ int mio_sys_init (mio_t* mio)
|
||||
mio->sysdep = (mio_sys_t*)mio_callocmem(mio, MIO_SIZEOF(*mio->sysdep));
|
||||
if (!mio->sysdep) return -1;
|
||||
|
||||
if (mio_sys_initlog(mio) <= -1) goto oops;
|
||||
log_inited = 1;
|
||||
if (mio->_features & MIO_FEATURE_LOG)
|
||||
{
|
||||
if (mio_sys_initlog(mio) <= -1) goto oops;
|
||||
log_inited = 1;
|
||||
}
|
||||
|
||||
if (mio_sys_initmux(mio) <= -1) goto oops;
|
||||
mux_inited = 1;
|
||||
if (mio->_features & MIO_FEATURE_MUX)
|
||||
{
|
||||
if (mio_sys_initmux(mio) <= -1) goto oops;
|
||||
mux_inited = 1;
|
||||
}
|
||||
|
||||
if (mio_sys_inittime(mio) <= -1) goto oops;
|
||||
time_inited = 1;
|
||||
@ -61,8 +67,8 @@ oops:
|
||||
void mio_sys_fini (mio_t* mio)
|
||||
{
|
||||
mio_sys_finitime (mio);
|
||||
mio_sys_finimux (mio);
|
||||
mio_sys_finilog (mio);
|
||||
if (mio->_features & MIO_FEATURE_MUX) mio_sys_finimux (mio);
|
||||
if (mio->_features & MIO_FEATURE_LOG) mio_sys_finilog (mio);
|
||||
|
||||
mio_freemem (mio, mio->sysdep);
|
||||
mio->sysdep = MIO_NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user