bool DCCChatConnection::write_connection_data(IRCRawString &write_line, IRCRawString::size_type &write_pos, clan::TCPConnection &connection) { while (true) { if (write_line.length() != write_pos) { int bytes_written = connection.write(write_line.data() + write_pos, write_line.length() - write_pos); if (bytes_written == -1) return true; write_pos += bytes_written; } else { write_line.clear(); write_pos = 0; if (!send_queue.empty()) { if (send_queue.front().type == Message::type_disconnect) { send_queue.erase(send_queue.begin()); return false; } else { write_line = send_queue.front().text + "\r\n"; send_queue.erase(send_queue.begin()); } } } } }
bool IRCConnection::write_connection_data(IRCRawString &write_line, IRCRawString::size_type &write_pos, clan::TCPConnection &connection) { if (write_line.length() != write_pos) { //int old_pos = write_pos; write_pos += connection.write(write_line.data()+write_pos, write_line.length()-write_pos); //clan::Console::write_line(std::string8(write_line.data()+old_pos, write_pos-old_pos, false)); } else { write_line = queues.pop_send(); write_pos = 0; } return true; }
void IRCConnection::write_connection_data(IRCRawString &write_line, IRCRawString::size_type &write_pos, uicore::TCPConnection &connection) { while (true) { if (write_line.length() != write_pos) { int result = connection.write(write_line.data() + write_pos, (int)(write_line.length() - write_pos)); if (result == -1) break; write_pos += result; } else { write_line = queues.pop_send(); write_pos = 0; if (write_line.empty()) break; } } }