bool fetch_master_status(tcp::socket *socket, std::string *filename, unsigned long *position) { asio::streambuf server_messages; std::ostream command_request_stream(&server_messages); Protocol_chunk<uint8_t> prot_command(COM_QUERY); command_request_stream << prot_command << "SHOW MASTER STATUS"; int size=server_messages.size(); char command_packet_header[4]; write_packet_header(command_packet_header, size, 0); // Send the request. asio::write(*socket, asio::buffer(command_packet_header, 4), asio::transfer_at_least(4)); asio::write(*socket, server_messages, asio::transfer_at_least(size)); Result_set result_set(socket); Converter conv; for(Result_set::iterator it = result_set.begin(); it != result_set.end(); it++) { Row_of_fields row(*it); *filename= ""; conv.to(*filename, row[0]); long pos; conv.to(pos, row[1]); *position= (unsigned long)pos; } return false; }
bool fetch_master_status(tcp::socket *socket, std::string *filename, unsigned long *position) { boost::asio::streambuf server_messages; std::ostream command_request_stream(&server_messages); static boost::uint8_t com_query = COM_QUERY; Protocol_chunk<boost::uint8_t> prot_command(com_query); command_request_stream << prot_command << "SHOW MASTER STATUS"; int size=server_messages.size(); char command_packet_header[4]; write_packet_header(command_packet_header, size, 0); // Send the request. boost::asio::write(*socket, boost::asio::buffer(command_packet_header, 4), boost::asio::transfer_at_least(4)); boost::asio::write(*socket, server_messages, boost::asio::transfer_at_least(size)); Result_set result_set(socket); Converter conv; BOOST_FOREACH(Row_of_fields row, result_set) { *filename= ""; conv.to(*filename, row[0]); long pos; conv.to(pos, row[1]); *position= (unsigned long)pos; }
bool fetch_binlogs_name_and_size(tcp::socket *socket, std::map<std::string, unsigned long> &binlog_map) { asio::streambuf server_messages; std::ostream command_request_stream(&server_messages); Protocol_chunk<uint8_t> prot_command(COM_QUERY); command_request_stream << prot_command << "SHOW BINARY LOGS"; int size=server_messages.size(); char command_packet_header[4]; write_packet_header(command_packet_header, size, 0); // Send the request. asio::write(*socket, asio::buffer(command_packet_header, 4), asio::transfer_at_least(4)); asio::write(*socket, server_messages, asio::transfer_at_least(size)); Result_set result_set(socket); Converter conv; for(Result_set::iterator it = result_set.begin(); it != result_set.end(); it++) { Row_of_fields row(*it); std::string filename; long position; conv.to(filename, row[0]); conv.to(position, row[1]); binlog_map.insert(std::make_pair<std::string, unsigned long>(filename, (unsigned long)position)); } return false; }
bool Binlog_tcp_driver::fetch_master_status(tcp::socket *socket, std::string *filename, unsigned long *position) { boost::asio::streambuf server_messages; std::ostream command_request_stream(&server_messages); static boost::uint8_t com_query = COM_QUERY; Protocol_chunk<boost::uint8_t> prot_command(com_query); command_request_stream << prot_command << "SHOW MASTER STATUS"; int size=server_messages.size(); char command_packet_header[4]; write_packet_header(command_packet_header, size, 0); try { // Send the request. boost::asio::write(*socket, boost::asio::buffer(command_packet_header, 4), boost::asio::transfer_at_least(4)); boost::asio::write(*socket, server_messages, boost::asio::transfer_at_least(size)); } catch(boost::system::error_code const& e) { throw(ListenerException(std::string("Show master status failed: ") + e.message(), __FILE__, __LINE__)); } Result_set result_set(socket); Converter conv; BOOST_FOREACH(Row_of_fields row, result_set) { *filename= ""; conv.to(*filename, row[0]); long pos; conv.to(pos, row[1]); *position= (unsigned long)pos; }