void DatagramTransceiver::handleReceiveFrom(const boost::system::error_code &error, size_t bytes_received) { if (error) { stop(); return; } if (bytes_received < m_max_data_length) { m_data_received[bytes_received] = '\0'; emit messageReceived(QString(m_data_received), m_sender_endpoint); } newReadCycle(); }
void StreamClient::handleConnect(const boost::system::error_code& error, tcp::resolver::iterator endpoint_iterator) { if (!error) { emit connectionSuccess(); newReadCycle(); } else if (endpoint_iterator != tcp::resolver::iterator()) { m_socket.close(); tcp::endpoint endpoint = *endpoint_iterator; m_socket.async_connect(endpoint, boost::bind(&StreamClient::handleConnect, this, boost::asio::placeholders::error, ++endpoint_iterator)); } else { m_exit_result = CONNECTION_FAILED; m_socket.close(); emit connectionFailure(); } }
void Horus::Commons::Network::StreamConnection::handleReadChar(const boost::system::error_code &error) { if (!error) { if (m_rx_data[m_rx_data_offset] == '\n') { m_rx_data[m_rx_data_offset+1] = '\0'; emit messageReceived(QString(m_rx_data)); newReadCycle(); } else { boost::asio::async_read( m_socket, boost::asio::buffer(m_rx_data+(++m_rx_data_offset), 1), boost::bind( &StreamConnection::handleReadChar, this, boost::asio::placeholders::error)); } } else { onErrorOccured(); } }
void DatagramTransceiver::start(const udp::endpoint &local_endpoint) { m_socket = new udp::socket(m_io_service, local_endpoint); newReadCycle(); }