Files
externals/linux/include/ccapi_cpp/bts_session_options.h
John Colvin 959b63f2f6 Tweak ccapi so we can selectively enable md services
Previously, every exchange was always enabled (reguardless of our md
config). This change allows us to skip non-trivial initialization for
exchanges we don't care about, such as host resolution.
2025-02-23 15:33:55 +00:00

43 lines
1.4 KiB
C++

#ifndef INCLUDE_CCAPI_CPP_BTS_SESSION_OPTIONS_H_
#define INCLUDE_CCAPI_CPP_BTS_SESSION_OPTIONS_H_
#include <type_traits>
namespace ccapi {
enum class BtsVenues {
NONE = 0,
BINANCE = 1,
BINANCE_COIN_FUTURES = 1 << 1,
BINANCE_US = 1 << 2,
BINANCE_USDS_FUTURES = 1 << 3,
COINBASE = 1 << 4,
DERIBIT = 1 << 5,
FTX = 1 << 6,
OKX = 1 << 7,
};
constexpr BtsVenues operator&(BtsVenues lhs, BtsVenues rhs) {
using IntT = std::underlying_type<BtsVenues>::type;
return static_cast<BtsVenues>(
static_cast<IntT>(lhs) & static_cast<IntT>(rhs));
}
class BtsSessionOptions {
public:
BtsVenues venues = BtsVenues::NONE;
#define BTS_VENUE_ENABLED(v) (venues & BtsVenues::v) == BtsVenues::v
constexpr bool enableBinance() { return BTS_VENUE_ENABLED(BINANCE); }
constexpr bool enableBinanceCoinFutures() { return BTS_VENUE_ENABLED(BINANCE_COIN_FUTURES); }
constexpr bool enableBinanceUs() { return BTS_VENUE_ENABLED(BINANCE_US); }
constexpr bool enableBinanceUsdsFutures() { return BTS_VENUE_ENABLED(BINANCE_USDS_FUTURES); }
constexpr bool enableCoinbase() { return BTS_VENUE_ENABLED(COINBASE); }
constexpr bool enableDeribit() { return BTS_VENUE_ENABLED(DERIBIT); }
constexpr bool enableFtx() { return BTS_VENUE_ENABLED(FTX); }
constexpr bool enableOkx() { return BTS_VENUE_ENABLED(OKX); }
#undef BTS_VENUE_ENABLED
};
} // namespace ccapi
#endif