#include <nml_srv.hh>
Collaboration diagram for NML_SUPER_SERVER:
Public Methods | |
NML_SUPER_SERVER () | |
~NML_SUPER_SERVER () | |
void | add_to_list (NML *) |
void | add_to_list (NML_SERVER *) |
void | spawn_all_servers () |
void | kill_all_servers () |
void | delete_all_servers () |
Data Fields | |
RCS_LINKED_LIST * | servers |
int | unspawned_servers |
|
Definition at line 422 of file nml_srv.cc. 00423 { 00424 servers = (RCS_LINKED_LIST *) NULL; 00425 unspawned_servers = 0; 00426 00427 servers = new RCS_LINKED_LIST; 00428 } |
|
Definition at line 430 of file nml_srv.cc. 00431 { 00432 kill_all_servers (); 00433 delete_all_servers (); 00434 if (NULL != servers) 00435 { 00436 delete servers; 00437 servers = (RCS_LINKED_LIST *) NULL; 00438 } 00439 } |
|
Definition at line 442 of file nml_srv.cc. 00443 { 00444 NML_SERVER *server = (NML_SERVER *) NULL; 00445 NML_SERVER_LOCAL_PORT *local_port = (NML_SERVER_LOCAL_PORT *) NULL; 00446 NML *new_nml = (NML *) NULL; 00447 00448 if (NULL != servers) 00449 { 00450 server = (NML_SERVER *) servers->get_head (); 00451 while (NULL != server) 00452 { 00453 if (server->accept_local_port_cms (_nml->cms)) 00454 { 00455 break; 00456 } 00457 server = (NML_SERVER *) servers->get_next (); 00458 } 00459 if (NULL == server) 00460 { 00461 server = new NML_SERVER (_nml); 00462 if (NULL == server) 00463 { 00464 rcs_print_error 00465 ("NML_SERVER: Unable to create server object.\n"); 00466 } 00467 } 00468 else 00469 { 00470 if (_nml->cms->isserver) 00471 { 00472 new_nml = _nml; 00473 local_port = new NML_SERVER_LOCAL_PORT (new_nml); 00474 local_port->local_channel_reused = 1; 00475 } 00476 else 00477 { 00478 new_nml = new NML (_nml, 1, -1); 00479 local_port = new NML_SERVER_LOCAL_PORT (new_nml); 00480 local_port->local_channel_reused = 0; 00481 } 00482 if (NULL == local_port) 00483 { 00484 rcs_print_error ("NML_SERVER: Unable to create local port.\n"); 00485 return; 00486 } 00487 server->add_local_port (local_port); 00488 } 00489 } 00490 } |
|
Definition at line 493 of file nml_srv.cc. 00494 { 00495 if ((NULL != servers) && (NULL != _server)) 00496 { 00497 _server->super_server_list_id 00498 = servers->store_at_tail (_server, sizeof (NML_SERVER), 0); 00499 unspawned_servers++; 00500 } 00501 } |
|
Definition at line 504 of file nml_srv.cc. 00505 { 00506 NML_SERVER *server; 00507 00508 if (NULL != servers) 00509 { 00510 server = (NML_SERVER *) servers->get_head (); 00511 while (NULL != server) 00512 { 00513 if (server->spawn () > 0 && unspawned_servers > 0) 00514 { 00515 unspawned_servers--; 00516 } 00517 server = (NML_SERVER *) servers->get_next (); 00518 } 00519 } 00520 } |
|
Definition at line 523 of file nml_srv.cc. Referenced by ~NML_SUPER_SERVER().
00524 { 00525 NML_SERVER *server; 00526 00527 if (NULL != servers) 00528 { 00529 server = (NML_SERVER *) servers->get_head (); 00530 while (NULL != server) 00531 { 00532 #ifdef WIN32 00533 DWORD pid; 00534 pid = GetCurrentProcessId (); 00535 if (server->spawner_pid != pid || pid == server->server_pid) 00536 { 00537 server = (NML_SERVER *) servers->get_next (); 00538 continue; 00539 } 00540 #endif 00541 #ifdef VXWORKS 00542 int pid; 00543 pid = taskIdSelf (); 00544 if (server->spawner_pid != pid) 00545 { 00546 server = (NML_SERVER *) servers->get_next (); 00547 continue; 00548 } 00549 #endif 00550 if (server->server_spawned) 00551 { 00552 server->kill_server (); 00553 } 00554 server = (NML_SERVER *) servers->get_next (); 00555 } 00556 } 00557 } |
|
Definition at line 560 of file nml_srv.cc. Referenced by ~NML_SUPER_SERVER().
00561 { 00562 #ifdef VXWORKS 00563 int pid, tid; 00564 pid = taskIdSelf (); 00565 tid = 0; 00566 #endif 00567 #ifdef WIN32 00568 DWORD pid = GetCurrentProcessId (); 00569 DWORD tid = GetCurrentThreadId (); 00570 #endif 00571 NML_SERVER *server; 00572 if (NULL != servers) 00573 { 00574 server = (NML_SERVER *) servers->get_head (); 00575 while (NULL != server) 00576 { 00577 #if defined(VXWORKS) || defined(WIN32) 00578 if ( 00579 (server->server_spawned 00580 && (server->spawner_pid != pid || server->spawner_tid != tid)) 00581 || (!server->server_spawned 00582 && (server->server_pid != pid 00583 || server->server_tid != tid))) 00584 { 00585 server = (NML_SERVER *) servers->get_next (); 00586 continue; 00587 } 00588 #endif 00589 if (!server->server_spawned && unspawned_servers > 0) 00590 { 00591 unspawned_servers--; 00592 } 00593 delete server; 00594 server = (NML_SERVER *) servers->get_next (); 00595 } 00596 } 00597 } |
|
Definition at line 88 of file nml_srv.hh. |
|
Definition at line 96 of file nml_srv.hh. |