Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void Read(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_read(loop.NativeHandle, fsr.Handle, FileDescriptor, buf, 1, offset, FileSystemRequest.CallbackDelegate);

            Ensure.Success(r);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }