| // Copyright 2019 The Fuchsia 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 COBALT_LOGGER_CHANNEL_MAPPER_H_ |
| #define COBALT_LOGGER_CHANNEL_MAPPER_H_ |
| |
| #include <map> |
| #include <string> |
| #include <unordered_map> |
| #include <vector> |
| |
| #include "config/metric_definition.pb.h" |
| #include "third_party/statusor/statusor.h" |
| #include "util/protected_fields.h" |
| |
| namespace cobalt { |
| namespace logger { |
| |
| // ChannelMapper is used to for mapping a channel string to a ReleaseStage enum |
| // value. |
| class ChannelMapper { |
| public: |
| // Constructs an instance of ChannelMapper using the provided data. |
| // |
| // |channel_map| A mapping from ReleaseStage to an array of channel names |
| // that should map to that ReleaseStage. All unmatched channels will map to |
| // ReleaseStage::GA. If a channel is listed for multiple ReleaseStages, only |
| // the first encountered ReleaseStage will be used. |
| explicit ChannelMapper( |
| std::map<ReleaseStage, std::vector<std::string>> channel_map); |
| |
| // Constructs an instance of ChannelMapper in which any of the given channels |
| // map to ReleaseStage::DEBUG and all other channels map to ReleaseStage::GA. |
| // |
| // |debug_channels| A list of channel names that should be mapped to |
| // ReleaseStage::DEBUG. |
| explicit ChannelMapper(std::vector<std::string> debug_channels); |
| |
| ReleaseStage ToReleaseStage(const std::string &channel); |
| |
| private: |
| const std::unordered_map<std::string, ReleaseStage> release_stage_map_; |
| }; |
| |
| } // namespace logger |
| } // namespace cobalt |
| |
| #endif // COBALT_LOGGER_CHANNEL_MAPPER_H_ |