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

Unified Diff: runtime/bin/file.dart

Issue 10392023: Change dart:io to use Future for one-shot operations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Adding stable test binaries Created 8 years, 7 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 | « runtime/bin/directory_impl.dart ('k') | runtime/bin/file_impl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/file.dart
diff --git a/runtime/bin/file.dart b/runtime/bin/file.dart
index 963660b7a4ff51b87442cda0594775595fea3a55..81667819e49b41d2c9f8e275e41acaafbd02e5d1 100644
--- a/runtime/bin/file.dart
+++ b/runtime/bin/file.dart
@@ -29,11 +29,10 @@ interface File default _File {
File(String name);
/**
- * Check if the file exists. The callback is called with the result
- * when the operation completes. The [onError] function registered
- * on the file object is called if an error occurs.
+ * Check if the file exists. Does not block and returns a
+ * [:Future<bool>:].
*/
- void exists(void callback(bool exists));
+ Future<bool> exists();
/**
* Synchronously check if the file exists.
@@ -41,13 +40,14 @@ interface File default _File {
bool existsSync();
/**
- * Create the file. The callback is called when the file has been
- * created. The [onError] function registered on the file object is
- * called if the file cannot be created. Existing files are left
- * untouched by create. Calling create on an existing file might
- * fail if there are restrictive permissions on the file.
+ * Create the file. Returns a [:Future<File>:] that completes with
+ * the file when it has been created.
+ *
+ * Existing files are left untouched by create. Calling create on an
+ * existing file might fail if there are restrictive permissions on
+ * the file.
*/
- void create(void callback());
+ Future<File> create();
/**
* Synchronously create the file. Existing files are left untouched
@@ -57,11 +57,10 @@ interface File default _File {
void createSync();
/**
- * Delete the file. The callback is called when the file has been
- * successfully deleted. The [onError] function registered on the
- * file object is called if the file cannot be deleted.
+ * Delete the file. Returns a [:Future<File>:] that completes with
+ * the file when it has been deleted.
*/
- void delete(void callback());
+ Future<File> delete();
/**
* Synchronously delete the file.
@@ -70,11 +69,10 @@ interface File default _File {
/**
* Get a Directory object for the directory containing this
- * file. When the operation completes the callback is called with
- * the result. If the file does not exist the [onError] function
- * registered on the file object is called.
+ * file. Returns a [:Future<Directory>:] that completes with the
+ * directory.
*/
- void directory(void callback(Directory dir));
+ Future<Directory> directory();
/**
* Synchronously get a Directory object for the directory containing
@@ -83,10 +81,10 @@ interface File default _File {
Directory directorySync();
/**
- * Get the length of the file. When the operation completes the
- * callback is called with the length.
+ * Get the length of the file. Returns a [:Future<int>:] that
+ * completes with the length in bytes.
*/
- void length(void callback(int length));
+ Future<int> length();
/**
* Synchronously get the length of the file.
@@ -94,10 +92,10 @@ interface File default _File {
int lengthSync();
/**
- * Open the file for random access operations. When the file is
- * opened the callback is called with the resulting
- * RandomAccessFile. RandomAccessFiles must be closed using the
- * [close] method. If the file cannot be opened [onError] is called.
+ * Open the file for random access operations. Returns a
+ * [:Future<RandomAccessFile>:] that completes with the opened
+ * random access file. RandomAccessFiles must be closed using the
+ * [close] method.
*
* Files can be opened in three modes:
*
@@ -110,8 +108,10 @@ interface File default _File {
*
* FileMode.APPEND: same as FileMode.WRITE except that the file is
* not truncated.
+ *
+ * The default value for [mode] is [:FileMode.READ:].
*/
- void open(FileMode mode, void callback(RandomAccessFile opened));
+ Future<RandomAccessFile> open([FileMode mode]);
/**
* Synchronously open the file for random access operations. The
@@ -126,12 +126,10 @@ interface File default _File {
RandomAccessFile openSync([FileMode mode]);
/**
- * Get the canonical full path corresponding to the file name. The
- * callback is called with the result when the
- * fullPath operation completes. If the operation fails the
- * [onError] function registered on the file object is called.
+ * Get the canonical full path corresponding to the file name.
+ * Returns a [:Future<String>:] that completes with the path.
*/
- void fullPath(void callback(String path));
+ Future<String> fullPath();
/**
* Synchronously get the canonical full path corresponding to the file name.
@@ -163,12 +161,11 @@ interface File default _File {
OutputStream openOutputStream([FileMode mode]);
/**
- * Read the entire file contents as a list of bytes. When the
- * operation completes the callback is called. The [onError]
- * function registered on the file object is called if the operation
- * fails.
+ * Read the entire file contents as a list of bytes. Returns a
+ * [:Future<List<int>>:] that completes with the list of bytes that
+ * is the contents of the file.
*/
- void readAsBytes(void callback(List<int> bytes));
+ Future<List<int>> readAsBytes();
/**
* Synchronously read the entire file contents as a list of bytes.
@@ -177,33 +174,31 @@ interface File default _File {
/**
* Read the entire file contents as text using the given
- * [encoding]. The default encoding is UTF-8 - [:Encoding.UTF_8:].
+ * [encoding]. The default encoding is [:Encoding.UTF_8:].
*
- * When the operation completes the callback is called. The
- * [onError] function registered on the file object is called if the
- * operation fails.
+ * Returns a [:Future<String>:] that completes with the string once
+ * the file contents has been read.
*/
- void readAsText(Encoding encoding, void callback(String text));
+ Future<String> readAsText([Encoding encoding]);
/**
* Synchronously read the entire file contents as text using the
- * given [encoding]. The default encoding is UTF-8 - [:Encoding.UTF_8:].
+ * given [encoding]. The default encoding is [:Encoding.UTF_8:].
*/
String readAsTextSync([Encoding encoding]);
/**
* Read the entire file contents as lines of text using the give
- * [encoding]. The default encoding is UTF-8 - [:Encoding.UTF_8:].
+ * [encoding]. The default encoding is [:Encoding.UTF_8:].
*
- * When the operation completes the callback is called. The
- * [onError] function registered on the file object is called if the
- * operation fails.
+ * Returns a [:Future<List<String>>:] that completes with the lines
+ * once the file contents has been read.
*/
- void readAsLines(Encoding encoding, void callback(List<String> lines));
+ Future<List<String>> readAsLines([Encoding encoding]);
/**
* Synchronously read the entire file contents as lines of text
- * using the given [encoding] The default encoding is UTF-8 -
+ * using the given [encoding] The default encoding is
* [:Encoding.UTF_8:].
*/
List<String> readAsLinesSync([Encoding encoding]);
@@ -212,12 +207,6 @@ interface File default _File {
* Get the name of the file.
*/
String get name();
-
- /**
- * Sets the handler that gets called when errors occur during
- * operations on this file.
- */
- void set onError(void handler(e));
}
@@ -228,9 +217,10 @@ interface File default _File {
*/
interface RandomAccessFile {
/**
- * Close the file. When the file is closed the callback is called.
+ * Close the file. Returns a [:Future<RandomAccessFile>:] that
+ * completes with this RandomAccessFile when it has been closed.
*/
- void close(void callback());
+ Future<RandomAccessFile> close();
/**
* Synchronously close the file.
@@ -238,11 +228,10 @@ interface RandomAccessFile {
void closeSync();
/**
- * Read a byte from the file. When the byte has been read the
- * callback is called with the value. If end of file has been
- * reached the value will be -1.
+ * Read a byte from the file. Returns a [:Future<int>:] that
+ * completes with the byte or -1 if end of file has been reached.
*/
- void readByte(void callback(int byte));
+ Future<int> readByte();
/**
* Synchronously read a single byte from the file. If end of file
@@ -251,11 +240,10 @@ interface RandomAccessFile {
int readByteSync();
/**
- * Read a List<int> from the file. When the list has been read the
- * callback is called with an integer indicating how much was read.
+ * Read a List<int> from the file. Returns a [:Future<int>:] that
+ * completes with an indication of how much was read.
*/
- void readList(List<int> buffer, int offset, int bytes,
- void callback(int read));
+ Future<int> readList(List<int> buffer, int offset, int bytes);
/**
* Synchronously read a List<int> from the file. Returns the number
@@ -264,11 +252,11 @@ interface RandomAccessFile {
int readListSync(List<int> buffer, int offset, int bytes);
/**
- * Write a single byte to the file. If the byte cannot be written
- * [onError] is called. When all pending write operations have
- * finished [onNoPendingWrites] is called.
+ * Write a single byte to the file. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the write completes.
*/
- void writeByte(int value);
+ Future<RandomAccessFile> writeByte(int value);
/**
* Synchronously write a single byte to the file. Returns the
@@ -277,11 +265,11 @@ interface RandomAccessFile {
int writeByteSync(int value);
/**
- * Write a List<int> to the file. If the list cannot be written the
- * [onError] is called. When all pending write operations have
- * finished [onNoPendingWrites] is called.
+ * Write a List<int> to the file. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the write completes.
*/
- void writeList(List<int> buffer, int offset, int bytes);
+ Future<RandomAccessFile> writeList(List<int> buffer, int offset, int bytes);
/**
* Synchronously write a List<int> to the file. Returns the number
@@ -290,14 +278,12 @@ interface RandomAccessFile {
int writeListSync(List<int> buffer, int offset, int bytes);
/**
- * Write a string to the file using the given [encoding]. If the
- * string cannot be written [onError] is called. The default
- * encoding is UTF-8 - [:Encoding.UTF_8:].
- *
- * When all pending write operations have finished
- * [onNoPendingWrites] is called.
+ * Write a string to the file using the given [encoding]. The
+ * default encoding is UTF-8 - [:Encoding.UTF_8:]. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the write completes.
*/
- void writeString(String string, [Encoding encoding]);
+ Future<RandomAccessFile> writeString(String string, [Encoding encoding]);
/**
* Synchronously write a single string to the file using the given
@@ -307,10 +293,10 @@ interface RandomAccessFile {
int writeStringSync(String string, [Encoding encoding]);
/**
- * Get the current byte position in the file. When the operation
- * completes the callback is called with the position.
+ * Get the current byte position in the file. Returns a
+ * [:Future<int>:] that completes with the position.
*/
- void position(void callback(int position));
+ Future<int> position();
/**
* Synchronously get the current byte position in the file.
@@ -318,10 +304,11 @@ interface RandomAccessFile {
int positionSync();
/**
- * Set the byte position in the file. When the operation completes
- * the callback is called.
+ * Set the byte position in the file. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the position has been set.
*/
- void setPosition(int position, void callback());
+ Future<RandomAccessFile> setPosition(int position);
/**
* Synchronously set the byte position in the file.
@@ -329,10 +316,11 @@ interface RandomAccessFile {
void setPositionSync(int position);
/**
- * Truncate (or extend) the file to [length] bytes. When the
- * operation completes successfully the callback is called.
+ * Truncate (or extend) the file to [length] bytes. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the truncation has been performed.
*/
- void truncate(int length, void callback());
+ Future<RandomAccessFile> truncate(int length);
/**
* Synchronously truncate (or extend) the file to [length] bytes.
@@ -340,10 +328,10 @@ interface RandomAccessFile {
void truncateSync(int length);
/**
- * Get the length of the file. When the operation completes the
- * callback is called with the length.
+ * Get the length of the file. Returns a [:Future<int>:] that
+ * completes with the length in bytes.
*/
- void length(void callback(int length));
+ Future<int> length();
/**
* Synchronously get the length of the file.
@@ -351,10 +339,11 @@ interface RandomAccessFile {
int lengthSync();
/**
- * Flush the contents of the file to disk. The callback is
- * called when the flush operation completes.
+ * Flush the contents of the file to disk. Returns a
+ * [:Future<RandomAccessFile>:] that completes with this
+ * RandomAccessFile when the flush operation completes.
*/
- void flush(void callback());
+ Future<RandomAccessFile> flush();
/**
* Synchronously flush the contents of the file to disk.
@@ -365,18 +354,6 @@ interface RandomAccessFile {
* Get the name of the file.
*/
String get name();
-
- /**
- * Sets the handler that gets called when there are no more write
- * operations pending for this file.
- */
- void set onNoPendingWrites(void handler());
-
- /**
- * Sets the handler that gets called when errors occur when
- * operating on this file.
- */
- void set onError(void handler(e));
}
« no previous file with comments | « runtime/bin/directory_impl.dart ('k') | runtime/bin/file_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698