45 constexpr int64_t limit = (std::numeric_limits<int32_t>::max)();
47 return static_cast<int32_t
>((splitmix64(ticks) % limit) + 1);
51 static uint64_t splitmix64(uint64_t x)
noexcept
54 x += 0x9e3779b97f4a7c15ULL;
55 x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9ULL;
56 x = (x ^ (x >> 27)) * 0x94d049bb133111ebULL;
69 request->clientId(clientId);
71 auto users = request->users(1);
72 users[0].userId(userId);
81 request->originatorUserId(traderId);
82 request->directElectronicAccess(BooleanEnum::True);
83 request->tradingCapacity(TradingCapacityEnum::DEAL);
84 request->liquidityProvision(BooleanEnum::True);
85 request->commodityDerivIndicator(BooleanEnum::False);
86 request->investmentDecision(87657);
87 request->executionDecision(87657);
90 request->rawData(traderPwd);
99 request->originatorUserId(traderId);
108 request->originatorUserId(traderId);
110 request->directElectronicAccess(
nullOpt);
111 request->tradingCapacity(
nullOpt);
112 request->liquidityProvision(
nullOpt);
113 request->commodityDerivIndicator(
nullOpt);
114 request->investmentDecision(
nullOpt);
115 request->executionDecision(
nullOpt);
116 request->clientIdCode(
nullOpt);
117 request->customerAccountRefId(
nullOpt);
119 request->side(SideEnum::Buy);
120 request->ordType(OrderTypeEnum::Market);
121 request->timeInForce(TimeInForceEnum::Day);
124 request->orderQty(1000000000);
125 request->symbol(5884693);
129 request->onBehalfOfSubId(
"DAU|DAU");
130 request->onBehalfOfLocationId(
"DAU|DAU");
131 request->onBehalfOfCompId(
"DAU|DAU");
132 request->clearingFirm(649);
133 request->clearingAccount(
"TEST");
134 request->selfMatchPreventionId(
nullOpt);
135 request->mifidId(10);
144 std::istringstream ss(s);
153 ONIXS_ICEBOE_NAMESPACE::Threading::ThisThread::priority(THREAD_PRIORITY_ABOVE_NORMAL);
156 session->receivingThreadPriority(THREAD_PRIORITY_ABOVE_NORMAL);
158 const int policy = SCHED_RR;
164 session->receivingThreadPolicy(policy);
166 catch (
const std::exception&)
168 std::cerr <<
"\nWARNING: Cannot change the scheduling policy to " << policy <<
169 ", it requires root permissions, so you either have to be root or run it with sudo." << std::endl;
173 return std::shared_ptr<void>{
nullptr, [](
void*)
176 ONIXS_ICEBOE_NAMESPACE::Threading::ThisThread::policy(SCHED_OTHER);
183 std::ostream& o,
size_t numberOfMessages,
size_t intervalBetweenSending,
size_t warmupInterval,
SessionStorageType::Enum storageType)
185 o <<
"\n\n\n****" << std::endl;
187 o << std::endl <<
"Benchmark Parameters: numberOfMessages=" << numberOfMessages <<
"; intervalBetweenSending(μSec)=" << intervalBetweenSending
188 <<
"; warmupInterval(μSec)=" << warmupInterval
195 return std::unique_ptr<Session>{
new Session(sessionType, settings, listener, storageType,
nullptr, {})};
201 return std::unique_ptr<Session>{
new Session(stack, sessionType, settings, listener, storageType,
nullptr, {})};
207 return std::unique_ptr<Session>{
new Session(factory, sessionType, settings, listener, storageType,
nullptr, {})};
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE
Contains the SimpleOpenFramingHeader, the SBE message, and the data buffer.
Ticks sinceEpoch() const noexcept
Session's network stack reactor interface.
static void policy(int policy)
Sets the scheduling policy for the current thread.
static MessageHolder< IPRequest > createIpRequest(int clientId, const std::string &userId)
static MessageHolder< NewOrderRequest > createOrder(const std::string &traderId)
static MessageHolder< TraderLogoutRequest > createTraderLogoutRequest(const std::string &traderId)
static MessageHolder< TraderLogonRequest > createTraderLogonRequest(const std::string &traderId, const std::string &traderPwd)
std::shared_ptr< void > setPriorityAndPolicy(Session *session=nullptr)
std::unique_ptr< Session > createSession(SessionType::Enum sessionType, SessionSettings settings, SessionListener *listener, SessionStorageType::Enum storageType)
void printBenchmarkSettings(std::ostream &o, size_t numberOfMessages, size_t intervalBetweenSending, size_t warmupInterval, SessionStorageType::Enum storageType)
T fromStr(const std::string &s)
static const char * toString(SessionStorageType::Enum)