Index: runtime/bin/directory.h |
diff --git a/runtime/bin/directory.h b/runtime/bin/directory.h |
index 9455bbbc7c2f65fd4a04c1eb1c6939ea3f0132be..b038ad1b28feda0b5a6a91d5abcf9ed5dc0f3993 100644 |
--- a/runtime/bin/directory.h |
+++ b/runtime/bin/directory.h |
@@ -12,6 +12,15 @@ |
class DirectoryListing { |
public: |
+ virtual ~DirectoryListing() {} |
+ virtual bool HandleDirectory(char* dir_name) = 0; |
+ virtual bool HandleFile(char* file_name) = 0; |
+ virtual bool HandleError(const char* dir_name) = 0; |
+}; |
+ |
+ |
+class AsyncDirectoryListing : public DirectoryListing { |
+ public: |
enum Response { |
kListDirectory = 0, |
kListFile = 1, |
@@ -19,17 +28,43 @@ class DirectoryListing { |
kListDone = 3 |
}; |
- explicit DirectoryListing(Dart_Port response_port) |
+ explicit AsyncDirectoryListing(Dart_Port response_port) |
: response_port_(response_port) {} |
- bool HandleDirectory(char* dir_name); |
- bool HandleFile(char* file_name); |
- bool HandleError(const char* dir_name); |
+ virtual ~AsyncDirectoryListing() {} |
+ virtual bool HandleDirectory(char* dir_name); |
+ virtual bool HandleFile(char* file_name); |
+ virtual bool HandleError(const char* dir_name); |
private: |
CObjectArray* NewResponse(Response response, char* arg); |
Dart_Port response_port_; |
- DISALLOW_IMPLICIT_CONSTRUCTORS(DirectoryListing); |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(AsyncDirectoryListing); |
+}; |
+ |
+ |
+class SyncDirectoryListing: public DirectoryListing { |
+ public: |
+ explicit SyncDirectoryListing(Dart_Handle results) |
+ : results_(results) { |
+ add_string_ = DartUtils::NewString("add"); |
+ directory_class_ = |
+ DartUtils::GetDartClass(DartUtils::kIOLibURL, "Directory"); |
+ file_class_ = |
+ DartUtils::GetDartClass(DartUtils::kIOLibURL, "File"); |
+ } |
+ virtual ~SyncDirectoryListing() {} |
+ virtual bool HandleDirectory(char* dir_name); |
+ virtual bool HandleFile(char* file_name); |
+ virtual bool HandleError(const char* dir_name); |
+ |
+ private: |
+ Dart_Handle results_; |
+ Dart_Handle add_string_; |
+ Dart_Handle directory_class_; |
+ Dart_Handle file_class_; |
+ |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(SyncDirectoryListing); |
}; |