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

Side by Side Diff: util/net/http_body.cc

Issue 1416493006: Change file op |ssize_t|s to FileOperationResult (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: fixes Created 5 years, 1 month 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/net/http_body.h ('k') | util/net/http_body_test.cc » ('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 14 matching lines...) Expand all
25 25
26 namespace crashpad { 26 namespace crashpad {
27 27
28 StringHTTPBodyStream::StringHTTPBodyStream(const std::string& string) 28 StringHTTPBodyStream::StringHTTPBodyStream(const std::string& string)
29 : HTTPBodyStream(), string_(string), bytes_read_() { 29 : HTTPBodyStream(), string_(string), bytes_read_() {
30 } 30 }
31 31
32 StringHTTPBodyStream::~StringHTTPBodyStream() { 32 StringHTTPBodyStream::~StringHTTPBodyStream() {
33 } 33 }
34 34
35 ssize_t StringHTTPBodyStream::GetBytesBuffer(uint8_t* buffer, size_t max_len) { 35 FileOperationResult StringHTTPBodyStream::GetBytesBuffer(uint8_t* buffer,
36 size_t max_len) {
36 size_t num_bytes_remaining = string_.length() - bytes_read_; 37 size_t num_bytes_remaining = string_.length() - bytes_read_;
37 if (num_bytes_remaining == 0) { 38 if (num_bytes_remaining == 0) {
38 return num_bytes_remaining; 39 return num_bytes_remaining;
39 } 40 }
40 41
41 size_t num_bytes_returned = 42 size_t num_bytes_returned = std::min(
42 std::min(std::min(num_bytes_remaining, max_len), 43 std::min(num_bytes_remaining, max_len),
43 implicit_cast<size_t>(std::numeric_limits<ssize_t>::max())); 44 implicit_cast<size_t>(std::numeric_limits<FileOperationResult>::max()));
44 memcpy(buffer, &string_[bytes_read_], num_bytes_returned); 45 memcpy(buffer, &string_[bytes_read_], num_bytes_returned);
45 bytes_read_ += num_bytes_returned; 46 bytes_read_ += num_bytes_returned;
46 return num_bytes_returned; 47 return num_bytes_returned;
47 } 48 }
48 49
49 FileHTTPBodyStream::FileHTTPBodyStream(const base::FilePath& path) 50 FileHTTPBodyStream::FileHTTPBodyStream(const base::FilePath& path)
50 : HTTPBodyStream(), path_(path), file_(), file_state_(kUnopenedFile) { 51 : HTTPBodyStream(), path_(path), file_(), file_state_(kUnopenedFile) {
51 } 52 }
52 53
53 FileHTTPBodyStream::~FileHTTPBodyStream() { 54 FileHTTPBodyStream::~FileHTTPBodyStream() {
54 } 55 }
55 56
56 ssize_t FileHTTPBodyStream::GetBytesBuffer(uint8_t* buffer, size_t max_len) { 57 FileOperationResult FileHTTPBodyStream::GetBytesBuffer(uint8_t* buffer,
58 size_t max_len) {
57 switch (file_state_) { 59 switch (file_state_) {
58 case kUnopenedFile: 60 case kUnopenedFile:
59 file_.reset(LoggingOpenFileForRead(path_)); 61 file_.reset(LoggingOpenFileForRead(path_));
60 if (!file_.is_valid()) { 62 if (!file_.is_valid()) {
61 file_state_ = kFileOpenError; 63 file_state_ = kFileOpenError;
62 return -1; 64 return -1;
63 } 65 }
64 file_state_ = kReading; 66 file_state_ = kReading;
65 break; 67 break;
66 case kFileOpenError: 68 case kFileOpenError:
67 return -1; 69 return -1;
68 case kClosedAtEOF: 70 case kClosedAtEOF:
69 return 0; 71 return 0;
70 case kReading: 72 case kReading:
71 break; 73 break;
72 } 74 }
73 75
74 ssize_t rv = ReadFile(file_.get(), buffer, max_len); 76 FileOperationResult rv = ReadFile(file_.get(), buffer, max_len);
75 if (rv == 0) { 77 if (rv == 0) {
76 file_.reset(); 78 file_.reset();
77 file_state_ = kClosedAtEOF; 79 file_state_ = kClosedAtEOF;
78 } else if (rv < 0) { 80 } else if (rv < 0) {
79 PLOG(ERROR) << "read"; 81 PLOG(ERROR) << "read";
80 } 82 }
81 return rv; 83 return rv;
82 } 84 }
83 85
84 CompositeHTTPBodyStream::CompositeHTTPBodyStream( 86 CompositeHTTPBodyStream::CompositeHTTPBodyStream(
85 const CompositeHTTPBodyStream::PartsList& parts) 87 const CompositeHTTPBodyStream::PartsList& parts)
86 : HTTPBodyStream(), parts_(parts), current_part_(parts_.begin()) { 88 : HTTPBodyStream(), parts_(parts), current_part_(parts_.begin()) {
87 } 89 }
88 90
89 CompositeHTTPBodyStream::~CompositeHTTPBodyStream() { 91 CompositeHTTPBodyStream::~CompositeHTTPBodyStream() {
90 STLDeleteContainerPointers(parts_.begin(), parts_.end()); 92 STLDeleteContainerPointers(parts_.begin(), parts_.end());
91 } 93 }
92 94
93 ssize_t CompositeHTTPBodyStream::GetBytesBuffer(uint8_t* buffer, 95 FileOperationResult CompositeHTTPBodyStream::GetBytesBuffer(uint8_t* buffer,
94 size_t buffer_len) { 96 size_t buffer_len) {
95 ssize_t max_len = std::min( 97 FileOperationResult max_len = std::min(
96 buffer_len, implicit_cast<size_t>(std::numeric_limits<ssize_t>::max())); 98 buffer_len,
97 ssize_t bytes_copied = 0; 99 implicit_cast<size_t>(std::numeric_limits<FileOperationResult>::max()));
100 FileOperationResult bytes_copied = 0;
98 while (bytes_copied < max_len && current_part_ != parts_.end()) { 101 while (bytes_copied < max_len && current_part_ != parts_.end()) {
99 ssize_t this_read = (*current_part_)->GetBytesBuffer( 102 FileOperationResult this_read =
100 buffer + bytes_copied, max_len - bytes_copied); 103 (*current_part_)
104 ->GetBytesBuffer(buffer + bytes_copied, max_len - bytes_copied);
101 105
102 if (this_read == 0) { 106 if (this_read == 0) {
103 // If the current part has returned 0 indicating EOF, advance the current 107 // If the current part has returned 0 indicating EOF, advance the current
104 // part and try again. 108 // part and try again.
105 ++current_part_; 109 ++current_part_;
106 } else if (this_read < 0) { 110 } else if (this_read < 0) {
107 return this_read; 111 return this_read;
108 } 112 }
109 bytes_copied += this_read; 113 bytes_copied += this_read;
110 } 114 }
111 115
112 return bytes_copied; 116 return bytes_copied;
113 } 117 }
114 118
115 } // namespace crashpad 119 } // namespace crashpad
OLDNEW
« no previous file with comments | « util/net/http_body.h ('k') | util/net/http_body_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698