<table><tr><td style="">sitter created this revision.<br />sitter added a reviewer: dfaure.<br />Herald added projects: Dolphin, Frameworks.<br />Herald added subscribers: kfm-devel, kde-frameworks-devel.<br />sitter requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D28909">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>the Result system was originally introduced to the FTP slave and now also<br />
makes an appearance in the SMB slave. the system introduces a separation<br />
between logic and fronting API class to more tightly control when state<br />
changing calls (finished()/error()) are made. since these calls may only<br />
be made once during a given command multiple calls are at the very least<br />
indicative of bad code and at worst cause severe state confusion for the<br />
slavebase that it won't be able to recover from, rendering the slave<br />
instance broken.</p>

<p>in the internal class Results are returned whenever an error can appear and<br />
these Results must be handled in some form. the only way to effectively<br />
produce user visible errors is to forward results up the call chain.</p>

<p>this is also introducing scopeguards for file descriptors to simplify<br />
error condition returning (i.e. not having to worry about closing the fd<br />
manually). as a result we now require Qt 5.12 (which we do via KF5.66<br />
anyway, albeit implicitly)</p></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">copy, lots and lots of copy</li>
<li class="remarkup-list-item">rename</li>
<li class="remarkup-list-item">delete</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R320 KIO Extras</div></div></div><br /><div><strong>BRANCH</strong><div><div>smb-result</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D28909">https://phabricator.kde.org/D28909</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
smb/kio_smb.cpp<br />
smb/kio_smb.h<br />
smb/kio_smb_auth.cpp<br />
smb/kio_smb_browse.cpp<br />
smb/kio_smb_config.cpp<br />
smb/kio_smb_dir.cpp<br />
smb/kio_smb_file.cpp<br />
smb/kio_smb_mount.cpp</div></div></div><br /><div><strong>To: </strong>sitter, dfaure<br /><strong>Cc: </strong>kde-frameworks-devel, kfm-devel, azyx, nikolaik, pberestov, iasensio, fprice, LeGast00n, cblack, fbampaloukas, alexde, Codezela, feverfew, meven, michaelh, spoorun, navarromorales, firef, ngraham, andrebarros, bruns, emmanuelp, rdieter, mikesomov<br /></div>