| // Copyright 2015 The Android Open Source Project |
| // |
| // This software is licensed under the terms of the GNU General Public |
| // License version 2, as published by the Free Software Foundation, and |
| // may be copied, distributed, and modified under those terms. |
| // |
| // This program is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| |
| #include "android-qemu2-glue/base/files/QemuFileStream.h" |
| |
| #include "android/base/Log.h" |
| |
| extern "C" { |
| #include "qemu/osdep.h" |
| #include "qemu-common.h" |
| #include "migration/qemu-file.h" |
| } |
| |
| namespace android { |
| namespace qemu { |
| |
| QemuFileStream::QemuFileStream(QEMUFile* file) : mFile(file) {} |
| |
| QemuFileStream::~QemuFileStream() {} |
| |
| ssize_t QemuFileStream::read(void* buffer, size_t len) { |
| DCHECK(static_cast<ssize_t>(len) >= 0); |
| DCHECK(static_cast<ssize_t>(len) == static_cast<int>(len)); |
| return static_cast<ssize_t>( |
| qemu_get_buffer(mFile, |
| static_cast<uint8_t*>(buffer), |
| static_cast<int>(len))); |
| } |
| |
| ssize_t QemuFileStream::write(const void* buffer, size_t len) { |
| DCHECK(static_cast<ssize_t>(len) >= 0); |
| DCHECK(static_cast<ssize_t>(len) == static_cast<int>(len)); |
| qemu_put_buffer(mFile, |
| static_cast<const uint8_t*>(buffer), |
| static_cast<int>(len)); |
| // There is no way to know if all could be written, so always |
| // return success here. |
| return static_cast<ssize_t>(len); |
| } |
| |
| } // namespace qemu |
| } // namespace android |