diff options
-rw-r--r-- | Jamroot.jam | 14 | ||||
-rw-r--r-- | gentoobrowse/src/Jamfile.jam | 8 | ||||
-rw-r--r-- | gentoobrowse/src/base.json | 2 | ||||
-rw-r--r-- | gentoobrowse/src/packages.cpp | 188 | ||||
-rw-r--r-- | gentoobrowse/src/search.cpp | 24 | ||||
-rw-r--r-- | gentoobrowse/src/user.cpp | 98 | ||||
-rw-r--r-- | slice.jam | 12 |
7 files changed, 146 insertions, 200 deletions
diff --git a/Jamroot.jam b/Jamroot.jam index 83087e4..36fe9c6 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -7,12 +7,14 @@ variant coverage : debug ; project : requirements - <variant>release:<cxxflags>"-std=c++1y -fvisibility=hidden" - <variant>release:<linkflags>"-Wl,-z,defs,--warn-once,--gc-sections" - <variant>debug:<cxxflags>"-W -Wall -Werror -Wwrite-strings -std=c++1y -fvisibility=hidden" - <variant>debug:<linkflags>"-Wl,-z,defs,--warn-once" - <variant>coverage:<cxxflags>"-W -Wall -Werror -Wwrite-strings -std=c++1y --coverage -fvisibility=hidden" - <variant>coverage:<linkflags>"-Wl,-z,defs,--warn-once --coverage" + <define>ICE_CPP11_MAPPING + <cxxflags>"-std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden" + <linkflags>"-Wl,-z,defs,--warn-once,--gc-sections" + <variant>release:<cxxflags>"-flto=2" + <variant>release:<linkflags>"-flto=2" + <variant>debug:<cxxflags>"-W -Wall -Werror -Wextra" + <variant>coverage:<cxxflags>"--coverage" + <variant>coverage:<linkflags>"--coverage" ; build-project gentoobrowse ; diff --git a/gentoobrowse/src/Jamfile.jam b/gentoobrowse/src/Jamfile.jam index f480770..80fbed7 100644 --- a/gentoobrowse/src/Jamfile.jam +++ b/gentoobrowse/src/Jamfile.jam @@ -9,8 +9,7 @@ lib icespider-filesessions ; lib icespider-testing ; lib adhocutil ; lib tidy ; -lib Ice ; -lib IceUtil ; +lib Ice : : <name>Ice++11 ; lib pthread ; lib boost_system ; lib boost_filesystem ; @@ -41,11 +40,9 @@ lib icespider : : <library>icespider-filesessions <library>adhocutil <library>Ice - <library>IceUtil <library>pthread <library>slicer <library>boost_system - <allow-ice>yes ; alias gentoobrowse : @@ -53,12 +50,11 @@ alias gentoobrowse : : <slicer>yes : : - <variant>release:<cxxflags>-flto=3 - <variant>release:<linkflags>-flto=3 <library>gentoobrowse-api <library>slicer-json <library>slicer-xml <library>icespider + <ice-visibility>hidden <include>. ; diff --git a/gentoobrowse/src/base.json b/gentoobrowse/src/base.json index c1164ee..00178d2 100644 --- a/gentoobrowse/src/base.json +++ b/gentoobrowse/src/base.json @@ -8,7 +8,7 @@ "void trimCategories(Gentoo::Categories &, const Gentoo::Packages &) const", "void trimCategories(Gentoo::Categories &, const Gentoo::SearchResultPackages &) const", "void trimPackages(Gentoo::Packages &, const Gentoo::Ebuilds &) const", - "template<typename T> void trimCategories(const IceSpider::IHttpRequest *, const IceInternal::Handle<T> & p) const { trimCategories(p->categories, p->packages); }", + "template<typename T> void trimCategories(const IceSpider::IHttpRequest *, const std::shared_ptr<T> & p) const { trimCategories(p->categories, p->packages); }", "void addUser(const IceSpider::IHttpRequest *, const PageBasePtr &) const" ] } diff --git a/gentoobrowse/src/packages.cpp b/gentoobrowse/src/packages.cpp index ce07a11..c6e01fb 100644 --- a/gentoobrowse/src/packages.cpp +++ b/gentoobrowse/src/packages.cpp @@ -14,7 +14,11 @@ #include <safeMapFind.h> namespace GentooBrowse { - template<typename I, typename T> std::map<I, T> makeMap(const std::vector<T> & items, const boost::function<I(const T &)> & id) + const IceSpider::RouteOptions noDefaultSerializersOptions { + false // addDefaultSerializers + }; + + template<typename I, typename T> std::map<I, T> makeMap(const std::vector<T> & items, const std::function<I(const T &)> & id) { std::map<I, T> rtn; for (const auto & item : items) { @@ -35,37 +39,31 @@ namespace GentooBrowse { common(core), prx0(core->getProxy<Gentoo::Portage>()), prx1(core->getProxy<Gentoo::Users>()), - _pd_syncs(3), - _serializer_text_html("xslt/home.xslt"), - _serializer_application_atom_xml("xslt/home-atom.xslt") - { - addRouteSerializer({ "application", "atom+xml" }, &_serializer_application_atom_xml); - addRouteSerializer({ "text", "html" }, &_serializer_text_html ); - } - - ~index() + _pd_syncs(3) { - removeRouteSerializer({ "application", "atom+xml" }); - removeRouteSerializer({ "text", "html" }); + addRouteSerializer({ "application", "atom+xml" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/home-atom.xslt")); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/home.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - ::GentooBrowse::IndexPtr _responseModel = new ::GentooBrowse::Index(); - auto _ar_categories = prx0->begin_getCategoriesWithRecentAdditions(_pd_syncs, request->getContext()); - auto _ar_ebuilds = prx0->begin_getRecentAdditions(_pd_syncs, request->getContext()); - auto _ar_packages = prx0->begin_getPackagesWithRecentAdditions(_pd_syncs, request->getContext()); + ::GentooBrowse::IndexPtr _responseModel = std::make_shared<::GentooBrowse::Index>(); + auto _ar_categories = prx0->getCategoriesWithRecentAdditionsAsync(_pd_syncs, request->getContext()); + auto _ar_ebuilds = prx0->getRecentAdditionsAsync(_pd_syncs, request->getContext()); + auto _ar_packages = prx0->getPackagesWithRecentAdditionsAsync(_pd_syncs, request->getContext()); addUser(request, _responseModel); - Ice::AsyncResultPtr _ar_t; + std::future<::Gentoo::PackageIds> _ar_t; if (_responseModel->user) { - _ar_t = prx1->begin_tracked(_responseModel->user->userid); + _ar_t = prx1->trackedAsync(_responseModel->user->userid); } - auto ebuilds = prx0->end_getRecentAdditions(_ar_ebuilds); - auto packages = GentooBrowse::makeMap<Ice::Int, Gentoo::PackagePtr>(prx0->end_getPackagesWithRecentAdditions(_ar_packages), [](auto p){ return p->packageid; }); - auto categories = GentooBrowse::makeMap<Ice::Int, Gentoo::CategoryPtr>(prx0->end_getCategoriesWithRecentAdditions(_ar_categories), [](auto c){ return c->categoryid; }); - decltype(prx1->end_tracked(_ar_t)) tracked; - if (_ar_t) { - tracked = prx1->end_tracked(_ar_t); + auto ebuilds = _ar_ebuilds.get(); + auto packages = GentooBrowse::makeMap<Ice::Int, Gentoo::PackagePtr>(_ar_packages.get(), [](auto p){ return p->packageid; }); + auto categories = GentooBrowse::makeMap<Ice::Int, Gentoo::CategoryPtr>(_ar_categories.get(), [](auto c){ return c->categoryid; }); + ::Gentoo::PackageIds tracked; + if (_responseModel->user) { + tracked = _ar_t.get(); } for(const auto & ebuild : ebuilds) { auto & p = packages[ebuild->packageid]; @@ -80,11 +78,9 @@ namespace GentooBrowse { } private: - const Gentoo::PortagePrx prx0; - const Gentoo::UsersPrx prx1; + const Gentoo::PortagePrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; const ::Ice::Int _pd_syncs; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_application_atom_xml; }; // Route name: category @@ -96,33 +92,27 @@ namespace GentooBrowse { IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/packages/{category}"), common(core), prx0(core->getProxy<Gentoo::Portage>()), - _pi_category(1), - _serializer_text_html("xslt/category.xslt") - { - addRouteSerializer({ "text", "html" }, &_serializer_text_html); - } - - ~category() + _pi_category(1) { - removeRouteSerializer({ "text", "html" }); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/category.xslt")); } void execute(IceSpider::IHttpRequest * request) const { auto _p_category(request->getURLParam<::std::string>(_pi_category)); auto cat = prx0->findCategory(_p_category, request->getContext()); - auto _ar_pkgs = prx0->begin_getPackagesInCategory(cat->categoryid, request->getContext()); - ::GentooBrowse::CategoryPtr model = new ::GentooBrowse::Category(); + auto _ar_pkgs = prx0->getPackagesInCategoryAsync(cat->categoryid, request->getContext()); + ::GentooBrowse::CategoryPtr model = std::make_shared<::GentooBrowse::Category>(); model->category = cat; - model->packages = prx0->end_getPackagesInCategory(_ar_pkgs); + model->packages = _ar_pkgs.get(); addUser(request, model); request->response(this, model); } private: - const Gentoo::PortagePrx prx0; + const Gentoo::PortagePrxPtr prx0; const ::Ice::Int _pi_category; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; }; // Route name: package @@ -136,51 +126,46 @@ namespace GentooBrowse { prx0(core->getProxy<Gentoo::Portage>()), prx1(core->getProxy<Gentoo::Users>()), _pi_category(1), - _pi_package(2), - _serializer_text_html("xslt/package.xslt") - { - addRouteSerializer({ "text", "html" }, &_serializer_text_html); - } - - ~package() + _pi_package(2) { - removeRouteSerializer({ "text", "html" }); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/package.xslt")); } void execute(IceSpider::IHttpRequest * request) const { auto _p_category(request->getURLParam<::std::string>(_pi_category)); auto _p_package(request->getURLParam<::std::string>(_pi_package)); - auto _ar_p = prx0->begin_findPackage(_p_category, _p_package, request->getContext()); - auto _ar_r = prx0->begin_getRepositories(request->getContext()); - auto _ar_cats = prx0->begin_getAllCategories(request->getContext()); - ::GentooBrowse::PackagePtr model = new ::GentooBrowse::Package(); - model->package = prx0->end_findPackage(_ar_p); - Ice::AsyncResultPtr _ar_t; - auto _ar_cl = prx0->begin_getPackageChangeLog(model->package->packageid, request->getContext()); - auto _ar_ebuilds = prx0->begin_getPackageVersionDetails(model->package->packageid, request->getContext()); - auto _ar_bugs = prx0->begin_getPackageBugs(model->package->packageid, request->getContext()); - auto _ar_d = prx0->begin_getPackageDependencies(model->package->packageid, request->getContext()); - auto _ar_rd = prx0->begin_getPackageRuntimeDependencies(model->package->packageid, request->getContext()); - auto _ar_dp = prx0->begin_getPackagesDepending(model->package->packageid, request->getContext()); - auto _ar_m = prx0->begin_getPackageMasks(model->package->packageid, request->getContext()); - auto _ar_u = prx0->begin_getPackageUses(model->package->packageid, request->getContext()); - auto _ar_urls = prx0->begin_getPackageUrls(model->package->packageid, request->getContext()); + auto _ar_p = prx0->findPackageAsync(_p_category, _p_package, request->getContext()); + auto _ar_r = prx0->getRepositoriesAsync(request->getContext()); + auto _ar_cats = prx0->getAllCategoriesAsync(request->getContext()); + ::GentooBrowse::PackagePtr model = std::make_shared<::GentooBrowse::Package>(); + model->package = _ar_p.get(); + auto _ar_cl = prx0->getPackageChangeLogAsync(model->package->packageid, request->getContext()); + auto _ar_ebuilds = prx0->getPackageVersionDetailsAsync(model->package->packageid, request->getContext()); + auto _ar_bugs = prx0->getPackageBugsAsync(model->package->packageid, request->getContext()); + auto _ar_d = prx0->getPackageDependenciesAsync(model->package->packageid, request->getContext()); + auto _ar_rd = prx0->getPackageRuntimeDependenciesAsync(model->package->packageid, request->getContext()); + auto _ar_dp = prx0->getPackagesDependingAsync(model->package->packageid, request->getContext()); + auto _ar_m = prx0->getPackageMasksAsync(model->package->packageid, request->getContext()); + auto _ar_u = prx0->getPackageUsesAsync(model->package->packageid, request->getContext()); + auto _ar_urls = prx0->getPackageUrlsAsync(model->package->packageid, request->getContext()); addUser(request, model); + std::future<::Gentoo::PackageIds> _ar_t; if (model->user) { - _ar_t = prx1->begin_tracked(model->user->userid); + _ar_t = prx1->trackedAsync(model->user->userid); } - model->categories = prx0->end_getAllCategories(_ar_cats); - model->changelog = prx0->end_getPackageChangeLog(_ar_cl); - model->ebuilds = prx0->end_getPackageVersionDetails(_ar_ebuilds); - model->bugs = prx0->end_getPackageBugs(_ar_bugs); - model->dependencies = prx0->end_getPackageDependencies(_ar_d); - model->rdependencies = prx0->end_getPackageRuntimeDependencies(_ar_rd); - model->depending = prx0->end_getPackagesDepending(_ar_dp); - model->masks = prx0->end_getPackageMasks(_ar_m); - model->uses = prx0->end_getPackageUses(_ar_u); - model->repos = prx0->end_getRepositories(_ar_r); - model->urls = prx0->end_getPackageUrls(_ar_urls); + model->categories = _ar_cats.get(); + model->changelog = _ar_cl.get(); + model->ebuilds = _ar_ebuilds.get(); + model->bugs = _ar_bugs.get(); + model->dependencies = _ar_d.get(); + model->rdependencies = _ar_rd.get(); + model->depending = _ar_dp.get(); + model->masks = _ar_m.get(); + model->uses = _ar_u.get(); + model->repos = _ar_r.get(); + model->urls = _ar_urls.get(); std::set<Ice::Int> ids({ model->package->categoryid }); collateCategoryIds(ids, model->dependencies); collateCategoryIds(ids, model->depending); @@ -188,8 +173,8 @@ namespace GentooBrowse { model->categories.erase(std::remove_if(model->categories.begin(), model->categories.end(), [&ids](auto category) { return ids.find(category->categoryid) == ids.end(); }), model->categories.end()); - if (_ar_t) { - model->tracked = AdHoc::containerContains(prx1->end_tracked(_ar_t), model->package->packageid); + if (model->user) { + model->tracked = AdHoc::containerContains(_ar_t.get(), model->package->packageid); } request->response(this, model); } @@ -202,11 +187,10 @@ namespace GentooBrowse { return p->categoryid; }); } - const Gentoo::PortagePrx prx0; - const Gentoo::UsersPrx prx1; + const Gentoo::PortagePrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; const ::Ice::Int _pi_category; const ::Ice::Int _pi_package; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; }; @@ -236,8 +220,8 @@ namespace GentooBrowse { } private: - const Gentoo::PortagePrx prx0; - const Gentoo::UsersPrx prx1; + const Gentoo::PortagePrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; const ::Ice::Int _pi_category; const ::Ice::Int _pi_package; }; @@ -269,8 +253,8 @@ namespace GentooBrowse { } private: - const Gentoo::PortagePrx prx0; - const Gentoo::UsersPrx prx1; + const Gentoo::PortagePrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; const ::Ice::Int _pi_category; const ::Ice::Int _pi_package; }; @@ -282,44 +266,36 @@ namespace GentooBrowse { public common { public: userAtom(const IceSpider::Core * core) : - IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/atom/{username}"), + IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/atom/{username}", noDefaultSerializersOptions), common(core), prx0(core->getProxy<Gentoo::Portage>()), prx1(core->getProxy<Gentoo::Users>()), - _pi_username(1), - _serializer_application_atom_xml("xslt/user-atom.xslt") - { - addRouteSerializer({ "application", "atom+xml" }, &_serializer_application_atom_xml); - removeRouteSerializer({ "application", "xml" }); - removeRouteSerializer({ "application", "json" }); - } - - ~userAtom() + _pi_username(1) { - removeRouteSerializer({ "application", "atom+xml" }); + addRouteSerializer({ "application", "atom+xml" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/user-atom.xslt")); } void execute(IceSpider::IHttpRequest * request) const { auto _p_username(request->getURLParam<::std::string>(_pi_username)); auto user = prx1->find(_p_username); - auto _ar_cs = prx0->begin_getAllCategories(request->getContext()); - auto _ar_ps = prx0->begin_getUserTrackedPackages(user->userid, request->getContext()); - auto _ar_vs = prx0->begin_getUserTrackedRecentVersions(user->userid, 50, request->getContext()); - GentooBrowse::UserTrackedPtr ut = new GentooBrowse::UserTracked(); - ut->categories = prx0->end_getAllCategories(_ar_cs); - ut->packages = prx0->end_getUserTrackedPackages(_ar_ps); - ut->versions = prx0->end_getUserTrackedRecentVersions(_ar_vs); + auto _ar_cs = prx0->getAllCategoriesAsync(request->getContext()); + auto _ar_ps = prx0->getUserTrackedPackagesAsync(user->userid, request->getContext()); + auto _ar_vs = prx0->getUserTrackedRecentVersionsAsync(user->userid, 50, request->getContext()); + GentooBrowse::UserTrackedPtr ut = std::make_shared<GentooBrowse::UserTracked>(); + ut->categories = _ar_cs.get(); + ut->packages = _ar_ps.get(); + ut->versions = _ar_vs.get(); common::trimPackages(ut->packages, ut->versions); common::trimCategories(ut->categories, ut->packages); request->response(this, ut); } private: - const Gentoo::PortagePrx prx0; - const Gentoo::UsersPrx prx1; + const Gentoo::PortagePrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; const ::Ice::Int _pi_username; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_application_atom_xml; }; diff --git a/gentoobrowse/src/search.cpp b/gentoobrowse/src/search.cpp index 64234ca..e1740f8 100644 --- a/gentoobrowse/src/search.cpp +++ b/gentoobrowse/src/search.cpp @@ -26,24 +26,19 @@ namespace GentooBrowse { public: sitemap(const IceSpider::Core * core) : IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/sitemap.xml"), - prx0(core->getProxy<Gentoo::Portage>()), - _serializer_text_html("xslt/sitemap.xslt") + prx0(core->getProxy<Gentoo::Portage>()) { - addRouteSerializer({ "application", "xml" }, &_serializer_text_html); - } - - ~sitemap() - { - removeRouteSerializer({ "application", "xml" }); + addRouteSerializer({ "application", "xml" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/sitemap.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - auto _ar_categories = prx0->begin_getAllOverviewCategories(request->getContext()); - auto _ar_packages = prx0->begin_getAllPackages(request->getContext()); - ::GentooBrowse::SitemapPtr _responseModel = new ::GentooBrowse::Sitemap(); - auto categories = prx0->end_getAllOverviewCategories(_ar_categories); - auto packages = prx0->end_getAllPackages(_ar_packages); + auto _ar_categories = prx0->getAllOverviewCategoriesAsync(request->getContext()); + auto _ar_packages = prx0->getAllPackagesAsync(request->getContext()); + ::GentooBrowse::SitemapPtr _responseModel = std::make_shared<::GentooBrowse::Sitemap>(); + auto categories = _ar_categories.get(); + auto packages = _ar_packages.get(); for (const auto & super : categories) { std::transform(super.second.begin(), super.second.end(), std::inserter(_responseModel->categories, _responseModel->categories.begin()), [&packages](auto c) { @@ -58,8 +53,7 @@ namespace GentooBrowse { } private: - const Gentoo::PortagePrx prx0; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; + const Gentoo::PortagePrxPtr prx0; }; } // namespace GentooBrowse diff --git a/gentoobrowse/src/user.cpp b/gentoobrowse/src/user.cpp index e98de2c..cf56b43 100644 --- a/gentoobrowse/src/user.cpp +++ b/gentoobrowse/src/user.cpp @@ -13,6 +13,8 @@ #include <icespider-routes-base.h> namespace GentooBrowse { + using namespace std::literals; + // Implementation classes. // Route name: login @@ -33,13 +35,13 @@ namespace GentooBrowse { auto s = prx0->createSession(); s->variables[USERID] = boost::lexical_cast<std::string>(user->userid); prx0->updateSession(s); - request->setCookie(SESSIONID, s->id, IceUtil::None, "/"); - request->responseRedirect("/user/home", "Authenticated"); + request->setCookie(SESSIONID, s->id, IceUtil::None, "/"s); + request->responseRedirect("/user/home", "Authenticated"s); } private: - const IceSpider::SessionManagerPrx prx0; - const Gentoo::UsersPrx prx1; + const IceSpider::SessionManagerPrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; }; // Route name: signup @@ -47,20 +49,16 @@ namespace GentooBrowse { class signup : public IceSpider::IRouteHandler { public: signup(const IceSpider::Core *) : - IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/user/signup"), - _serializer_text_html("xslt/user-signup.xslt") + IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/user/signup") { - addRouteSerializer({ "text", "html" }, &_serializer_text_html); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/user-signup.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - PageBasePtr p = new PageBase(); - request->response(this, p); + request->response(this, std::make_shared<PageBase>()); } - - private: - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; }; // Route name: signup post @@ -77,11 +75,11 @@ namespace GentooBrowse { { auto signup = *request->getBody<GentooBrowse::SignUpPtr>(); auto user = prx1->create(signup->username, signup->password, signup->realname, signup->email); - request->responseRedirect("/user/verification", "Pending verification"); + request->responseRedirect("/user/verification", "Pending verification"s); } private: - const Gentoo::UsersPrx prx1; + const Gentoo::UsersPrxPtr prx1; }; // Route name: verification @@ -89,20 +87,16 @@ namespace GentooBrowse { class verification : public IceSpider::IRouteHandler { public: verification(const IceSpider::Core *) : - IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/user/verification"), - _serializer_text_html("xslt/user-verification.xslt") + IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/user/verification") { - addRouteSerializer({ "text", "html" }, &_serializer_text_html); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/user-verification.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - PageBasePtr p = new PageBase(); - request->response(this, p); + request->response(this, std::make_shared<PageBase>()); } - - private: - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; }; class verificationHandler { @@ -119,13 +113,13 @@ namespace GentooBrowse { auto s = prx0->createSession(); s->variables[USERID] = boost::lexical_cast<std::string>(user->userid); prx0->updateSession(s); - request->setCookie(SESSIONID, s->id, IceUtil::None, "/"); - request->responseRedirect("/user/home", "Verified, welcome!"); + request->setCookie(SESSIONID, s->id, IceUtil::None, "/"s); + request->responseRedirect("/user/home", "Verified, welcome!"s); } private: - const IceSpider::SessionManagerPrx prx0; - const Gentoo::UsersPrx prx1; + const IceSpider::SessionManagerPrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; }; // Route name: verification post @@ -188,28 +182,22 @@ namespace GentooBrowse { IceSpider::IRouteHandler(IceSpider::HttpMethod::GET, "/user/home"), common(core), prx0(core->getProxy<IceSpider::SessionManager>()), - prx1(core->getProxy<Gentoo::Users>()), - _serializer_text_html("xslt/user-home.xslt") - { - addRouteSerializer({ "text", "html" }, &_serializer_text_html ); - } - - ~home() + prx1(core->getProxy<Gentoo::Users>()) { - removeRouteSerializer({ "text", "html" }); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/user-home.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - PageBasePtr p = new PageBase(); + PageBasePtr p = std::make_shared<PageBase>(); addUser(request, p); request->response(this, p); } private: - const IceSpider::SessionManagerPrx prx0; - const Gentoo::UsersPrx prx1; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; + const IceSpider::SessionManagerPrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; }; // Route name: tracked @@ -222,33 +210,27 @@ namespace GentooBrowse { common(core), prx0(core->getProxy<IceSpider::SessionManager>()), prx1(core->getProxy<Gentoo::Users>()), - prx2(core->getProxy<Gentoo::Portage>()), - _serializer_text_html("xslt/user-tracked.xslt") - { - addRouteSerializer({ "text", "html" }, &_serializer_text_html); - } - - ~tracked() + prx2(core->getProxy<Gentoo::Portage>()) { - removeRouteSerializer({ "text", "html" }); + addRouteSerializer({ "text", "html" }, + std::make_shared<IceSpider::XsltStreamSerializer::IceSpiderFactory>("xslt/user-tracked.xslt")); } void execute(IceSpider::IHttpRequest * request) const { - PopularPtr u = new Popular(); - auto _ar_c = prx2->begin_getAllCategories(request->getContext()); + PopularPtr u = std::make_shared<Popular>(); + auto _ar_c = prx2->getAllCategoriesAsync(request->getContext()); addUser(request, u); - auto _ar_p = prx2->begin_getUserTrackedPackages(u->user->userid, request->getContext()); - u->categories = prx2->end_getAllCategories(_ar_c); - u->packages = prx2->end_getUserTrackedPackages(_ar_p); + auto _ar_p = prx2->getUserTrackedPackagesAsync(u->user->userid, request->getContext()); + u->categories = _ar_c.get(); + u->packages = _ar_p.get(); request->response(this, u); } private: - const IceSpider::SessionManagerPrx prx0; - const Gentoo::UsersPrx prx1; - const Gentoo::PortagePrx prx2; - IceSpider::XsltStreamSerializer::IceSpiderFactory _serializer_text_html; + const IceSpider::SessionManagerPrxPtr prx0; + const Gentoo::UsersPrxPtr prx1; + const Gentoo::PortagePrxPtr prx2; }; // Route name: logout @@ -264,12 +246,12 @@ namespace GentooBrowse { void execute(IceSpider::IHttpRequest * request) const { prx0->destroySession(*request->getCookieParam<std::string>(SESSIONID)); - request->setCookie(SESSIONID, std::string(), IceUtil::None, "/", false, 0); - request->responseRedirect("/", "Logged out"); + request->setCookie(SESSIONID, std::string(), IceUtil::None, "/"s, false, 0); + request->responseRedirect("/", "Logged out"s); } private: - const IceSpider::SessionManagerPrx prx0; + const IceSpider::SessionManagerPrxPtr prx0; }; @@ -8,7 +8,6 @@ import toolset ; type.register SLICE : ice ; feature slicer : no yes pure ; -feature allow-ice : no yes ; feature ice-visibility : public hidden ; class slice-scanner : common-scanner @@ -29,27 +28,24 @@ generators.register-standard slice.slicer.pure : SLICE : CPP(slicer-%) : <slicer toolset.flags slice.slice2cpp INCLUDES <include> ; toolset.flags slice.slice2cpp DLLEXPORT <ice-visibility>public : --dll-export JAM_DLL_PUBLIC ; -toolset.flags slice.slice2cpp ALLOWICE <allow-ice>yes : --ice ; toolset.flags slice.slicer INCLUDES <include> ; toolset.flags slice.slicer DLLEXPORT <ice-visibility>public : --dll-export JAM_DLL_PUBLIC ; -toolset.flags slice.slicer ALLOWICE <allow-ice>yes : --ice ; toolset.flags slice.slicer.pure INCLUDES <include> ; -toolset.flags slice.slicer.pure ALLOWICE <allow-ice>yes : --ice ; actions slice.slice2cpp { - slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) $(ALLOWICE[1]) + slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) } actions slice.slicer { - slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) $(ALLOWICE[1]) - slicer -I"$(INCLUDES)" $(2) $(1[2]) $(ALLOWICE[1]) + slice2cpp -I"$(INCLUDES)" --checksum --output-dir $(1[1]:D) $(2) $(DLLEXPORT) + slicer -I"$(INCLUDES)" $(2) $(1[2]) } actions slice.slicer.pure { - slicer -I"$(INCLUDES)" $(2) $(1[1]) $(ALLOWICE[1]) + slicer -I"$(INCLUDES)" $(2) $(1[1]) } IMPORT $(__name__) : slice.slice2cpp : : slice.slice2cpp ; |