public void ReadTarFile(string cleanUrl, Coherent.UI.ResourceResponse response) { string archivePath = Path.Combine(GetArchiveFolder(), m_ArchiveName); using (FileStream unarchFile = File.OpenRead(archivePath)) { TarReader reader = new TarReader(unarchFile); while (reader.MoveNext(true)) { var path = reader.FileInfo.FileName; if (path == cleanUrl) { using (MemoryStream ms = new MemoryStream((int)reader.FileInfo.SizeInBytes)) { reader.Read(ms); byte[] buffer = ms.GetBuffer(); RespondWithBytes(buffer, response); } break; } } } }
public void RespondWithBytes(byte[] bytes, Coherent.UI.ResourceResponse response) { IntPtr buffer = response.GetBuffer((uint)bytes.Length); if (buffer == IntPtr.Zero) { response.SignalFailure(); return; } Marshal.Copy(bytes, 0, buffer, bytes.Length); response.SignalSuccess(); }
public override void ReadFile(string url, Coherent.UI.ResourceResponse response) { string cleanUrl = string.Empty; bool isFile = GetFilepath(url, out cleanUrl); if (isFile) { ReadFileFromFilesystem(cleanUrl, response); } else { ReadTarFile(cleanUrl, response); } }
public void ReadFileFromFilesystem(string cleanUrl, Coherent.UI.ResourceResponse response) { #if COHERENT_UNITY_UNSUPPORTED_PLATFORM throw new ApplicationException("Coherent UI doesn't support the target platform!"); #else if (!File.Exists(cleanUrl)) { response.SignalFailure(); return; } byte[] bytes = File.ReadAllBytes(cleanUrl); RespondWithBytes(bytes, response); #endif }