drive_backend_util.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_ 7 8#include <string> 9 10#include "base/bind.h" 11#include "base/callback.h" 12#include "base/memory/scoped_ptr.h" 13#include "base/memory/scoped_vector.h" 14#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 15#include "chrome/browser/sync_file_system/sync_status_code.h" 16#include "google_apis/drive/gdata_errorcode.h" 17#include "webkit/common/blob/scoped_file.h" 18 19namespace google_apis { 20class ChangeResource; 21class FileResource; 22class ResourceEntry; 23} 24 25namespace sync_file_system { 26namespace drive_backend { 27 28class LevelDBWrapper; 29 30void PutVersionToDB(int64 version, LevelDBWrapper* db); 31 32void PutServiceMetadataToDB(const ServiceMetadata& service_metadata, 33 LevelDBWrapper* db); 34void PutFileMetadataToDB(const FileMetadata& file, LevelDBWrapper* db); 35void PutFileTrackerToDB(const FileTracker& tracker, LevelDBWrapper* db); 36 37void PutFileMetadataDeletionToDB(const std::string& file_id, 38 LevelDBWrapper* db); 39void PutFileTrackerDeletionToDB(int64 tracker_id, LevelDBWrapper* db); 40 41bool HasFileAsParent(const FileDetails& details, const std::string& file_id); 42 43bool IsAppRoot(const FileTracker& tracker); 44 45std::string GetTrackerTitle(const FileTracker& tracker); 46 47SyncStatusCode GDataErrorCodeToSyncStatusCode( 48 google_apis::GDataErrorCode error); 49 50// Returns true if |str| starts with |prefix|, and removes |prefix| from |str|. 51// If |out| is not NULL, the result is stored in it. 52bool RemovePrefix(const std::string& str, const std::string& prefix, 53 std::string* out); 54 55scoped_ptr<ServiceMetadata> InitializeServiceMetadata(LevelDBWrapper* db); 56 57template <typename Src, typename Dest> 58void AppendContents(const Src& src, Dest* dest) { 59 dest->insert(dest->end(), src.begin(), src.end()); 60} 61 62template <typename Container> 63const typename Container::mapped_type& LookUpMap( 64 const Container& container, 65 const typename Container::key_type& key, 66 const typename Container::mapped_type& default_value) { 67 typename Container::const_iterator found = container.find(key); 68 if (found == container.end()) 69 return default_value; 70 return found->second; 71} 72 73template <typename R, typename S, typename T> 74R ComposeFunction(const base::Callback<T()>& g, 75 const base::Callback<R(S)>& f) { 76 return f.Run(g.Run()); 77} 78 79template <typename R, typename S, typename T> 80base::Callback<R()> CreateComposedFunction( 81 const base::Callback<T()>& g, 82 const base::Callback<R(S)>& f) { 83 return base::Bind(&ComposeFunction<R, S, T>, g, f); 84} 85 86} // namespace drive_backend 87} // namespace sync_file_system 88 89#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_ 90