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

Unified Diff: pkg/analysis_services/lib/src/index/store/temporary_folder_file_manager.dart

Issue 426773002: Issue 20240. Use a FileManager that manages its own temporary directory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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
Index: pkg/analysis_services/lib/src/index/store/temporary_folder_file_manager.dart
diff --git a/pkg/analysis_services/lib/src/index/store/separate_file_manager.dart b/pkg/analysis_services/lib/src/index/store/temporary_folder_file_manager.dart
similarity index 62%
rename from pkg/analysis_services/lib/src/index/store/separate_file_manager.dart
rename to pkg/analysis_services/lib/src/index/store/temporary_folder_file_manager.dart
index 5a51cfa5e889a0303f3b4b462c5469be062c5e46..bf787e8f1037ae44681ad97b6d47284328a76114 100644
--- a/pkg/analysis_services/lib/src/index/store/separate_file_manager.dart
+++ b/pkg/analysis_services/lib/src/index/store/temporary_folder_file_manager.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library services.src.index.store.separate_file_mananer;
+library services.src.index.store.temporary_folder_file_mananer;
import 'dart:async';
import 'dart:io';
@@ -13,25 +13,26 @@ import 'package:path/path.dart' as pathos;
/**
* An implementation of [FileManager] that keeps each file in a separate file
- * system file.
+ * in a temporary folder.
*/
-class SeparateFileManager implements FileManager {
- final Directory _directory;
+class TemporaryFolderFileManager implements FileManager {
+ Directory _directory;
- SeparateFileManager(this._directory) {
- clear();
- }
+ Directory get test_directory => _directory;
@override
void clear() {
- List<FileSystemEntity> entries = _directory.listSync();
- for (FileSystemEntity entry in entries) {
- entry.deleteSync(recursive: true);
+ if (_directory != null) {
+ _directory.deleteSync(recursive: true);
+ _directory = null;
}
}
@override
void delete(String name) {
+ if (_directory == null) {
+ return;
+ }
File file = _getFile(name);
try {
file.deleteSync();
@@ -41,6 +42,9 @@ class SeparateFileManager implements FileManager {
@override
Future<List<int>> read(String name) {
+ if (_directory == null) {
+ return null;
Paul Berry 2014/07/28 21:26:03 To be consistent with the error semantics below, t
scheglov 2014/07/28 22:13:55 Done.
+ }
File file = _getFile(name);
return file.readAsBytes().catchError((e) {
return null;
@@ -49,9 +53,17 @@ class SeparateFileManager implements FileManager {
@override
Future write(String name, List<int> bytes) {
+ _ensureDirectory();
return _getFile(name).writeAsBytes(bytes);
}
+ void _ensureDirectory() {
+ if (_directory == null) {
+ Directory temp = Directory.systemTemp;
+ _directory = temp.createTempSync('AnalysisServices_Index');
+ }
+ }
+
File _getFile(String name) {
String path = pathos.join(_directory.path, name);
return new File(path);

Powered by Google App Engine
This is Rietveld 408576698