GrpcPrint/PrintS/Config/bean/FavoriteCfg.cpp

70 lines
1.7 KiB
C++

#include "FavoriteCfg.h"
#include "BaseConfig.h"
FavoriteCfg::FavoriteCfg()
{
}
FavoriteCfg::~FavoriteCfg()
{}
void FavoriteCfg::GetUpdateSql(std::vector<std::string>& ups)
{
char buffer[512];
string strtemp = "INSERT INTO %s(%s,%s,%s) VALUES('%s',";
sprintf_s(buffer, sizeof(buffer), strtemp.c_str(),
BaseConfig::TABLE_NAME.c_str(),
BaseConfig::FIELD_CONFIG_NAME.c_str(),
BaseConfig::FIELD_CONFIG_CODE.c_str(),
BaseConfig::FIELD_CONFIG_VALUE.c_str(),
FavoriteCfg::CONFIG_NAME.c_str()
);
string strsql = string(buffer) + "'%s','%s')";
std::map<std::string, std::string>::iterator it;
for (it = mFavoriteMap.begin(); it != mFavoriteMap.end(); it++)
{
sprintf_s(buffer, sizeof(buffer), strsql.c_str(),
it->first.c_str(),
it->second.c_str());
ups.push_back(buffer);
}
}
void FavoriteCfg::Add(std::string name, std::string value)
{
mFavoriteMap[name] = value;
}
void FavoriteCfg::UpdateSub(const ReadData& rd) {
{
std::unique_lock<std::shared_mutex> lock(m_mtx); //写锁
if (rd.handleType == UPDATE) {
mFavoriteMap[rd.nameKey] = rd.strValue;
m_baseMp[rd.nameKey]->SetValue(rd.strValue);
}
else if (rd.handleType == ADD) {
if (mFavoriteMap.find(rd.nameKey) == mFavoriteMap.end()) {
mFavoriteMap[rd.nameKey] = rd.strValue;
m_baseMp[rd.nameKey] = new StrData(rd.nameKey, u8"", rd.strValue);
}
else {
mFavoriteMap[rd.nameKey] = rd.strValue;
m_baseMp[rd.nameKey]->SetValue(rd.strValue);
}
}
else if (rd.handleType == DEL) {
if (mFavoriteMap.find(rd.nameKey) != mFavoriteMap.end()) {
mFavoriteMap.erase(rd.nameKey);
DelMp(rd.nameKey);
}
}
}
SendToClients(FAVORITECFGPARAM); //客户端更新后在发送给客户端
}
string FavoriteCfg::CONFIG_NAME ="Favorite";