int main(int argc, char *argv[]) { std::string procName = "GetOffers"; if (argc == 1) { printHelp(procName); return -1; } bool bWasError = false; LoginParams *loginParams = new LoginParams(argc, argv); SampleParams *sampleParams = new SampleParams(argc, argv); printSampleParams(procName, loginParams, sampleParams); if (!checkObligatoryParams(loginParams, sampleParams)) { delete loginParams; delete sampleParams; return -1; } IO2GSession *session = CO2GTransport::createSession(); SessionStatusListener *sessionListener = new SessionStatusListener(session, true, loginParams->getSessionID(), loginParams->getPin()); session->subscribeSessionStatus(sessionListener); bool bConnected = login(session, sessionListener, loginParams); if (bConnected) { ResponseListener *responseListener = new ResponseListener(session); responseListener->setInstrument(sampleParams->getInstrument()); session->subscribeResponse(responseListener); O2G2Ptr<IO2GLoginRules> loginRules = session->getLoginRules(); if (loginRules) { O2G2Ptr<IO2GResponse> response = NULL; if (loginRules->isTableLoadedByDefault(Offers)) { response = loginRules->getTableRefreshResponse(Offers); if (response) responseListener->printOffers(session, response, ""); } else { O2G2Ptr<IO2GRequestFactory> requestFactory = session->getRequestFactory(); if (requestFactory) { O2G2Ptr<IO2GRequest> offersRequest = requestFactory->createRefreshTableRequest(Offers); responseListener->setRequestID(offersRequest->getRequestID()); session->sendRequest(offersRequest); if (responseListener->waitEvents()) { response = responseListener->getResponse(); if (response) responseListener->printOffers(session, response, ""); } else { std::cout << "Response waiting timeout expired" << std::endl; bWasError = true; } } } // Do nothing 10 seconds, let offers print Sleep(10000); std::cout << "Done!" << std::endl; } else { std::cout << "Cannot get login rules" << std::endl; bWasError = true; } session->unsubscribeResponse(responseListener); responseListener->release(); logout(session, sessionListener); } else { bWasError = true; } session->unsubscribeSessionStatus(sessionListener); sessionListener->release(); session->release(); delete loginParams; delete sampleParams; if (bWasError) return -1; return 0; }