FileFlushFunction.cs 736 B

1234567891011121314151617181920212223242526
  1. namespace Lua.Standard.IO;
  2. public sealed class FileFlushFunction : LuaFunction
  3. {
  4. public override string Name => "flush";
  5. public static readonly FileFlushFunction Instance = new();
  6. protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
  7. {
  8. var file = context.ReadArgument<FileHandle>(0);
  9. try
  10. {
  11. file.Flush();
  12. buffer.Span[0] = true;
  13. return new(1);
  14. }
  15. catch (IOException ex)
  16. {
  17. buffer.Span[0] = LuaValue.Nil;
  18. buffer.Span[1] = ex.Message;
  19. buffer.Span[2] = ex.HResult;
  20. return new(3);
  21. }
  22. }
  23. }