| 812 | } |
| 813 | |
| 814 | SC::Result SC::AsyncFileSystemOperation::rename(AsyncEventLoop& eventLoop, StringSpan path, StringSpan newPath) |
| 815 | { |
| 816 | SC_TRY(checkState()); |
| 817 | operation = Operation::Rename; |
| 818 | new (&renameData, PlacementNew()) RenameData({path, newPath}); |
| 819 | if (not eventLoop.needsThreadPoolForFileOperations() and threadPoolMode != AsyncThreadPoolMode::ForceThreadPool) |
| 820 | { |
| 821 | return eventLoop.start(*this); |
| 822 | } |
| 823 | |
| 824 | loopWork.work = [&]() |
| 825 | { |
| 826 | SC_TRY(FileSystem::Operations::rename(renameData.path, renameData.newPath)); |
| 827 | return SC::Result(true); |
| 828 | }; |
| 829 | loopWork.callback.bind<AsyncFileSystemOperation, &AsyncFileSystemOperation::onOperationCompleted>(*this); |
| 830 | return eventLoop.start(loopWork); |
| 831 | } |
| 832 | |
| 833 | SC::Result SC::AsyncFileSystemOperation::removeEmptyDirectory(AsyncEventLoop& eventLoop, StringSpan path) |
| 834 | { |