aboutsummaryrefslogtreecommitdiff
path: root/zenserver/projectstore.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2022-03-23 16:15:08 +0100
committerStefan Boberg <[email protected]>2022-03-23 16:15:08 +0100
commitcfbe2e251e2cf174ff2474bc70f4e6b9551c4af2 (patch)
tree9d6da6e33484be16cd0251b3781408deb14e2340 /zenserver/projectstore.cpp
parentadded xmake file for zentest-appstub (diff)
parentFixed wrong route pattern. (diff)
downloadzen-cfbe2e251e2cf174ff2474bc70f4e6b9551c4af2.tar.xz
zen-cfbe2e251e2cf174ff2474bc70f4e6b9551c4af2.zip
Merge branch 'main' of https://github.com/EpicGames/zen
Diffstat (limited to 'zenserver/projectstore.cpp')
-rw-r--r--zenserver/projectstore.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp
index 113a7cec4..58b806989 100644
--- a/zenserver/projectstore.cpp
+++ b/zenserver/projectstore.cpp
@@ -933,6 +933,17 @@ ProjectStore::DiscoverProjects()
}
void
+ProjectStore::IterateProjects(std::function<void(Project& Prj)>&& Fn)
+{
+ RwLock::SharedLockScope _(m_ProjectsLock);
+
+ for (auto& Kv : m_Projects)
+ {
+ Fn(Kv.second);
+ }
+}
+
+void
ProjectStore::Flush()
{
// TODO
@@ -1072,6 +1083,27 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects)
m_Router.AddPattern("hash", "([[:xdigit:]]{40})");
m_Router.RegisterRoute(
+ "list",
+ [this](HttpRouterRequest& Req) {
+ m_ProjectStore->DiscoverProjects();
+
+ CbWriter Response;
+ Response.BeginArray();
+ m_ProjectStore->IterateProjects([&Response](ProjectStore::Project& Prj) {
+ Response.BeginObject();
+ Response << "Id"sv << Prj.Identifier;
+ Response << "RootDir"sv << Prj.RootDir.string();
+ Response << "ProjectRootDir"sv << Prj.ProjectRootDir;
+ Response << "EngineRootDir"sv << Prj.EngineRootDir;
+ Response.EndObject();
+ });
+ Response.EndArray();
+
+ Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Response.Save().AsArray());
+ },
+ HttpVerb::kGet);
+
+ m_Router.RegisterRoute(
"{project}/oplog/{log}/batch",
[this](HttpRouterRequest& Req) {
HttpServerRequest& HttpReq = Req.ServerRequest();