Esempio n. 1
0
        /// <summary>
        /// Operation for changing files
        /// </summary>
        /// <returns>Status of normal ending working with file</returns>
        protected bool FileChange()
        {
            IFileOperation file = storage;

            while (true)
            {
                // Get request
                if (!Provider.GetRequest(out RequestData userData))
                {
                    continue;
                }

                if (!CheckSessionID(userData.SessionId))
                {
                    return(false);
                }

                switch ((FileOperation)userData.Operation)
                {
                case FileOperation.Read:
                    SendResponse(file.ReadFile());
                    break;

                case FileOperation.Write:
                    SendResponse(file.WriteToFile(userData.Property));
                    break;

                case FileOperation.Edit:
                    #region Edit
                    var edit = file.ReadFile();
                    SendResponse(edit);

                    if (edit.Code == 0)
                    {
                        // Get confirm request
                        while (!Provider.GetRequest(out userData))
                        {
                        }
                        if (!CheckSessionID(userData.SessionId))
                        {
                            return(false);
                        }

                        // Commit changes
                        if (userData.Operation == 3)
                        {
                            SendResponse(storage.ChangeFile(userData.Property));
                        }
                        else
                        {
                            SendResponse(new ResponseData(0, "Canceled"));
                        }
                    }
                    #endregion
                    break;

                case FileOperation.Exit:
                    SendResponse(file.CloseFile());
                    return(true);

                default:
                    Provider.SendResponse(new ResponseData(SessionID, StatusCode.BadRequest, "Invalid operation"));
                    Logger.LogAll("Invalid operation");
                    break;
                }
            }
        }