Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
        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);
        }