public NativeFileSystemStream(IJSRuntime jsRuntime, NativeFileSystemFileInfo fileInfo) { this.jsRuntime = jsRuntime; this.webAssemblyJSRuntime = jsRuntime as IJSUnmarshalledRuntime; this.fileInfo = fileInfo; this.position = 0; fileInfo.AddRef(); }
async Task <(string fileName, NativeFileSystemFileInfo fileInfo)> EnsureNativeFileSystemFileInfoExists(long handle, long dbId) { var name = await jsRuntime.InvokeAsync <string>("logjoint.nativeFiles.getName", handle); string fileName = $"{nativeFileSystemNamePrefix}{dbId}/{name}"; if (!nativeFileSystemFiles.TryGetValue(fileName, out var fileInfo)) { var size = await jsRuntime.InvokeAsync <long>("logjoint.nativeFiles.getSize", handle); var lastModified = await jsRuntime.InvokeAsync <long>("logjoint.nativeFiles.getLastModified", handle); nativeFileSystemFiles.Add(fileName, fileInfo = new NativeFileSystemFileInfo() { owner = this, fileName = fileName, jsRuntime = jsRuntime, handle = handle, size = size, lastModified = DateTime.UnixEpoch.AddMilliseconds(lastModified) }); } return(fileName, fileInfo); }