class IncludeChainInfo
{
public:
IncludeChainInfo(){};
~IncludeChainInfo(){};
void AssignValue(const IncludeChainInfo &in)
{
schemaId = in.schemaId;
enableVADMangle = in.enableVADMangle;
chains
= in.chains;
};
IncludeChainInfo(IncludeChainInfo &in)
{
AssignValue(in);
};
IncludeChainInfo(const IncludeChainInfo &in) //if no here, will cause error when do _includeChainToInfo[marketConfigName] = info;
{
AssignValue(in);
};
IncludeChainInfo& operator=(const IncludeChainInfo& in)
{
AssignValue(in);
return *this;
};
int schemaId;
bool enableVADMangle;
std::set<std::string>chains;
};
std::map<std::string, IncludeChainInfo> _includeChainToInfo; //MarketName - IncludeChainInfo
void IncludeChainUniverse::AddNewIncludeChain(const std::string &marketConfigName, const IncludeChainInfo &info, const std::string &vadMangleString)
{
//
// Chain
//
auto &chains = info.chains;
for(auto iter = chains.begin(); iter != chains.end(); ++iter)
{
auto chainName = *iter;
if(info.enableVADMangle)
{
chainName = vadMangleString + chainName;
}
if(!_includeChainsByName.HasKey(chainName))
{
LOG_INFO("Include chain:" << chainName);
_includeChainsByName[chainName] = std::make_shared<input::chain::SimpleChainManualRequest>(chainName, info.schemaId);
_includeChainsByName[chainName]->Subscribe(input::chain::ChainManualEvent::ChainManualEvent_RicAdd, &IncludeChainUniverse::OnItemAdd, this);
_includeChainsByName[chainName]->Subscribe(input::chain::ChainManualEvent::ChainManualEvent_RicDel, &IncludeChainUniverse::OnItemDelete, this);
_includeChainToInfo[marketConfigName] = info; //here will be error if no const construtor
_includeChainsByName[chainName]->RequestChain();
}
}
}