| #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_ |