blob: 83174d8d6702ec808ac9d42f502c7ac2073de003 [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 "payload.pb.h"
#include "subscription_params.pb.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_