// file : mod/mod-repository-root.hxx -*- C++ -*- // license : MIT; see accompanying LICENSE file #ifndef MOD_MOD_REPOSITORY_ROOT_HXX #define MOD_MOD_REPOSITORY_ROOT_HXX #include #include #include #include namespace brep { class packages; class package_details; class package_version_details; class repository_details; class build_task; class build_result; class build_force; class build_log; class builds; class build_configs; class submit; class ci; class repository_root: public handler { public: repository_root (); // Copy constructible-only type. // // Create a shallow copy (handling instance) if initialized and a deep // copy (context exemplar) otherwise. // explicit repository_root (const repository_root&); private: virtual bool handle (request&, response&); virtual const cli::options& cli_options () const {return options::repository_root::description ();} virtual option_descriptions options (); virtual void init (const name_values&); virtual void init (cli::scanner&); virtual void version (); private: shared_ptr packages_; shared_ptr package_details_; shared_ptr package_version_details_; shared_ptr repository_details_; shared_ptr build_task_; shared_ptr build_result_; shared_ptr build_force_; shared_ptr build_log_; shared_ptr builds_; shared_ptr build_configs_; shared_ptr submit_; shared_ptr ci_; shared_ptr options_; // Sub-handler the request is dispatched to. Initially is NULL. It is set // by the first call to handle() to a deep copy of the selected exemplar. // The subsequent calls of handle() (that may take place after the retry // exception is thrown) will use the existing handler instance. // unique_ptr handler_; }; } #endif // MOD_MOD_REPOSITORY_ROOT_HXX