initalizes persistence and starts the serf in parallel

This commit is contained in:
Joe Bryan 2019-04-04 17:33:37 -07:00
parent 6c932e5304
commit e22312ea14

View File

@ -1016,7 +1016,9 @@ _pier_disk_init_complete(u3_disk* log_u, c3_d evt_d)
u3_pier* pir_u = log_u->pir_u;
u3_lord* god_u = pir_u->god_u;
if ( (c3y == god_u->liv_o) && (c3n == pir_u->liv_o) ) {
if ( (0 != god_u) &&
(c3y == god_u->liv_o) &&
(c3n == pir_u->liv_o) ) {
_pier_boot_ready(pir_u);
}
}
@ -1174,14 +1176,12 @@ _pier_work_play(u3_pier* pir_u,
//
god_u->rel_d = god_u->dun_d = god_u->sen_d = (lav_d - 1ULL);
// load all committed events
//
_pier_disk_create(pir_u);
{
u3_disk* log_u = pir_u->log_u;
if ( (c3y == log_u->liv_o) && (c3n == pir_u->liv_o) ) {
if ( (0 != log_u) &&
(c3y == log_u->liv_o) &&
(c3n == pir_u->liv_o) ) {
_pier_boot_ready(pir_u);
}
}
@ -1235,15 +1235,14 @@ _pier_work_poke(void* vod_p,
if ( c3y != u3du(jar) ) {
goto error;
}
else {
/* the worker process starts with a %play task,
** which tells us where to start playback
** (and who we are, if it knows)
*/
if ( 0 == pir_u->log_u ) {
switch ( u3h(jar) ) {
default: goto error;
// the worker process starts with a %play task,
// which tells us where to start playback
// (and who we are, if it knows) XX remove in favor of event-log header
//
case c3__play: {
c3_d lav_d;
c3_l mug_l;
@ -1280,11 +1279,6 @@ _pier_work_poke(void* vod_p,
u3z(jar); u3z(mat);
break;
}
}
}
else {
switch ( u3h(jar) ) {
default: goto error;
case c3__work: {
if ( (c3n == u3r_qual(jar, 0, &p_jar, &q_jar, &r_jar)) ||
@ -1320,6 +1314,7 @@ _pier_work_poke(void* vod_p,
}
break;
}
case c3__done: {
if ( (c3n == u3r_qual(jar, 0, &p_jar, &q_jar, &r_jar)) ||
(c3n == u3ud(p_jar)) ||
@ -1343,8 +1338,7 @@ _pier_work_poke(void* vod_p,
break;
}
}
}
}
_pier_apply(pir_u);
return;
@ -1452,6 +1446,12 @@ u3_pier_create(c3_w wag_w, c3_c* pax_c)
pir_u->unx_u = c3_calloc(sizeof(u3_unix));
pir_u->sav_u = c3_calloc(sizeof(u3_save));
// initialize persistence
//
if ( c3n == _pier_disk_create(pir_u) ) {
return 0;
}
// start the serf process
//
if ( !(pir_u->god_u = _pier_work_create(pir_u)) ) {