void Connection::PendingWriteSsl::flush() { if (!is_flushed_ && !buffers_.empty()) { SslSession* ssl_session = connection_->ssl_session_.get(); uv_bufs_.reserve(buffers_.size()); for (BufferVec::const_iterator it = buffers_.begin(), end = buffers_.end(); it != end; ++it) { uv_bufs_.push_back(uv_buf_init(const_cast<char*>(it->data()), it->size())); } rb::RingBuffer::Position prev_pos = ssl_session->outgoing().write_position(); encrypt(); FixedVector<uv_buf_t, SSL_ENCRYPTED_BUFS_COUNT> bufs; encrypted_size_ = ssl_session->outgoing().peek_multiple(prev_pos, &bufs); LOG_TRACE("Sending %u encrypted bytes", static_cast<unsigned int>(encrypted_size_)); uv_stream_t* sock_stream = copy_cast<uv_tcp_t*, uv_stream_t*>(&connection_->socket_); uv_write(&req_, sock_stream, bufs.data(), bufs.size(), PendingWriteSsl::on_write); is_flushed_ = true; } }
void Connection::PendingWriteSsl::flush() { if (!is_flushed_ && !buffers_.empty()) { SslSession* ssl_session = connection_->ssl_session_.get(); rb::RingBuffer::Position prev_pos = ssl_session->outgoing().write_position(); encrypt(); FixedVector<uv_buf_t, SSL_ENCRYPTED_BUFS_COUNT> bufs; encrypted_size_ = ssl_session->outgoing().peek_multiple(prev_pos, &bufs); LOG_TRACE("Sending %u encrypted bytes", static_cast<unsigned int>(encrypted_size_)); uv_stream_t* sock_stream = copy_cast<uv_tcp_t*, uv_stream_t*>(&connection_->socket_); uv_write(&req_, sock_stream, bufs.data(), bufs.size(), PendingWriteSsl::on_write); is_flushed_ = true; } }