bool OutputFile::write(const BufferSequence &sequence) {
  boost::mutex::scoped_lock lock(write_mutex_);

  std::size_t n = buffers_end(sequence) - buffers_begin(sequence);
  if (n == 0) return true;
  MutableBuffer buffer = out_.prepare(n);

  std::copy(buffers_begin(sequence), buffers_end(sequence), buffer_cast<char *>(buffer));
  out_.commit(n);

  worker_->post(boost::bind(&OutputFile::doWrite, this));
  worker_->start();

  return true;
}
std::string XMLClient::makeString(boost::asio::streambuf& streambuf, std::size_t n) {
    return std::string(buffers_begin(streambuf.data()),
            buffers_begin(streambuf.data()) + n);
}