blob: 092d4c21c4b3c60aca79f5b1fbefe76e52b106ab [file] [log] [blame]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_HFT_SUBSCRIPTION_MANAGER_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_HFT_SUBSCRIPTION_MANAGER_H_
#include <string>
#include "absl/functional/any_invocable.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "tlbmc/types/payload.proto.h"
#include "tlbmc/types/subscription_params.proto.h"
namespace milotic_hft {
class SubscriptionManager {
public:
using SubscriptionId = std::string;
virtual ~SubscriptionManager() = default;
// Adds a new subscription to the manager.
// `on_data_callback` will be called when new data is available to be exported
// to the subscriber.
virtual absl::StatusOr<SubscriptionId> AddSubscription(
const SubscriptionParams& params,
absl::AnyInvocable<void(Payload&&)> on_data_callback) = 0;
virtual absl::Status Unsubscribe(const SubscriptionId& sub_id) = 0;
};
} // namespace milotic_hft
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_HFT_SUBSCRIPTION_MANAGER_H_