AREXPORT void ArClientHandlerConfig::saveConfigToServer( ArConfig *config, const std::set<std::string, ArStrCaseCmpOp> *ignoreTheseSections) { //ArConfigArg param; ArClientArg clientArg; ArNetPacket sending; ArLog::log(ArLog::Normal, "%sSaving config to server", myLogPrefix.c_str()); myDataMutex.lock(); std::list<ArConfigSection *> *sections = config->getSections(); for (std::list<ArConfigSection *>::iterator sIt = sections->begin(); sIt != sections->end(); sIt++) { ArConfigSection *section = (*sIt); // if we're ignoring sections and we're ignoring this one, then // don't send it if (ignoreTheseSections != NULL && (ignoreTheseSections->find(section->getName()) != ignoreTheseSections->end())) { ArLog::log(ArLog::Verbose, "Not sending section %s", section->getName()); continue; } sending.strToBuf("Section"); sending.strToBuf(section->getName()); std::list<ArConfigArg> *params = section->getParams(); for (std::list<ArConfigArg>::iterator pIt = params->begin(); pIt != params->end(); pIt++) { ArConfigArg ¶m = (*pIt); if (!clientArg.isSendableParamType(param)) { continue; } sending.strToBuf(param.getName()); clientArg.argTextToBuf(param, &sending); } // end for each param } // end for each section myDataMutex.unlock(); myClient->requestOnce("setConfig", &sending); }
AREXPORT void ArServerHandlerConfig::getConfigDefaults(ArServerClient *client, ArNetPacket *packet) { char sectionRequested[512]; sectionRequested[0] = '\0'; ArNetPacket sending; if (myDefault == NULL) { ArLog::log(ArLog::Normal, "ArServerHandlerConfig::getConfigDefaults: No default config to get"); client->sendPacketTcp(&sending); return; } myConfigMutex.lock(); // if we have a section name pick it up, otherwise we send everything if (packet->getDataReadLength() < packet->getDataLength()) packet->bufToStr(sectionRequested, sizeof(sectionRequested)); //ArConfigArg param; ArClientArg clientArg; if (sectionRequested[0] == '\0') ArLog::log(ArLog::Normal, "Sending all defaults to client"); else ArLog::log(ArLog::Normal, "Sending defaults for section '%s' to client", sectionRequested); std::list<ArConfigSection *> *sections = myDefault->getSections(); for (std::list<ArConfigSection *>::iterator sIt = sections->begin(); sIt != sections->end(); sIt++) { ArConfigSection *section = (*sIt); if (section == NULL) { continue; // Should never happen... } // if we're not sending them all and not in the right section just cont if (sectionRequested[0] != '\0' && ArUtil::strcasecmp(sectionRequested, section->getName()) != 0) { continue; } sending.strToBuf("Section"); sending.strToBuf(section->getName()); std::list<ArConfigArg> *params = section->getParams(); for (std::list<ArConfigArg>::iterator pIt = params->begin(); pIt != params->end(); pIt++) { ArConfigArg ¶m = (*pIt); if (!clientArg.isSendableParamType(param)) { continue; } sending.strToBuf(param.getName()); clientArg.argTextToBuf(param, &sending); } // end for each param } // end for each section myConfigMutex.unlock(); client->sendPacketTcp(&sending); }