Index: third_party/crashpad/crashpad/minidump/minidump_user_extension_stream_data_source.h |
diff --git a/third_party/crashpad/crashpad/minidump/minidump_user_extension_stream_data_source.h b/third_party/crashpad/crashpad/minidump/minidump_user_extension_stream_data_source.h |
index 1afb1661171fecef4f8fb097247ecbd82e830749..3eb0c8743afaf044fce5df471c11572822749fdc 100644 |
--- a/third_party/crashpad/crashpad/minidump/minidump_user_extension_stream_data_source.h |
+++ b/third_party/crashpad/crashpad/minidump/minidump_user_extension_stream_data_source.h |
@@ -27,25 +27,54 @@ namespace crashpad { |
//! \brief Describes a user extension data stream in a minidump. |
class MinidumpUserExtensionStreamDataSource { |
public: |
+ //! \brief An interface implemented by readers of |
+ //! MinidumpUserExtensionStreamDataSource. |
+ class Delegate { |
+ public: |
+ //! \brief Called by MinidumpUserExtensionStreamDataSource::Read() to |
+ //! provide data requested by a call to that method. |
+ //! |
+ //! \param[in] data A pointer to the data that was read. The callee does not |
+ //! take ownership of this data. This data is only valid for the |
+ //! duration of the call to this method. This parameter may be `nullptr` |
+ //! if \a size is `0`. |
+ //! \param[in] size The size of the data that was read. |
+ //! |
+ //! \return `true` on success, `false` on failure. |
+ //! MinidumpUserExtensionStreamDataSource::ReadStreamData() will use |
+ //! this as its own return value. |
+ virtual bool ExtensionStreamDataSourceRead(const void* data, |
+ size_t size) = 0; |
+ |
+ protected: |
+ ~Delegate() {} |
+ }; |
+ |
//! \brief Constructs a MinidumpUserExtensionStreamDataSource. |
//! |
//! \param[in] stream_type The type of the user extension stream. |
- //! \param[in] buffer Points to the data for this stream. \a buffer is not |
- //! owned, and must outlive the use of this object. |
- //! \param[in] buffer_size The length of data in \a buffer. |
- MinidumpUserExtensionStreamDataSource(uint32_t stream_type, |
- const void* buffer, |
- size_t buffer_size); |
- ~MinidumpUserExtensionStreamDataSource(); |
+ explicit MinidumpUserExtensionStreamDataSource(uint32_t stream_type); |
+ virtual ~MinidumpUserExtensionStreamDataSource(); |
MinidumpStreamType stream_type() const { return stream_type_; } |
- const void* buffer() const { return buffer_; } |
- size_t buffer_size() const { return buffer_size_; } |
+ |
+ //! \brief The size of this data stream. |
+ virtual size_t StreamDataSize() = 0; |
+ |
+ //! \brief Calls Delegate::UserStreamDataSourceRead(), providing it with |
+ //! the stream data. |
+ //! |
+ //! Implementations do not necessarily compute the stream data prior to |
+ //! this method being called. The stream data may be computed or loaded |
+ //! lazily and may be discarded after being passed to the delegate. |
+ //! |
+ //! \return `false` on failure, otherwise, the return value of |
+ //! Delegate::ExtensionStreamDataSourceRead(), which should be `true` on |
+ //! success and `false` on failure. |
+ virtual bool ReadStreamData(Delegate* delegate) = 0; |
private: |
MinidumpStreamType stream_type_; |
- const void* buffer_; // weak |
- size_t buffer_size_; |
DISALLOW_COPY_AND_ASSIGN(MinidumpUserExtensionStreamDataSource); |
}; |