server-mode: Automate progress reporting
Wire up cmake::SetProgressUpdate to do progress reporting via the cmake server.
This commit is contained in:
parent
70b8ba9a0f
commit
ca7799482c
|
@ -134,8 +134,13 @@ void cmServer::PopOne()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->WriteResponse(this->Protocol ? this->Protocol->Process(request)
|
if (this->Protocol) {
|
||||||
: this->SetProtocolVersion(request));
|
this->Protocol->CMakeInstance()->SetProgressCallback(
|
||||||
|
reportProgress, const_cast<cmServerRequest*>(&request));
|
||||||
|
this->WriteResponse(this->Protocol->Process(request));
|
||||||
|
} else {
|
||||||
|
this->WriteResponse(this->SetProtocolVersion(request));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmServer::handleData(const std::string& data)
|
void cmServer::handleData(const std::string& data)
|
||||||
|
@ -210,6 +215,17 @@ void cmServer::PrintHello() const
|
||||||
this->WriteJsonObject(hello);
|
this->WriteJsonObject(hello);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmServer::reportProgress(const char* msg, float progress, void* data)
|
||||||
|
{
|
||||||
|
const cmServerRequest* request = static_cast<const cmServerRequest*>(data);
|
||||||
|
assert(request);
|
||||||
|
if (progress < 0.0 || progress > 1.0) {
|
||||||
|
request->ReportProgress(0, 0, 0, msg);
|
||||||
|
} else {
|
||||||
|
request->ReportProgress(0, static_cast<int>(progress * 1000), 1000, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cmServerResponse cmServer::SetProtocolVersion(const cmServerRequest& request)
|
cmServerResponse cmServer::SetProtocolVersion(const cmServerRequest& request)
|
||||||
{
|
{
|
||||||
if (request.Type != "handshake")
|
if (request.Type != "handshake")
|
||||||
|
|
|
@ -43,6 +43,8 @@ public:
|
||||||
private:
|
private:
|
||||||
void RegisterProtocol(cmServerProtocol* protocol);
|
void RegisterProtocol(cmServerProtocol* protocol);
|
||||||
|
|
||||||
|
static void reportProgress(const char* msg, float progress, void* data);
|
||||||
|
|
||||||
// Handle requests:
|
// Handle requests:
|
||||||
cmServerResponse SetProtocolVersion(const cmServerRequest& request);
|
cmServerResponse SetProtocolVersion(const cmServerRequest& request);
|
||||||
|
|
||||||
|
|
|
@ -57,9 +57,6 @@ private:
|
||||||
class cmServerRequest
|
class cmServerRequest
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void ReportProgress(int min, int current, int max,
|
|
||||||
const std::string& message) const;
|
|
||||||
|
|
||||||
cmServerResponse Reply(const Json::Value& data) const;
|
cmServerResponse Reply(const Json::Value& data) const;
|
||||||
cmServerResponse ReportError(const std::string& message) const;
|
cmServerResponse ReportError(const std::string& message) const;
|
||||||
|
|
||||||
|
@ -71,6 +68,9 @@ private:
|
||||||
cmServerRequest(cmServer* server, const std::string& t, const std::string& c,
|
cmServerRequest(cmServer* server, const std::string& t, const std::string& c,
|
||||||
const Json::Value& d);
|
const Json::Value& d);
|
||||||
|
|
||||||
|
void ReportProgress(int min, int current, int max,
|
||||||
|
const std::string& message) const;
|
||||||
|
|
||||||
cmServer* m_Server;
|
cmServer* m_Server;
|
||||||
|
|
||||||
friend class cmServer;
|
friend class cmServer;
|
||||||
|
@ -95,6 +95,8 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<cmake> m_CMakeInstance;
|
std::unique_ptr<cmake> m_CMakeInstance;
|
||||||
|
|
||||||
|
friend class cmServer;
|
||||||
};
|
};
|
||||||
|
|
||||||
class cmServerProtocol1_0 : public cmServerProtocol
|
class cmServerProtocol1_0 : public cmServerProtocol
|
||||||
|
|
Loading…
Reference in New Issue