Changeset 3360
- Timestamp:
- 04/10/00 23:33:08 (13 years ago)
- Location:
- rat/trunk
- Files:
-
- 2 modified
-
MODS (modified) (2 diffs)
-
main_control.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
rat/trunk/MODS
r3359 r3360 1249 1249 phone, location). 1250 1250 - Fix -f codec communication from controller to engine. 1251 - Break controller address and option parsing so options are not 1252 communicated to engine before rendez-vous has occurred. Otherwise 1253 options can be lost due engine's settings_load occuring 1254 after rendez-vous. 1251 1255 1252 1256 TODO -- They're features not bugs dammit! … … 1304 1308 - Rework media engine initialization, so we can query it before sending 1305 1309 rtp.addr() 1306 - The -f command line option is broken (message arrives during rendez_vous). 1307 1310 1311 -
rat/trunk/main_control.c
r3359 r3360 522 522 } 523 523 524 static int address_count(int argc, char *argv[]) 524 static int 525 parse_options_late(struct mbus *m, char *addr, int argc, char *argv[]) 525 526 { 526 527 const args_handler *a; 527 528 int i; 528 529 for (i = 0; i < argc; i++) { 530 a = get_late_args_handler(argv[i]); 531 if (a == NULL) { 532 break; 533 } 534 i += a->argc; 535 } 536 return argc - i; 537 } 538 539 static void 540 parse_non_addr(struct mbus *m, char *addr, int argc, char *argv[]) 541 { 542 const args_handler *a; 543 int i; 529 530 if (argc < 2) { 531 usage(NULL); 532 return FALSE; 533 } 534 argc -= 1; /* Skip process name */ 535 argv += 1; 544 536 545 537 for (i = 0; i < argc; i++) { … … 553 545 i += a->argc; 554 546 } 555 return; 556 } 547 return (i != argc); 548 } 549 550 static int 551 address_count(int argc, char *argv[]) 552 { 553 const args_handler *a; 554 int i; 555 556 for (i = 0; i < argc; i++) { 557 a = get_late_args_handler(argv[i]); 558 if (a == NULL) { 559 break; 560 } 561 i += a->argc; 562 } 563 return argc - i; 564 } 565 557 566 558 567 static int … … 591 600 } 592 601 593 static int 594 parse_ options(struct mbus *m, char *e_addr, char *u_addr, int argc, char *argv[])602 static int 603 parse_addresses(struct mbus *m, char *e_addr, int argc, char *argv[]) 595 604 { 596 605 char *addr; 597 606 int i, naddr, rx_port, tx_port; 598 struct timeval timeout; 599 607 600 608 if (argc < 2) { 601 609 usage(NULL); … … 621 629 xfree(addr); 622 630 } 623 parse_non_addr(m, e_addr, argc, argv);624 625 /* Synchronize with the sub-processes... */626 do {627 mbus_send(m);628 mbus_heartbeat(m, 1);629 mbus_retransmit(m);630 timeout.tv_sec = 0;631 timeout.tv_usec = 20000;632 mbus_recv(m, NULL, &timeout);633 } while (!mbus_sent_all(m));634 635 UNUSED(u_addr);636 631 return TRUE; 637 632 } … … 836 831 u_addr = fork_process(m, UI_NAME, c_addr, &pid_ui, token_ui); 837 832 e_addr = fork_process(m, ENGINE_NAME, c_addr, &pid_engine, token_engine); 838 839 if (parse_options(m, e_addr, u_addr, argc, argv) == TRUE) { 833 if (parse_addresses(m, e_addr, argc, argv) == TRUE) { 840 834 mbus_rendezvous_go(m, token_engine, (void *) m); 841 835 mbus_rendezvous_go(m, token_ui, (void *) m); 842 836 parse_options_late(m, e_addr, argc, argv); 843 837 final_iters = 25; 844 838 should_exit = FALSE;
