CConnectivityAgentProxy::CConnectivityAgentProxy() : CThread("CallbackTread"), mpIpc(NULL) { LOG4CPLUS_TRACE_METHOD(logger, __PRETTY_FUNCTION__); static char const* const arr[] = { gpCA_UNIX_SOCK_PATH, first_lsn_path, second_lsn_path }; for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) { if (arr[i]) { LOG4CPLUS_INFO(logger, "Trying to connect to connectivity agent using address " + std::string(arr[i])); CIpc* pipc = new CIpc(arr[i], *this); CError err = pipc->connect(); if (err.isNoError()) { mpIpc = pipc; break; } else { LOG4CPLUS_WARN(logger, static_cast<std::string>(err)); delete pipc; } } } if (!mpIpc) { LOG4CPLUS_ERROR(logger, "Unable to connect to connectivity agent"); } start(); }
BaseError sendMessage(UInt8 const* pPayload, UInt32 payloadSize, UInt8* const pResponseBuffer, UInt32& bufferSize) { bool con_res = connect(); assert(con_res); BaseError err = mpIpc->request(id++, pPayload, payloadSize, pResponseBuffer, bufferSize); mpIpc->disconnect(); return err; }
void sendMessage(UInt8 const* pPayload, UInt32 payloadSize, UInt8* const pResponseBuffer, UInt32& bufferSize) { bool con_res = connect(); assert(con_res); CError err = mpIpc->request(id++, pPayload, payloadSize, pResponseBuffer, bufferSize); if (err.isNoError()) { } else { } mpIpc->disconnect(); }
bool connect() { BaseError err = BaseError::NoError(); if (mpIpc == NULL) { char const * addr; if (gpNEGOTIATOR_IPC_ADDR != NULL) { addr = gpNEGOTIATOR_IPC_ADDR; } else { addr = ipcNegotiatorId; } mpIpc = new CIpc(addr, *this); } for (int tryNum = 1; tryNum <= MAX_TRY_COUNT; ++tryNum) { err = mpIpc->connect(); if (err.isNoError()) { return true; } sleep(2); } return false; }