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.
Session(SessionType::Enum sessionType, const SessionSettings &settings, SessionListener *listener, SessionStorageType::Enum storageType=SessionStorageType::FileBased, SessionStorage *storage=nullptr, const std::string &customKey={}, const Utils::BuildInfo &=Utils::consumerBuildInfo())
Constructor.
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)