public SyncResponse Packet_Sync(SyncRequest req)
        {
            try
            {
                if (!sessions.Contains(req.SessionID))
                {
                    sessions.Add(req.SessionID);
                }

                SessionData session = SessionData.GetOrCreate(req.SessionID);

                string uploadID = Guid.NewGuid().ToString();
                if (req.FileID != session.FileID)
                {
                    Directory.CreateDirectory(SystemInfo.RelativeToApplicationDirectory(ServerSettings.Instance.BlenderFiles));
                    _uploads.Add(uploadID, new FileUpload(session.GetBlendFilePath(), req, req.Compression));
                    session.UpdatingFile();
                }

                return(new SyncResponse()
                {
                    Success = true,
                    SameFile = req.FileID == session.FileID,
                    UploadID = uploadID
                });
            }
            catch (Exception ex)
            {
                return(new SyncResponse()
                {
                    Success = true,
                    Message = "Failed due to exception:" + ex.Message
                });
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Deletes the BlenderFiles directory, which is used for temporary file storage
 /// </summary>
 public static void CleanupOldSessions()
 {
     try
     {
         string path = SystemInfo.RelativeToApplicationDirectory(ServerSettings.Instance.BlenderFiles);
         if (Directory.Exists(path))
         {
             Directory.Delete(path, true);
         }
     }
     catch { }
 }
        public static ServerSettings Load()
        {
            string path = SystemInfo.RelativeToApplicationDirectory(SETTINGS_PATH);

            if (File.Exists(path))
            {
                return(JsonSerializer.Deserialize <ServerSettings>(File.ReadAllText(path)));
            }
            else
            {
                return(new ServerSettings());
            }
        }
        /// <summary>
        /// Creates a temporary text file with data
        /// Deleted after action is executed
        /// </summary>
        private static void UseTemporaryFile(string data, Action <string> action)
        {
            string filePath = Path.GetFullPath(SystemInfo.RelativeToApplicationDirectory(Guid.NewGuid().ToString()));

            try
            {
                File.WriteAllText(filePath, data);

                action(filePath);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        /// <summary>
        /// Prepare a version of Blender
        /// </summary>
        /// <param name="version"></param>
        public void Prepare(string version)
        {
            BlenderVersion v = BlenderVersion.FindVersion(version, SystemInfo.RelativeToApplicationDirectory("VersionCache"), SystemInfo.RelativeToApplicationDirectory("VersionCustom"));

            if (v == null)
            {
                throw new ArgumentException("Version not found");
            }

            string targetDir = GetVersionPath(version, SystemInfo.GetOSName());

            if (Directory.Exists(targetDir))
            {
                Console.WriteLine($"{version} already present");
            }
            else if (v.IsCustom)
            {
                throw new ArgumentException("Custom version missing");
            }
            else
            {
                Download(SystemInfo.GetOSName(), v);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Get formatted path to blend file for this session
 /// </summary>
 /// <returns></returns>
 public string GetBlendFilePath()
 {
     return(Path.Combine(SystemInfo.RelativeToApplicationDirectory(ServerSettings.Instance.BlenderFiles), SessionID) + ".blend");
 }
 /// <summary>
 /// Use specific BlenderData and RenderData directories
 /// </summary>
 public BlenderManager(string blenderData, string renderData)
 {
     BlenderData = SystemInfo.RelativeToApplicationDirectory(blenderData);
     RenderData  = SystemInfo.RelativeToApplicationDirectory(renderData);
 }
 /// <summary>
 /// Use Settings.Instance for directories
 /// </summary>
 public BlenderManager()
 {
     BlenderData = SystemInfo.RelativeToApplicationDirectory(ServerSettings.Instance.BlenderData);
     RenderData  = SystemInfo.RelativeToApplicationDirectory(ServerSettings.Instance.RenderData);
 }
 public void Save()
 {
     File.WriteAllText(SystemInfo.RelativeToApplicationDirectory(SETTINGS_PATH), JsonSerializer.Serialize(this));
 }