Apollo  6.0
Open source self driving car software
planner_dispatcher.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2018 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #pragma once
18 
19 #include <memory>
20 
24 
29 namespace apollo {
30 namespace planning {
31 
38  public:
39  PlannerDispatcher() = default;
40  virtual ~PlannerDispatcher() = default;
41 
42  virtual common::Status Init() {
44  return common::Status::OK();
45  }
46 
47  virtual std::unique_ptr<Planner> DispatchPlanner(
48  const PlanningConfig& planning_config,
49  const std::shared_ptr<DependencyInjector>& injector) = 0;
50 
51  protected:
52  void RegisterPlanners();
53 
55  PlannerType, Planner,
56  Planner* (*)(const std::shared_ptr<DependencyInjector>& injector)>
58 };
59 
60 } // namespace planning
61 } // namespace apollo
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
virtual common::Status Init()
Definition: planner_dispatcher.h:42
Planning module main class. It processes GPS and IMU as input, to generate planning info...
virtual std::unique_ptr< Planner > DispatchPlanner(const PlanningConfig &planning_config, const std::shared_ptr< DependencyInjector > &injector)=0
Implements a Factory design pattern with Register and Create methods.
Definition: factory.h:60
Planner is a base class for specific planners. It contains a pure virtual function Plan which must be...
Definition: planner.h:42
static Status OK()
generate a success status.
Definition: status.h:60
Defines the Factory class.
Definition: planner_dispatcher.h:37
A general class to denote the return status of an API call. It can either be an OK status for success...
Definition: status.h:43
common::util::Factory< PlannerType, Planner, Planner *(*)(const std::shared_ptr< DependencyInjector > &injector)> planner_factory_
Definition: planner_dispatcher.h:57