public void Stat(Loop loop, Action <Exception?, UVFileStat>?callback) { var fsr = new FileSystemRequest(); fsr.Callback = (ex) => { if (callback != null) { Ensure.Success(ex, callback, new UVFileStat(fsr.stat)); } }; int r = uv_fs_fstat(loop.NativeHandle, fsr.Handle, FileDescriptor, FileSystemRequest.CallbackDelegate); Ensure.Success(r); }
public void Write(Loop loop, int offset, ArraySegment <byte> segment, Action <Exception?, int?>?callback) { var datagchandle = GCHandle.Alloc(segment.Array, GCHandleType.Pinned); var fsr = new FileSystemRequest(); fsr.Callback = (ex) => { Ensure.Success(ex, callback, fsr.Result.ToInt32()); datagchandle.Free(); }; var ptr = new IntPtr(datagchandle.AddrOfPinnedObject().ToInt64() + segment.Offset); var buf = new uv_buf_t[] { new uv_buf_t(ptr, segment.Count) }; int r = uv_fs_write(loop.NativeHandle, fsr.Handle, FileDescriptor, buf, segment.Count, offset, FileSystemRequest.CallbackDelegate); Ensure.Success(r); }
public static void Readlink(Loop loop, string path, Action <Exception?, string?> callback) { var fsr = new FileSystemRequest(path); fsr.Callback = (ex) => { string?res = null; if (ex == null) { res = Marshal.PtrToStringAuto(fsr.Pointer); } Ensure.Success(ex, callback, res); }; int r = uv_fs_readlink(loop.NativeHandle, fsr.Handle, path, FileSystemRequest.CallbackDelegate); Ensure.Success(r); }
public static void Open(Loop loop, string path, UVFileAccess access, Action <Exception?, UVFile?> callback) { var fsr = new FileSystemRequest(path); fsr.Callback = (ex) => { UVFile?file = null; if (fsr.Result != IntPtr.Zero) { file = new UVFile(loop, fsr.Result.ToInt32()); } Ensure.Success(ex, callback, file); }; int r = uv_fs_open(loop.NativeHandle, fsr.Handle, path, (int)access, 0, FileSystemRequest.CallbackDelegate); Ensure.Success(r); }