Index: net/ftp/ftp_ctrl_response_buffer.cc |
diff --git a/net/ftp/ftp_ctrl_response_buffer.cc b/net/ftp/ftp_ctrl_response_buffer.cc |
deleted file mode 100644 |
index f7b14678095a7ecfa9bea48b832b79dd98cd498f..0000000000000000000000000000000000000000 |
--- a/net/ftp/ftp_ctrl_response_buffer.cc |
+++ /dev/null |
@@ -1,152 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/ftp/ftp_ctrl_response_buffer.h" |
- |
-#include "base/bind.h" |
-#include "base/logging.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_piece.h" |
-#include "base/values.h" |
-#include "net/base/net_errors.h" |
- |
-namespace net { |
- |
-// static |
-const int FtpCtrlResponse::kInvalidStatusCode = -1; |
- |
-FtpCtrlResponse::FtpCtrlResponse() : status_code(kInvalidStatusCode) {} |
- |
-FtpCtrlResponse::~FtpCtrlResponse() {} |
- |
-FtpCtrlResponseBuffer::FtpCtrlResponseBuffer(const BoundNetLog& net_log) |
- : multiline_(false), |
- net_log_(net_log) { |
-} |
- |
-FtpCtrlResponseBuffer::~FtpCtrlResponseBuffer() {} |
- |
-int FtpCtrlResponseBuffer::ConsumeData(const char* data, int data_length) { |
- buffer_.append(data, data_length); |
- ExtractFullLinesFromBuffer(); |
- |
- while (!lines_.empty()) { |
- ParsedLine line = lines_.front(); |
- lines_.pop(); |
- |
- if (multiline_) { |
- if (!line.is_complete || line.status_code != response_buf_.status_code) { |
- line_buf_.append(line.raw_text); |
- continue; |
- } |
- |
- response_buf_.lines.push_back(line_buf_); |
- |
- line_buf_ = line.status_text; |
- DCHECK_EQ(line.status_code, response_buf_.status_code); |
- |
- if (!line.is_multiline) { |
- response_buf_.lines.push_back(line_buf_); |
- responses_.push(response_buf_); |
- |
- // Prepare to handle following lines. |
- response_buf_ = FtpCtrlResponse(); |
- line_buf_.clear(); |
- multiline_ = false; |
- } |
- } else { |
- if (!line.is_complete) |
- return ERR_INVALID_RESPONSE; |
- |
- response_buf_.status_code = line.status_code; |
- if (line.is_multiline) { |
- line_buf_ = line.status_text; |
- multiline_ = true; |
- } else { |
- response_buf_.lines.push_back(line.status_text); |
- responses_.push(response_buf_); |
- |
- // Prepare to handle following lines. |
- response_buf_ = FtpCtrlResponse(); |
- line_buf_.clear(); |
- } |
- } |
- } |
- |
- return OK; |
-} |
- |
-namespace { |
- |
-base::Value* NetLogFtpCtrlResponseCallback(const FtpCtrlResponse* response, |
- NetLog::LogLevel log_level) { |
- base::ListValue* lines = new base::ListValue(); |
- lines->AppendStrings(response->lines); |
- |
- base::DictionaryValue* dict = new base::DictionaryValue(); |
- dict->SetInteger("status_code", response->status_code); |
- dict->Set("lines", lines); |
- return dict; |
-} |
- |
-} // namespace |
- |
-FtpCtrlResponse FtpCtrlResponseBuffer::PopResponse() { |
- FtpCtrlResponse result = responses_.front(); |
- responses_.pop(); |
- |
- net_log_.AddEvent(NetLog::TYPE_FTP_CONTROL_RESPONSE, |
- base::Bind(&NetLogFtpCtrlResponseCallback, &result)); |
- |
- return result; |
-} |
- |
-FtpCtrlResponseBuffer::ParsedLine::ParsedLine() |
- : has_status_code(false), |
- is_multiline(false), |
- is_complete(false), |
- status_code(FtpCtrlResponse::kInvalidStatusCode) { |
-} |
- |
-// static |
-FtpCtrlResponseBuffer::ParsedLine FtpCtrlResponseBuffer::ParseLine( |
- const std::string& line) { |
- ParsedLine result; |
- |
- if (line.length() >= 3) { |
- if (base::StringToInt(base::StringPiece(line.begin(), line.begin() + 3), |
- &result.status_code)) |
- result.has_status_code = (100 <= result.status_code && |
- result.status_code <= 599); |
- if (result.has_status_code && line.length() >= 4 && line[3] == ' ') { |
- result.is_complete = true; |
- } else if (result.has_status_code && line.length() >= 4 && line[3] == '-') { |
- result.is_complete = true; |
- result.is_multiline = true; |
- } |
- } |
- |
- if (result.is_complete) { |
- result.status_text = line.substr(4); |
- } else { |
- result.status_text = line; |
- } |
- |
- result.raw_text = line; |
- |
- return result; |
-} |
- |
-void FtpCtrlResponseBuffer::ExtractFullLinesFromBuffer() { |
- int cut_pos = 0; |
- for (size_t i = 0; i < buffer_.length(); i++) { |
- if (i >= 1 && buffer_[i - 1] == '\r' && buffer_[i] == '\n') { |
- lines_.push(ParseLine(buffer_.substr(cut_pos, i - cut_pos - 1))); |
- cut_pos = i + 1; |
- } |
- } |
- buffer_.erase(0, cut_pos); |
-} |
- |
-} // namespace net |