123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- //
- // Created by huli on 2020/7/20.
- //
- #ifndef NNXX_TESTS_DISPATCH_MANAGER_H
- #define NNXX_TESTS_DISPATCH_MANAGER_H
- #include "../error_code/error_code.h"
- #include "../tool/singleton.h"
- #include "../tool/thread_condition.h"
- #include "../dispatch/carrier_base.h"
- #include <vector>
- #include <glog/logging.h>
- //调度管理模块
- class Dispatch_manager:public Singleton<Dispatch_manager>
- {
- // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
- friend class Singleton<Dispatch_manager>;
- public:
- //调度管理 的状态
- enum Dispatch_manager_status
- {
- E_DISPATCH_MANAGER_UNKNOW = 0, //未知
- E_DISPATCH_MANAGER_READY = 1, //准备,待机
- E_DISPATCH_MANAGER_STORE = 2, //正在存车
- E_DISPATCH_MANAGER_PICKUP = 3, //正在取车
- E_DISPATCH_MANAGER_FAULT = 10, //故障
- };
- //调度方向, 停车取车
- enum Dispatch_motion_direction
- {
- E_STORE_CAR =0, //停车, 出入口 -> 停车位
- E_PICKUP_CAR =1, //取车, 停车位 -> 出入口
- };
- private:
- // 父类的构造函数必须保护,子类的构造函数必须私有。
- Dispatch_manager();
- public:
- //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
- Dispatch_manager(const Dispatch_manager& other) = delete;
- Dispatch_manager& operator =(const Dispatch_manager& other) = delete;
- ~Dispatch_manager();
- public://API functions
- //调度管理 初始化
- Error_manager dispatch_manager_init();
- //调度管理 反初始化
- Error_manager dispatch_manager_uninit();
- //对外的接口函数,负责接受并处理任务单,
- Error_manager execute_task(Dispatch_manager::Dispatch_motion_direction dispatch_motion_direction);
- //检查状态
- Error_manager check_status();
- public://get or set member variable
- Dispatch_manager_status get_dispatch_manager_status();
- protected://member variable
- Dispatch_manager_status m_dispatch_manager_status; //调度管理 的状态
- // int m_carrier_number; //搬运器的数量, 默认3个
- // std::vector<Carrier_base*> m_carrier_vector; //搬运器的对象实例,内存由本类管理
- private:
- };
- #endif //NNXX_TESTS_DISPATCH_MANAGER_H
|