Browse Source

making main() pretty by moving stuff out of the way

git.mgm/mediaproxy-ng/2.1
Richard Fuchs 14 years ago
parent
commit
d25d1c2009
1 changed files with 30 additions and 19 deletions
  1. +30
    -19
      daemon/main.c

+ 30
- 19
daemon/main.c View File

@ -32,6 +32,13 @@
struct main_context {
struct poller *p;
struct callmaster *m;
};
static int global_shutdown;
@ -315,21 +322,14 @@ static void init_everything() {
}
int main(int argc, char **argv) {
struct poller *p;
struct callmaster *m;
void create_everything(struct main_context *ctx) {
struct callmaster_config mc;
struct control *c;
struct control_udp *cu;
int kfd = -1;
int ret;
void *dlh;
const char **strp;
init_everything();
options(&argc, &argv);
if (table >= 0 && kernel_create_table(table)) {
fprintf(stderr, "FAILED TO CREATE KERNEL TABLE %i, KERNEL FORWARDING DISABLED\n", table);
mylog(LOG_CRIT, "FAILED TO CREATE KERNEL TABLE %i, KERNEL FORWARDING DISABLED\n", table);
@ -348,13 +348,13 @@ int main(int argc, char **argv) {
}
}
p = poller_new();
if (!p)
ctx->p = poller_new();
if (!ctx->p)
die("poller creation failed\n");
m = callmaster_new(p);
if (!m)
return -1;
ctx->m = callmaster_new(ctx->p);
if (!ctx->m)
die("callmaster creation failed\n");
ZERO(mc);
mc.kernelfd = kfd;
@ -372,14 +372,14 @@ int main(int argc, char **argv) {
c = NULL;
if (listenport) {
c = control_new(p, listenp, listenport, m);
c = control_new(ctx->p, listenp, listenport, ctx->m);
if (!c)
die("Failed to open TCP control connection port\n");
}
cu = NULL;
if (udp_listenport) {
cu = control_udp_new(p, udp_listenp, udp_listenport, m);
cu = control_udp_new(ctx->p, udp_listenp, udp_listenport, ctx->m);
if (!cu)
die("Failed to open UDP control connection port\n");
}
@ -403,22 +403,33 @@ int main(int argc, char **argv) {
die("Cannot start up without Redis database\n");
}
callmaster_config(m, &mc);
mylog(LOG_INFO, "Startup complete, version %s", MEDIAPROXY_VERSION);
callmaster_config(ctx->m, &mc);
if (!foreground)
daemonize();
wpidfile();
if (mc.redis) {
if (redis_restore(m, mc.redis))
if (redis_restore(ctx->m, mc.redis))
die("Refusing to continue without working Redis database\n");
}
thread_create_detach(sighandler, NULL);
}
int main(int argc, char **argv) {
struct main_context ctx;
int ret;
init_everything();
options(&argc, &argv);
create_everything(&ctx);
mylog(LOG_INFO, "Startup complete, version %s", MEDIAPROXY_VERSION);
while (!global_shutdown) {
ret = poller_poll(p, 100);
ret = poller_poll(ctx.p, 100);
if (ret == -1)
break;
threads_join_all();


Loading…
Cancel
Save