blob: 64eb280cbb66d0ab2fbc07bdd08b4ecfff860cbc [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef RMAD_STATE_HANDLER_STATE_HANDLER_MANAGER_H_
#define RMAD_STATE_HANDLER_STATE_HANDLER_MANAGER_H_
#include <map>
#include <base/memory/scoped_refptr.h>
#include "rmad/state_handler/base_state_handler.h"
namespace rmad {
class JsonStore;
class StateHandlerManager {
public:
explicit StateHandlerManager(scoped_refptr<JsonStore> json_store);
~StateHandlerManager() = default;
void RegisterStateHandler(scoped_refptr<BaseStateHandler> handler);
void RegisterStateHandlers();
scoped_refptr<BaseStateHandler> GetStateHandler(
RmadState::StateCase state) const;
private:
std::map<RmadState::StateCase, scoped_refptr<BaseStateHandler>>
state_handler_map_;
scoped_refptr<JsonStore> json_store_;
};
} // namespace rmad
#endif // RMAD_STATE_HANDLER_STATE_HANDLER_MANAGER_H_