/* */ #include "XmlRpcDiskWriter.h" #include "DlAbortEx.h" #include "message.h" #include "ValueBase.h" namespace aria2 { namespace rpc { XmlRpcDiskWriter::XmlRpcDiskWriter() : parser_(&psm_) {} XmlRpcDiskWriter::~XmlRpcDiskWriter() = default; void XmlRpcDiskWriter::initAndOpenFile(int64_t totalLength) { parser_.reset(); } void XmlRpcDiskWriter::writeData(const unsigned char* data, size_t len, int64_t offset) { // Return value is ignored here but handled in finalize() parser_.parseUpdate(reinterpret_cast(data), len); } int XmlRpcDiskWriter::finalize() { return parser_.parseFinal(nullptr, 0); } RpcRequest XmlRpcDiskWriter::getResult() { std::unique_ptr params; if (downcast(psm_.getCurrentFrameValue())) { params.reset(static_cast(psm_.popCurrentFrameValue().release())); } else { params = List::g(); } return RpcRequest{psm_.getMethodName(), std::move(params)}; } int XmlRpcDiskWriter::reset() { return parser_.reset(); } } // namespace rpc } // namespace aria2