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

Unified Diff: net/tools/flip_server/mem_cache.cc

Issue 2169503002: Remove flip_server. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/flip_server/mem_cache.h ('k') | net/tools/flip_server/mem_cache_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/flip_server/mem_cache.cc
diff --git a/net/tools/flip_server/mem_cache.cc b/net/tools/flip_server/mem_cache.cc
deleted file mode 100644
index dae5d4026bc8f8a9bd261fec4c37877b0f2f7e5e..0000000000000000000000000000000000000000
--- a/net/tools/flip_server/mem_cache.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright (c) 2009 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/tools/flip_server/mem_cache.h"
-
-#include <dirent.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <deque>
-#include <map>
-#include <string>
-
-#include "base/memory/ptr_util.h"
-#include "base/strings/string_util.h"
-#include "net/tools/balsa/balsa_frame.h"
-#include "net/tools/balsa/balsa_headers.h"
-#include "net/tools/flip_server/url_to_filename_encoder.h"
-#include "net/tools/flip_server/url_utilities.h"
-
-namespace {
-// The directory where cache locates);
-const char FLAGS_cache_base_dir[] = ".";
-} // namespace
-
-namespace net {
-
-void StoreBodyAndHeadersVisitor::ProcessBodyData(const char* input,
- size_t size) {
- body.append(input, size);
-}
-
-void StoreBodyAndHeadersVisitor::HandleHeaderError(BalsaFrame* framer) {
- HandleError();
-}
-
-void StoreBodyAndHeadersVisitor::HandleHeaderWarning(BalsaFrame* framer) {
- HandleError();
-}
-
-void StoreBodyAndHeadersVisitor::HandleChunkingError(BalsaFrame* framer) {
- HandleError();
-}
-
-void StoreBodyAndHeadersVisitor::HandleBodyError(BalsaFrame* framer) {
- HandleError();
-}
-
-FileData::FileData(const BalsaHeaders* headers,
- const std::string& filename,
- const std::string& body)
- : filename_(filename), body_(body) {
- if (headers) {
- headers_.reset(new BalsaHeaders);
- headers_->CopyFrom(*headers);
- }
-}
-
-FileData::FileData() {}
-
-FileData::~FileData() {}
-
-MemoryCache::MemoryCache() : cwd_(FLAGS_cache_base_dir) {}
-MemoryCache::~MemoryCache() {}
-
-void MemoryCache::AddFiles() {
- std::deque<std::string> paths;
- paths.push_back(cwd_ + "/GET_");
- DIR* current_dir = NULL;
- while (!paths.empty()) {
- while (current_dir == NULL && !paths.empty()) {
- std::string current_dir_name = paths.front();
- VLOG(1) << "Attempting to open dir: \"" << current_dir_name << "\"";
- current_dir = opendir(current_dir_name.c_str());
- paths.pop_front();
-
- if (current_dir == NULL) {
- perror("Unable to open directory. ");
- current_dir_name.clear();
- continue;
- }
-
- if (current_dir) {
- VLOG(1) << "Succeeded opening";
- for (struct dirent* dir_data = readdir(current_dir); dir_data != NULL;
- dir_data = readdir(current_dir)) {
- std::string current_entry_name =
- current_dir_name + "/" + dir_data->d_name;
- if (dir_data->d_type == DT_REG) {
- VLOG(1) << "Found file: " << current_entry_name;
- ReadAndStoreFileContents(current_entry_name.c_str());
- } else if (dir_data->d_type == DT_DIR) {
- VLOG(1) << "Found subdir: " << current_entry_name;
- if (std::string(dir_data->d_name) != "." &&
- std::string(dir_data->d_name) != "..") {
- VLOG(1) << "Adding to search path: " << current_entry_name;
- paths.push_front(current_entry_name);
- }
- }
- }
- VLOG(1) << "Oops, no data left. Closing dir.";
- closedir(current_dir);
- current_dir = NULL;
- }
- }
- }
-}
-
-void MemoryCache::ReadToString(const char* filename, std::string* output) {
- output->clear();
- int fd = open(filename, 0, "r");
- if (fd == -1)
- return;
- char buffer[4096];
- ssize_t read_status = read(fd, buffer, sizeof(buffer));
- while (read_status > 0) {
- output->append(buffer, static_cast<size_t>(read_status));
- do {
- read_status = read(fd, buffer, sizeof(buffer));
- } while (read_status <= 0 && errno == EINTR);
- }
- close(fd);
-}
-
-void MemoryCache::ReadAndStoreFileContents(const char* filename) {
- StoreBodyAndHeadersVisitor visitor;
- BalsaFrame framer;
- framer.set_balsa_visitor(&visitor);
- framer.set_balsa_headers(&(visitor.headers));
- std::string filename_contents;
- ReadToString(filename, &filename_contents);
-
- // Ugly hack to make everything look like 1.1.
- if (filename_contents.find("HTTP/1.0") == 0)
- filename_contents[7] = '1';
-
- size_t pos = 0;
- size_t old_pos = 0;
- while (true) {
- old_pos = pos;
- pos += framer.ProcessInput(filename_contents.data() + pos,
- filename_contents.size() - pos);
- if (framer.Error() || pos == old_pos) {
- LOG(ERROR) << "Unable to make forward progress, or error"
- " framing file: " << filename;
- if (framer.Error()) {
- LOG(INFO) << "********************************************ERROR!";
- return;
- }
- return;
- }
- if (framer.MessageFullyRead()) {
- // If no Content-Length or Transfer-Encoding was captured in the
- // file, then the rest of the data is the body. Many of the captures
- // from within Chrome don't have content-lengths.
- if (!visitor.body.length())
- visitor.body = filename_contents.substr(pos);
- break;
- }
- }
- visitor.headers.RemoveAllOfHeader("content-length");
- visitor.headers.RemoveAllOfHeader("transfer-encoding");
- visitor.headers.RemoveAllOfHeader("connection");
- visitor.headers.AppendHeader("transfer-encoding", "chunked");
- visitor.headers.AppendHeader("connection", "keep-alive");
-
-// Experiment with changing headers for forcing use of cached
-// versions of content.
-// TODO(mbelshe) REMOVE ME
-#if 0
- // TODO(mbelshe) append current date.
- visitor.headers.RemoveAllOfHeader("date");
- if (visitor.headers.HasHeader("expires")) {
- visitor.headers.RemoveAllOfHeader("expires");
- visitor.headers.AppendHeader("expires",
- "Fri, 30 Aug, 2019 12:00:00 GMT");
- }
-#endif
- DCHECK_GE(std::string(filename).size(), cwd_.size() + 1);
- DCHECK_EQ(std::string(filename).substr(0, cwd_.size()), cwd_);
- DCHECK_EQ(filename[cwd_.size()], '/');
- std::string filename_stripped = std::string(filename).substr(cwd_.size() + 1);
- LOG(INFO) << "Adding file (" << visitor.body.length()
- << " bytes): " << filename_stripped;
- size_t slash_pos = filename_stripped.find('/');
- if (slash_pos == std::string::npos) {
- slash_pos = filename_stripped.size();
- }
- InsertFile(
- &visitor.headers, filename_stripped.substr(0, slash_pos), visitor.body);
-}
-
-FileData* MemoryCache::GetFileData(const std::string& filename) {
- Files::iterator fi = files_.end();
- if (base::EndsWith(filename, ".html", base::CompareCase::SENSITIVE)) {
- fi = files_.find(filename.substr(0, filename.size() - 5) + ".http");
- }
- if (fi == files_.end())
- fi = files_.find(filename);
-
- if (fi == files_.end()) {
- return NULL;
- }
- return fi->second.get();
-}
-
-bool MemoryCache::AssignFileData(const std::string& filename,
- MemCacheIter* mci) {
- mci->file_data = GetFileData(filename);
- if (mci->file_data == NULL) {
- LOG(ERROR) << "Could not find file data for " << filename;
- return false;
- }
- return true;
-}
-
-void MemoryCache::InsertFile(const BalsaHeaders* headers,
- const std::string& filename,
- const std::string& body) {
- InsertFile(new FileData(headers, filename, body));
-}
-
-void MemoryCache::InsertFile(FileData* file_data) {
- Files::iterator it = files_.find(file_data->filename());
- if (it != files_.end()) {
- it->second.reset(file_data);
- } else {
- files_.insert(
- std::make_pair(file_data->filename(), base::WrapUnique(file_data)));
- }
-}
-
-} // namespace net
« no previous file with comments | « net/tools/flip_server/mem_cache.h ('k') | net/tools/flip_server/mem_cache_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698