Client disconnects from server. bool disconnect()
| 663 | // Client disconnects from server. |
| 664 | // bool disconnect() |
| 665 | NymphMessage* disconnect(int session, NymphMessage* msg, void* data) { |
| 666 | |
| 667 | // Remove the client ID from the list. |
| 668 | std::map<int, CastClient>::iterator it; |
| 669 | it = clients.find(session); |
| 670 | if (it != clients.end()) { |
| 671 | clients.erase(it); |
| 672 | } |
| 673 | |
| 674 | NYMPH_LOG_INFORMATION("Current server mode: " + Poco::NumberFormatter::format(serverMode)); |
| 675 | |
| 676 | // Disconnect any slave remotes if we're connected. |
| 677 | if (serverMode == NCS_MODE_MASTER) { |
| 678 | NYMPH_LOG_DEBUG("# of slave remotes: " + |
| 679 | Poco::NumberFormatter::format(slave_remotes.size())); |
| 680 | for (int i = 0; i < slave_remotes.size(); ++i) { |
| 681 | // Disconnect from slave remote. |
| 682 | NymphCastSlaveRemote& rm = slave_remotes[i]; |
| 683 | NYMPH_LOG_DEBUG("Disconnecting slave: " + rm.name); |
| 684 | std::string result; |
| 685 | if (!NymphRemoteServer::disconnect(rm.handle, result)) { |
| 686 | // Failed to connect, error out. Disconnect from any already connected slaves. |
| 687 | NYMPH_LOG_ERROR("Slave disconnect error: " + result); |
| 688 | } |
| 689 | } |
| 690 | |
| 691 | slave_remotes.clear(); |
| 692 | } |
| 693 | |
| 694 | NYMPH_LOG_INFORMATION("Switching to stand-alone server mode."); |
| 695 | serverMode = NCS_MODE_STANDALONE; |
| 696 | |
| 697 | NymphMessage* returnMsg = msg->getReplyMessage(); |
| 698 | returnMsg->setResultValue(new NymphType(true)); |
| 699 | msg->discard(); |
| 700 | |
| 701 | return returnMsg; |
| 702 | } |
| 703 | |
| 704 | |
| 705 | // Client starts a session. |
no test coverage detected