[Differential] [Requested Changes To] D4095: Refactor to embrace a cmake server import backend

Milian Wolff noreply at phabricator.kde.org
Tue Jan 24 08:32:06 UTC 2017

mwolff requested changes to this revision.
mwolff added a comment.
This revision now requires changes to proceed.

  lgtm to me mostly, but some stuff still needs to be ironed out, imo


> cmakemanager.cpp:143
> +static bool serverSupported()
> +{

this is not used anywhere now?

> cmakemanager.cpp:167
> -    // create the JSON file if it doesn't exist
> -    auto commandsFile = CMake::commandsFile(project);
> -    if (!QFileInfo::exists(commandsFile.toLocalFile())) {
> -        qCDebug(CMAKE) << "couldn't find commands file:" << commandsFile << "- now trying to reconfigure";
> -        jobs << builder()->configure(project);
> -    }
> +    CMakeServer* server = new CMakeServer(this);
> +    server->waitForConnected();

Who will delete the server when it is available? this looks like you are piling up servers until the CMakeManager is deleted at shutdown.

You probably want to use a unique_ptr here and transfer ownership into the import job when the server is available

> cmakeserver.cpp:63
> +        //Once the process has started, wait for the file to be created, then connect to it
> +        QTimer* connectTimer = new QTimer(this);
> +        connectTimer->setInterval(100);

you don't need the full timer object anymore, do you? Simply use QTimer::singleShot?

> cmakeserver.cpp:64
> +        QTimer* connectTimer = new QTimer(this);
> +        connectTimer->setInterval(100);
> +        connectTimer->setSingleShot(true);

what if the first connect fails - we simply get an error and disconnect and don't try thereafter, right? couldn't we retry for up to N times (say every 100ms for up to 1s?) to make this a bit less brittle?

> cmakeserver.cpp:117
> +            m_buffer = m_buffer.mid(idx + closeTag.size());
> +        } else
> +            break;

missing curly braces

> apol wrote in cmakeserver.cpp:45
>   apol at oliver:~$ cmake -E server --experimental --pipe=fu
>   ^C
>   apol at oliver:~$ cmake -E server --experimental --pipe fu
>   CMake Error: Unknown argument for server mode


> apol wrote in cmakeserver.cpp:128
> My brain wants to do it, but then it becomes an unreadable blob... :(

think of all the little allocations :P

> apol wrote in cmakeserver.h:29
> Well, whoever interacts with this is interacting with the server after all.

right, it's a client to the server, I'd welcome the rename personally

  R32 KDevelop



To: apol, kfunk, mwolff, #kdevelop
Cc: mwolff, antonanikin, arrowdodger, kfunk, kdevelop-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20170124/11634801/attachment.html>

More information about the KDevelop-devel mailing list