3 #if !SILICONSTUDIO_PLATFORM_WINDOWS_RUNTIME
7 using SiliconStudio.Core.Serialization;
8 using SiliconStudio.Core.IO;
10 namespace SiliconStudio.Paradox.Engine.Network
14 public string Url {
get; set; }
19 public string Url {
get; set; }
24 public bool FileExists {
get; set; }
29 public byte[] Data {
get; set; }
34 public string Url {
get; set; }
35 public byte[] Data {
get; set; }
44 this.socketContext = socketContext;
45 RemoteUrl = remoteUrl;
47 RemoteUrl += VirtualFileSystem.DirectorySeparatorChar;
50 public string RemoteUrl {
get;
private set; }
57 var stream = await VirtualFileSystem.OpenStreamAsync(packet.Url, VirtualFileMode.Open, VirtualFileAccess.Read);
58 var data =
new byte[stream.Length];
59 await stream.ReadAsync(data, 0, data.Length);
61 socketContext.Send(
new DownloadFileAnswer { StreamId = packet.StreamId, Data = data });
67 var stream = await VirtualFileSystem.OpenStreamAsync(packet.Url, VirtualFileMode.Create, VirtualFileAccess.Write);
68 await stream.WriteAsync(packet.Data, 0, packet.Data.Length);
75 var fileExists = await VirtualFileSystem.FileExistsAsync(packet.Url);
76 socketContext.Send(
new FileExistsAnswer { StreamId = packet.StreamId, FileExists = fileExists });
82 return RemoteUrl + path;
89 case VirtualFileAccess.Write:
90 return new NetworkWriteStream(socketContext, RemoteUrl + url);
91 case VirtualFileAccess.Read:
93 return new MemoryStream(downloadFileAnswer.Data);
95 throw new NotSupportedException();
102 return fileExistsAnswer.FileExists;
109 private MemoryStream memoryStream;
111 public NetworkWriteStream(
SocketContext socketContext,
string url)
112 : base(new MemoryStream())
114 this.memoryStream = (MemoryStream)InternalStream;
116 this.socketContext = socketContext;
119 protected override void Dispose(
bool disposing)
121 socketContext.Send(
new UploadFilePacket { Url = url, Data = memoryStream.ToArray() });
122 base.Dispose(disposing);
Virtual abstraction over a file system. It handles access to files, http, packages, path rewrite, etc...
NetworkVirtualFileProvider(SocketContext socketContext, string rootPath, string remoteUrl)
override bool FileExists(string url)
Determines whether the specified path points to an existing file. The path.
Abstract base class for IVirtualFileProvider.
VirtualFileShare
File share capabilities, equivalent of System.IO.FileShare.
static readonly char DirectorySeparatorChar
VirtualFileAccess
File access equivalent of System.IO.FileAccess.
VirtualFileMode
File mode equivalent of System.IO.FileMode.
static void RegisterServer(SocketContext socketContext)
override string GetAbsolutePath(string path)
Gets the absolute path for the specified local path from this provider. The path local to this instan...
A multithreaded wrapper over a Stream, used by the VirtualFileSystem. It also allows restricted acces...
StreamFlags
Describes the different type of streams.
override Stream OpenStream(string url, VirtualFileMode mode, VirtualFileAccess access, VirtualFileShare share=VirtualFileShare.Read, StreamFlags streamFlags=StreamFlags.None)
Opens a Stream from the specified path. The path.The mode.The access.The process sharing mode...