35int main(
int argc,
char * argv[])
40 > cfg{
"ExternalThreadMode", argc, argv};
58 const auto bgwSession= std::make_unique<BgwSession>(stack, settings, &listener, cfg.storage());
59 const auto connectTask = bgwSession->connectAsync(bgwCredentials);
61 while (!connectTask.is_ready())
69 std::clog <<
"\nPress <Ctrl+C> to disconnect the BGW session and terminate the application." << std::endl;
76 const auto disconnectTask = bgwSession->disconnectAsync(
"The BGW session is disconnected");
78 while (!disconnectTask.is_ready() || !stack.
isQuiescent())
81 catch(
const std::exception & ex)
83 std::cerr <<
"\nEXCEPTION: " << ex.what() << std::endl;
#define ONIXS_ICEBOE_NAMESPACE
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE
int main(int argc, char *argv[])
A high-level wrapper over the TCP standard stack.
ONIXS_ICEBOE_FORCEINLINE void dispatchEvents() override
Processes events on a stack and performs the necessary handling.
ONIXS_ICEBOE_FORCEINLINE bool isQuiescent() const override
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::promise< void > traderLoggedOn
std::pair< std::unique_ptr< GatewayEmulatorThread< BusSessionGatewayListener > >, std::unique_ptr< GatewayEmulatorThread< GatewayListener > > > createEmulator(const SessionSettings &settings, const ConnectivityConfiguration &cfg, bool tcpDirect=false)
BgwCredentials receiveBgwCredentials(SessionSettings settings, std::string host, Port port)
SessionSettings fillSettings(const LogonConfiguration &logonCfg, const ConnectivityConfiguration &connCfg, const SettingsConfiguration &settingsCfg)
std::future< T > wait(Stack &stack, std::promise< T > &promise, std::chrono::seconds timeout=std::chrono::seconds{30})
@ External
Session events are handled by rolling an event loop in a user thread.
static ONIXS_ICEBOE_FORCEINLINE bool interruptDetected() noexcept
static void manageSignals() noexcept