blob: fadff1582830a2fba75008c81913b325e1f18b7f [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_BIG_IO_BUFFER_H_
#define COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_BIG_IO_BUFFER_H_
#include "mojo/public/cpp/base/big_buffer.h"
#include "net/base/io_buffer.h"
namespace storage {
// A net::IOBufferWithSize backed by a mojo_base::BigBuffer. Avoids having to
// copy an IOBuffer to a BigBuffer to return the results of an IO operation.
class COMPONENT_EXPORT(STORAGE_SERVICE_PUBLIC) BigIOBuffer
: public net::IOBuffer {
public:
BigIOBuffer(const BigIOBuffer&) = delete;
BigIOBuffer& operator=(const BigIOBuffer&) = delete;
explicit BigIOBuffer(mojo_base::BigBuffer buffer);
explicit BigIOBuffer(size_t size);
mojo_base::BigBuffer TakeBuffer();
protected:
~BigIOBuffer() override;
private:
mojo_base::BigBuffer buffer_;
};
} // namespace storage
#endif // COMPONENTS_SERVICES_STORAGE_PUBLIC_CPP_BIG_IO_BUFFER_H_