Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(607)

Side by Side Diff: util/file/file_writer.h

Issue 1023943003: crashpad_database_util: Accept --new-report=- to read a new report from standard input (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@crashpad_database_util_new_report
Patch Set: Fix Windows Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « util/file/file_reader.cc ('k') | util/file/string_file.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 26 matching lines...) Expand all
37 const void* iov_base; 37 const void* iov_base;
38 38
39 //! \brief The size of the memory pointed to by #iov_base. 39 //! \brief The size of the memory pointed to by #iov_base.
40 size_t iov_len; 40 size_t iov_len;
41 }; 41 };
42 42
43 //! \brief An interface to write to files and other file-like objects with 43 //! \brief An interface to write to files and other file-like objects with
44 //! semantics matching the underlying platform (POSIX or Windows). 44 //! semantics matching the underlying platform (POSIX or Windows).
45 class FileWriterInterface : public virtual FileSeekerInterface { 45 class FileWriterInterface : public virtual FileSeekerInterface {
46 public: 46 public:
47 virtual ~FileWriterInterface() {}
48
47 //! \brief Wraps LoggingWriteFile(), or provides an implementation with 49 //! \brief Wraps LoggingWriteFile(), or provides an implementation with
48 //! identical semantics. 50 //! identical semantics.
49 //! 51 //!
50 //! \return `true` if the operation succeeded, `false` if it failed, with an 52 //! \return `true` if the operation succeeded, `false` if it failed, with an
51 //! error message logged. 53 //! error message logged.
52 virtual bool Write(const void* data, size_t size) = 0; 54 virtual bool Write(const void* data, size_t size) = 0;
53 55
54 //! \brief Wraps `writev()` on POSIX or provides an alternate implementation 56 //! \brief Wraps `writev()` on POSIX or provides an alternate implementation
55 //! with identical semantics. This method will write entire buffers, 57 //! with identical semantics. This method will write entire buffers,
56 //! continuing after a short write or after being interrupted. On 58 //! continuing after a short write or after being interrupted. On
57 //! non-POSIX this is a simple wrapper around Write(). 59 //! non-POSIX this is a simple wrapper around Write().
58 //! 60 //!
59 //! \return `true` if the operation succeeded, `false` if it failed, with an 61 //! \return `true` if the operation succeeded, `false` if it failed, with an
60 //! error message logged. 62 //! error message logged.
61 //! 63 //!
62 //! \note The contents of \a iovecs are undefined when this method returns. 64 //! \note The contents of \a iovecs are undefined when this method returns.
63 virtual bool WriteIoVec(std::vector<WritableIoVec>* iovecs) = 0; 65 virtual bool WriteIoVec(std::vector<WritableIoVec>* iovecs) = 0;
64
65 protected:
66 ~FileWriterInterface() {}
67 }; 66 };
68 67
69 //! \brief A file writer backed by a FileHandle. 68 //! \brief A file writer backed by a FileHandle.
70 //! 69 //!
71 //! FileWriter requires users to provide a FilePath to open, but this class 70 //! FileWriter requires users to provide a FilePath to open, but this class
72 //! accepts an already-open FileHandle instead. Like FileWriter, this class may 71 //! accepts an already-open FileHandle instead. Like FileWriter, this class may
73 //! write to a filesystem-based file, but unlike FileWriter, this class is not 72 //! write to a filesystem-based file, but unlike FileWriter, this class is not
74 //! responsible for creating or closing the file. Users of this class must 73 //! responsible for creating or closing the file. Users of this class must
75 //! ensure that the file handle is closed appropriately elsewhere. Objects of 74 //! ensure that the file handle is closed appropriately elsewhere. Objects of
76 //! this class may be used to write to file handles not associated with 75 //! this class may be used to write to file handles not associated with
77 //! filesystem-based files, although special attention should be paid to the 76 //! filesystem-based files, although special attention should be paid to the
78 //! Seek() method, which may not function on file handles that do not refer to 77 //! Seek() method, which may not function on file handles that do not refer to
79 //! disk-based files. 78 //! disk-based files.
80 //! 79 //!
81 //! This class is expected to be used when other code is responsible for 80 //! This class is expected to be used when other code is responsible for
82 //! creating files and already provides file handles. 81 //! creating files and already provides file handles.
83 class WeakFileHandleFileWriter : public FileWriterInterface { 82 class WeakFileHandleFileWriter : public FileWriterInterface {
84 public: 83 public:
85 explicit WeakFileHandleFileWriter(FileHandle file_handle); 84 explicit WeakFileHandleFileWriter(FileHandle file_handle);
86 ~WeakFileHandleFileWriter(); 85 ~WeakFileHandleFileWriter() override;
87 86
88 // FileWriterInterface: 87 // FileWriterInterface:
89 bool Write(const void* data, size_t size) override; 88 bool Write(const void* data, size_t size) override;
90 bool WriteIoVec(std::vector<WritableIoVec>* iovecs) override; 89 bool WriteIoVec(std::vector<WritableIoVec>* iovecs) override;
91 90
92 // FileSeekerInterface: 91 // FileSeekerInterface:
93 92
94 //! \copydoc FileWriterInterface::Seek() 93 //! \copydoc FileWriterInterface::Seek()
95 //! 94 //!
96 //! \note This method is only guaranteed to function on file handles referring 95 //! \note This method is only guaranteed to function on file handles referring
(...skipping 13 matching lines...) Expand all
110 friend class FileWriter; 109 friend class FileWriter;
111 110
112 DISALLOW_COPY_AND_ASSIGN(WeakFileHandleFileWriter); 111 DISALLOW_COPY_AND_ASSIGN(WeakFileHandleFileWriter);
113 }; 112 };
114 113
115 //! \brief A file writer implementation that wraps traditional system file 114 //! \brief A file writer implementation that wraps traditional system file
116 //! operations on files accessed through the filesystem. 115 //! operations on files accessed through the filesystem.
117 class FileWriter : public FileWriterInterface { 116 class FileWriter : public FileWriterInterface {
118 public: 117 public:
119 FileWriter(); 118 FileWriter();
120 ~FileWriter(); 119 ~FileWriter() override;
121 120
122 // FileWriterInterface: 121 // FileWriterInterface:
123 122
124 //! \brief Wraps LoggingOpenFileForWrite(). 123 //! \brief Wraps LoggingOpenFileForWrite().
125 //! 124 //!
126 //! \return `true` if the operation succeeded, `false` if it failed, with an 125 //! \return `true` if the operation succeeded, `false` if it failed, with an
127 //! error message logged. 126 //! error message logged.
128 //! 127 //!
129 //! \note After a successful call, this method cannot be called again until 128 //! \note After a successful call, this method cannot be called again until
130 //! after Close(). 129 //! after Close().
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 private: 163 private:
165 ScopedFileHandle file_; 164 ScopedFileHandle file_;
166 WeakFileHandleFileWriter weak_file_handle_file_writer_; 165 WeakFileHandleFileWriter weak_file_handle_file_writer_;
167 166
168 DISALLOW_COPY_AND_ASSIGN(FileWriter); 167 DISALLOW_COPY_AND_ASSIGN(FileWriter);
169 }; 168 };
170 169
171 } // namespace crashpad 170 } // namespace crashpad
172 171
173 #endif // CRASHPAD_UTIL_FILE_FILE_WRITER_H_ 172 #endif // CRASHPAD_UTIL_FILE_FILE_WRITER_H_
OLDNEW
« no previous file with comments | « util/file/file_reader.cc ('k') | util/file/string_file.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698