blob: d788a473a1546442ce62406180cb7a0efcbd5196 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_INVALIDATION_PUBLIC_TOPIC_DATA_H_
#define COMPONENTS_INVALIDATION_PUBLIC_TOPIC_DATA_H_
#include <string>
#include "components/invalidation/public/invalidation_export.h"
#include "components/invalidation/public/invalidation_util.h"
namespace invalidation {
// Represents invalidation topic concept: A "namespace" or "channel" of
// messages that clients can subscribe to. For Sync, they correspond to data
// types.
// TODO(crbug.com/1029698): rename to Topic.
class INVALIDATION_EXPORT TopicData {
public:
TopicData(const std::string& name, bool is_public);
TopicData(const TopicData& other);
TopicData(TopicData&& other);
TopicData& operator=(const TopicData& other);
TopicData& operator=(TopicData&& other);
// A public name of the topic (i.e. it's always not GAIA-keyed).
std::string name;
// A topic can be either private (i.e. GAIA-keyed) or public. For private
// topics, a unique ID derived from the user's GAIA ID is appended to the
// topic name to make it unique (though this is an implementation detail
// which is hidden from clients).
bool is_public;
};
INVALIDATION_EXPORT bool operator==(const TopicData& lhs, const TopicData& rhs);
INVALIDATION_EXPORT bool operator!=(const TopicData& lhs, const TopicData& rhs);
INVALIDATION_EXPORT bool operator<(const TopicData& lhs, const TopicData& rhs);
INVALIDATION_EXPORT std::string ToString(const TopicData& topic_data);
// TDOO(crbug.com/1029698): delete this function together with legacy topic
// datatypes.
Topics ConvertTopicSetToLegacyTopicMap(const std::set<TopicData>& topics);
} // namespace invalidation
#endif // COMPONENTS_INVALIDATION_PUBLIC_TOPIC_DATA_H_