int main(int argc, char *argv[]) { std::string procName = "JoinNewGroup"; 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)) return -1; IO2GSession *session = CO2GTransport::createSession(); int iContingencyGroupType = 1; // OCO group SessionStatusListener *sessionListener = new SessionStatusListener(session, true, loginParams->getSessionID(), loginParams->getPin()); session->subscribeSessionStatus(sessionListener); bool bConnected = login(session, sessionListener, loginParams); if (bConnected) { bool bIsAccountEmpty = !sampleParams->getAccount() || strlen(sampleParams->getAccount()) == 0; O2G2Ptr<IO2GAccountRow> account = getAccount(session, sampleParams->getAccount()); ResponseListener *responseListener = new ResponseListener(session); session->subscribeResponse(responseListener); if (account) { if (bIsAccountEmpty) { sampleParams->setAccount(account->getAccountID()); std::cout << "Account: " << sampleParams->getAccount() << std::endl; } std::vector<std::string> orderIDs(2); orderIDs[0] = sampleParams->getPrimaryID(); orderIDs[1] = sampleParams->getSecondaryID(); for (size_t i=0; i < orderIDs.size(); ++i) { if (!isOrderExists(session, sampleParams->getAccount(), orderIDs[i].c_str(), responseListener)) { std::cout << "Order '" << orderIDs[i] << "' does not exist" << std::endl; bWasError = true; } } if (!bWasError) { O2G2Ptr<IO2GRequest> request = joinToNewGroupRequest(session, sampleParams->getAccount(), orderIDs, iContingencyGroupType); if (request) { responseListener->setRequestID(request->getRequestID()); responseListener->setOrderIDs(orderIDs); session->sendRequest(request); if (responseListener->waitEvents()) { std::cout << "Done!" << std::endl; } else { std::cout << "Response waiting timeout expired" << std::endl; bWasError = true; } } else { std::cout << "Cannot create request" << std::endl; bWasError = true; } } } else { std::cout << "No valid accounts" << std::endl; bWasError = true; } session->unsubscribeResponse(responseListener); responseListener->release(); logout(session, sessionListener); } else { bWasError = true; } session->unsubscribeSessionStatus(sessionListener); sessionListener->release(); session->release(); if (bWasError) return -1; return 0; }