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.
43 lines
1.4 KiB
C++
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
|