public static async Task <WebAssembly.Core.Array> ZipGetArchiveEntryStreamLengthPosition(ZipArchiveMode mode) { var requestTcs = new TaskCompletionSource <WebAssembly.Core.Array> (); using (var memoryStream = await GetPackageArchiveStreamAsync()) { using (var archive = new ZipArchive(memoryStream, mode)) { var resultsArray = new WebAssembly.Core.Array(); var entry = archive.GetEntry("_rels/.rels"); using (var stream = entry.Open()) { resultsArray.Push((double)stream.Position); resultsArray.Push((double)stream.Length); } var entry2 = archive.GetEntry("modernhttpclient.nuspec"); using (var stream = entry2.Open()) { // .NET does not support these in Read mode if (mode == ZipArchiveMode.Update) { resultsArray.Push((double)stream.Length); resultsArray.Push((double)stream.Position); } } requestTcs.SetResult(resultsArray); } } return(await requestTcs.Task); }
public static Task <object> ZipCreateArchive() { var requestTcs = new TaskCompletionSource <object> (); using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var dir = archive.CreateEntry("foobar/"); var entry = archive.CreateEntry("foo.txt"); using (var stream = entry.Open()) { using (var streamWriter = new StreamWriter(stream)) streamWriter.Write("foo"); } } using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Read)) { var returnArray = new WebAssembly.Core.Array(); returnArray.Push(archive.GetEntry("foobar/")); var entry = archive.GetEntry("foo.txt"); returnArray.Push(entry); var streamReader = new StreamReader(entry.Open()); var text = streamReader.ReadToEnd(); returnArray.Push(text); requestTcs.SetResult(returnArray); } } return(requestTcs.Task); }
public void OnNativeEvent(Array nativeArgs) { try { var scriptEventHandler = EventHandlers.First; object[] args; if (nativeArgs != null) { var length = nativeArgs.Length; args = new object[length]; for (var i = 0; i < length; i++) { args[i] = nativeArgs[i]; } } else { args = new object[0]; } while (scriptEventHandler != null) { scriptEventHandler.Value(args); scriptEventHandler = scriptEventHandler.Next; } } catch (Exception exception) { Alt.LogError("Exception in event handler:" + exception); } }
public static T[] ToArray <T>(this WebAssembly.Core.Array array, Func <object, T> cast) { if (array == null) { return(null); } var length = array.Length; var result = new T[length]; for (int i = 0; i < length; i++) { result[i] = cast(array[i]); } return(result); }
public static async Task <object> ZipEnumerateEntriesUpdateMode() { var requestTcs = new TaskCompletionSource <object> (); using (var memoryStream = await GetArchiveStreamAsync()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Update)) { var resultsArray = new WebAssembly.Core.Array(); var entries = archive.Entries; resultsArray.Push(entries [0].FullName); resultsArray.Push(entries [1].FullName); resultsArray.Push(entries [2].FullName); resultsArray.Push(entries [3].FullName); resultsArray.Push(entries [4].FullName); requestTcs.SetResult(resultsArray); } } return(requestTcs.Task); }
private void OnConsoleCommand(string name, Array nativeArgs) { try { var length = nativeArgs.Length; var args = new string[length]; for (var i = 0; i < length; i++) { args[i] = (string)nativeArgs[i]; } var scriptEventHandler = EventHandlers.First; while (scriptEventHandler != null) { scriptEventHandler.Value(name, args); scriptEventHandler = scriptEventHandler.Next; } } catch (Exception exception) { Console.WriteLine("Exception in ConsoleCommandEventHandler:" + exception); } }
public static async Task <object> ZipEnumerateEntriesModifiedTime() { var requestTcs = new TaskCompletionSource <object> (); var date = DateTimeOffset.Now; using (var memoryStream = await GetArchiveStreamAsync()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Update, true)) { var entry = archive.GetEntry("foo.txt"); entry.LastWriteTime = date; } using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Read)) { var returnArray = new WebAssembly.Core.Array(); var entry = archive.GetEntry("foo.txt"); returnArray.Push(entry.LastWriteTime.Year); returnArray.Push(entry.LastWriteTime.Month); returnArray.Push(entry.LastWriteTime.Day); requestTcs.SetResult(returnArray); } } return(requestTcs.Task); }