AsyncFile.hx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package asys.io;
  2. import haxe.NoData;
  3. import haxe.async.*;
  4. import haxe.io.Bytes;
  5. import haxe.io.Encoding;
  6. class AsyncFile {
  7. extern public function chmod(mode:FilePermissions, callback:Callback<NoData>):Void;
  8. extern public function chown(uid:Int, gid:Int, callback:Callback<NoData>):Void;
  9. extern public function close(callback:Callback<NoData>):Void;
  10. extern public function datasync(callback:Callback<NoData>):Void;
  11. extern public function readBuffer(buffer:Bytes, offset:Int, length:Int, position:Int, callback:Callback<{bytesRead:Int, buffer:Bytes}>):Void;
  12. public function readFile(callback:Callback<Bytes>):Void {
  13. stat((err, stat) -> {
  14. if (err != null)
  15. return callback(err, null);
  16. var buffer = Bytes.alloc(stat.size);
  17. readBuffer(buffer, 0, buffer.length, 0, (err, res) -> {
  18. if (err != null)
  19. return callback(err, null);
  20. callback(null, buffer);
  21. });
  22. });
  23. }
  24. extern public function stat(callback:Callback<eval.uv.Stat>):Void;
  25. extern public function sync(callback:Callback<NoData>):Void;
  26. extern public function truncate(?len:Int = 0, callback:Callback<NoData>):Void;
  27. extern function utimes_native(atime:Float, mtime:Float, callback:Callback<NoData>):Void;
  28. public function utimes(atime:Date, mtime:Date, callback:Callback<NoData>):Void {
  29. utimes_native(atime.getTime() / 1000, mtime.getTime() / 1000, callback);
  30. }
  31. extern public function writeBuffer(buffer:Bytes, offset:Int, length:Int, position:Int, callback:Callback<{bytesWritten:Int, buffer:Bytes}>):Void;
  32. public function writeString(str:String, ?position:Int, ?encoding:Encoding, callback:Callback<{bytesWritten:Int, buffer:Bytes}>):Void {
  33. var buffer = Bytes.ofString(str, encoding);
  34. writeBuffer(buffer, 0, buffer.length, position, callback);
  35. }
  36. }