#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. |
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001