void Device::setConnectedState (bool isState) { if (isState==isConnected) return; isConnected=isState; if (isConnected) { emit fireConnected(id);} else { if (!portIsSearched) emit fireDisconnected(id); } }
void DeviceRS232::setConnectedState (bool isState) { if (portIsSearched) //если мы ищем порт { if (!isState) //, то дело лишь в том, что на данном порту нет устройства { port->close(); //порт закрываем ms(tr ("setConnectedState triggered with 0 parameter, starting search"),MSG_DEBUG); //рассказываем, что таки нет устройства search (); // и запускаем поиск обратно, он сам уже начнёт другой порт опрашивать return; //вернуться из функции, чтоб левого ничего не запустить } } //теперь если порт не ищем //ms(tr ("nexxt"),MSG_DEBUG); //рассказываем, что таки нет устройства isConnected=isState; //иначе присвариваем if (isConnected) //если наконец подключились { //if (isState!=isConnected) //если состояние не такое, как пришло //{ emit fireConnected(id); //рассказать, что подключились portIsSearched=0; //и отключить поиск порта,если он был включен //} } else //иначе, если мы отключены { emit fireDisconnected(id);//об этом надо рассказать } }
void ApiP2PExtensionHandler::processCommand(const std::vector<std::string> &cmd) { try { if (cmd[0] == "connected") { if (cmd.size() < 4) throw ibrcommon::Exception("not enough parameters"); const dtn::data::EID eid(cmd[1]); dtn::core::Node::Protocol proto = dtn::core::Node::CONN_TCPIP; if (cmd[2] == "tcp") { proto = dtn::core::Node::CONN_TCPIP; } else if (cmd[2] == "udp") { proto = dtn::core::Node::CONN_UDPIP; } const dtn::core::Node::URI uri(dtn::core::Node::NODE_CONNECTED, proto, cmd[3], 0, 30); fireConnected(eid, uri); ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_OK << " NODE CONNECTED" << std::endl; } else if (cmd[0] == "disconnected") { if (cmd.size() < 2) throw ibrcommon::Exception("not enough parameters"); const dtn::data::EID eid(cmd[1]); dtn::core::Node::Protocol proto = dtn::core::Node::CONN_TCPIP; if (cmd[2] == "tcp") { proto = dtn::core::Node::CONN_TCPIP; } else if (cmd[2] == "udp") { proto = dtn::core::Node::CONN_UDPIP; } const dtn::core::Node::URI uri(dtn::core::Node::NODE_CONNECTED, proto, cmd[3], 0, 10); fireDisconnected(eid, uri); ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_OK << " NODE DISCONNECTED" << std::endl; } else if (cmd[0] == "discovered") { if (cmd.size() < 2) throw ibrcommon::Exception("not enough parameters"); const dtn::data::EID eid(cmd[1]); const dtn::core::Node::URI uri(dtn::core::Node::NODE_P2P_DIALUP, this->getProtocol(), cmd[2], 120, 10); fireDiscovered(eid, uri); ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_OK << " NODE DISCOVERED" << std::endl; } else if (cmd[0] == "interface") { if (cmd.size() < 2) throw ibrcommon::Exception("not enough parameters"); if (cmd[1] == "up") { const ibrcommon::vinterface iface(cmd[2]); fireInterfaceUp(iface); ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_OK << " INTERFACE UP" << std::endl; } else if (cmd[1] == "down") { const ibrcommon::vinterface iface(cmd[2]); fireInterfaceDown(iface); ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_OK << " INTERFACE DOWN" << std::endl; } else { ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_BAD_REQUEST << " UNKNOWN INTERFACE STATE" << std::endl; } } else { ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_BAD_REQUEST << " UNKNOWN ACTION" << std::endl; } } catch (const std::exception&) { ibrcommon::MutexLock l(_write_lock); _stream << ClientHandler::API_STATUS_BAD_REQUEST << " ERROR" << std::endl; } }