ATLAS Offline Software
Loading...
Searching...
No Matches
CoralCrestManager Class Reference

#include <CoralCrestManager.h>

Collaboration diagram for CoralCrestManager:

Public Member Functions

 CoralCrestManager (const std::string &crest_path, const std::string &crestTag)
void loadTagInfo ()
std::string getFolderDescription ()
Crest::TagDto & getTagDto ()
std::string getPayloadSpec ()
IOVDbNamespace::FolderType determineFolderType ()
std::pair< std::vector< cool::ChannelId >, std::vector< std::string > > getChannelList ()
Crest::TagInfoDto getTagInfoDto ()
bool isVectorPayload ()
coral::AttributeListSpecification * getAttributeListSpec ()
std::vector< std::pair< cool::ValidityKey, std::string > > getIovsForTag (uint64_t since, uint64_t until)
std::vector< uint64_t > loadPayloadForHash (uint64_t since, const std::string &hash)
std::vector< coral::AttributeList > getVectorPayload (coral::AttributeListSpecification *pSpec, const std::string &chId)
std::string dumpPayload (cool::ValidityKey since)
coral::AttributeList getPayload (coral::AttributeListSpecification *pSpec, const std::string &chId)
void selectIov (cool::ValidityKey since)
std::vector< std::string > channelIds (cool::ValidityKey since)

Static Public Member Functions

static std::map< std::string, std::string > getGlobalTagMap (const std::string &crest_path, const std::string &globaltag)

Static Public Attributes

static const std::string prefix1 {"http://"}
static const std::string prefix2 {"https://"}

Private Member Functions

std::string parseTypeName (const std::string &description)
coral::AttributeList createAttributeList (coral::AttributeListSpecification *pSpec, nlohmann::json &j, const std::vector< std::pair< std::string, Crest::TypeId > > &tSpec)
std::pair< uint64_t, uint64_t > getIovInterval (const std::string &tag, const uint64_t since, const uint64_t until)
std::pair< uint64_t, uint64_t > getSinceUntilPair (std::vector< uint64_t > &v, const uint64_t since, const uint64_t until)
void initCrestContainer ()

Private Attributes

std::unique_ptr< Crest::CrestApiBase > m_crestCl
const std::string m_crestTag
std::optional< Crest::TagMetaDto > m_TagMeta
std::optional< Crest::TagDto > m_Tag
std::optional< bool > m_isVectorPayload
std::optional< Crest::CrestContainerm_crest_cont

Detailed Description

Definition at line 29 of file CoralCrestManager.h.

Constructor & Destructor Documentation

◆ CoralCrestManager()

CoralCrestManager::CoralCrestManager ( const std::string & crest_path,
const std::string & crestTag )

Definition at line 49 of file CoralCrestManager.cxx.

49 :m_crestTag(crestTag){ //AthMessaging("CoralCrestManager")
50 if(crest_path.length()==0)
51 return;
52 if (crest_path.starts_with(CoralCrestManager::prefix1) || crest_path.starts_with(CoralCrestManager::prefix2)){
53 size_t found = crest_path.find("api-v");
54 std::string correct_crest_path=crest_path;
55 if (found == std::string::npos)
56 correct_crest_path+="/api-v6.0";
57 m_crestCl = std::make_unique<Crest::CrestApi>(Crest::CrestApi(correct_crest_path));
58 }
59 else{
60 m_crestCl = std::make_unique<Crest::CrestApiFs>(Crest::CrestApiFs(false,crest_path));
61 }
62
63 }
static const std::string prefix1
std::unique_ptr< Crest::CrestApiBase > m_crestCl
static const std::string prefix2
const std::string m_crestTag

Member Function Documentation

◆ channelIds()

std::vector< std::string > CoralCrestManager::channelIds ( cool::ValidityKey since)

Definition at line 374 of file CoralCrestManager.cxx.

374 {
375 selectIov(since);
376 return m_crest_cont.value().channelIds();
377 }
std::optional< Crest::CrestContainer > m_crest_cont
void selectIov(cool::ValidityKey since)

◆ createAttributeList()

coral::AttributeList CoralCrestManager::createAttributeList ( coral::AttributeListSpecification * pSpec,
nlohmann::json & j,
const std::vector< std::pair< std::string, Crest::TypeId > > & tSpec )
private

Definition at line 379 of file CoralCrestManager.cxx.

379 {
380 coral::AttributeList attr(*pSpec,true);
381 unsigned int s=attr.size();
382
383 json::const_iterator it = j.begin();
384 for (unsigned int i(0);i!=s;++i){
385 // cool::Record does not provide non-const access to AttributeList.
386 // But this is safe because we are filling a local instance.
387 auto & att = const_cast<coral::Attribute&>(attr[i]);
388 if (it == j.end()){
389 continue;
390 }
391 const auto thisVal = it.value();
392 ++it;
393
394 try{
395 if (thisVal.is_null()){
396 att.setNull();
397 continue;
398 }
399 cool::StorageType::TypeId typespec=cool::StorageType::Bool;
400 for(auto &p : tSpec){
401 if(p.first.compare(att.specification().name())==0){
402 auto pElement = Crest::s_typeToString.find(p.second);
403 if (pElement == Crest::s_typeToString.end()){
404 throw std::runtime_error("CoralCrestManager::createAttributeList: name not found.");
405 }
406 std::string str_spec = pElement ->second;
407 auto pTypespec = typeCorrespondance.find(str_spec);
408 if (pTypespec == typeCorrespondance.end()){
409 throw std::runtime_error("CoralCrestManager::createAttributeList: typespec not found.");
410 }
411 typespec=pTypespec->second;
412 break;
413 }
414 }
415 std::string strVal = to_string(thisVal);
416 if(strVal.size()>2&& strVal[0]=='"'&& strVal[strVal.size()-1]=='"')
417 strVal=strVal.substr(1,strVal.size()-2);
418
419 if((strVal.compare("NULL")==0||strVal.compare("null")==0)&&
420 (typespec==cool::StorageType::Bool || typespec==cool::StorageType::Int16 || typespec==cool::StorageType::UInt16
421 || typespec==cool::StorageType::Int32 || typespec==cool::StorageType::UInt32
422 || typespec==cool::StorageType::Int64 || typespec==cool::StorageType::UInt63
423 || typespec==cool::StorageType::Float || typespec==cool::StorageType::Double)){
424 att.setNull();
425 continue;
426 }
427 switch (typespec) {
428 case cool::StorageType::Bool:
429 {
430 const bool newVal=(strVal == "true");
431 att.setValue<bool>(newVal);
432 break;
433 }
434 case cool::StorageType::UChar:
435 {
436 const unsigned char newVal=std::stoul(strVal);
437 att.setValue<unsigned char>(newVal);
438 break;
439 }
440 case cool::StorageType::Int16:
441 {
442 const short newVal=std::stol(strVal);
443 att.setValue<short>(newVal);
444 break;
445 }
446 case cool::StorageType::UInt16:
447 {
448 const unsigned short newVal=std::stoul(strVal);
449 att.setValue<unsigned short>(newVal);
450 break;
451 }
452 case cool::StorageType::Int32:
453 {
454 const int newVal=std::stoi(strVal);
455 att.setValue<int>(newVal);
456 break;
457 }
458 case cool::StorageType::UInt32:
459 {
460 const unsigned int newVal=std::stoull(strVal);
461 att.setValue<unsigned int>(newVal);
462 break;
463 }
464 case cool::StorageType::UInt63:
465 {
466 const unsigned long long newVal=std::stoull(strVal);
467 att.setValue<unsigned long long>(newVal);
468 break;
469 }
470 case cool::StorageType::Int64:
471 {
472 const long long newVal=std::stoll(strVal);
473 att.setValue< long long>(newVal);
474 break;
475 }
476 case cool::StorageType::Float:
477 {
478 const float newVal=std::stof(strVal);
479 att.setValue<float>(newVal);
480 break;
481 }
482 case cool::StorageType::Double:
483 {
484 const double newVal=std::stod(strVal);
485 att.setValue<double>(newVal);
486 break;
487 }
488 case cool::StorageType::String255:
489 case cool::StorageType::String4k:
490 case cool::StorageType::String64k:
491 case cool::StorageType::String16M:
492 case cool::StorageType::String128M:
493 {
494 att.setValue<std::string>(thisVal.get<std::string>());
495 break;
496 }
497 case cool::StorageType::Blob128M:
498 case cool::StorageType::Blob16M:
499 case cool::StorageType::Blob64k:
500 {
501 const auto &charVec = CxxUtils::base64_decode(strVal);
502 coral::Blob blob(charVec.size());
503 memcpy(blob.startingAddress(), charVec.data(), charVec.size());
504 att.setValue<coral::Blob>(blob);
505 break;
506 }
507 default:
508 {
509 std::string errorMessage("UNTREATED TYPE! " + std::to_string(typespec));
510 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
511 gLog << MSG::ERROR << "LoadPayloadForHash:" <<errorMessage<<endmsg;
512 throw std::runtime_error(errorMessage);
513 }
514 }
515 }
516 catch (json::exception& e){
517 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
518 gLog << MSG::ERROR << "Error CoralCrestManager::createAttributeList: "<<e.what()<<endmsg;
519 throw std::runtime_error(e.what());
520 }
521 }
522 return attr;
523 }
#define endmsg
static std::string to_string(const std::vector< T > &v)
IMessageSvc * getMessageSvc(bool quiet=false)
static const std::map< TypeId, std::string > s_typeToString
std::vector< unsigned char > base64_decode(const std::string &)
Definition base64.cxx:97
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ determineFolderType()

IOVDbNamespace::FolderType CoralCrestManager::determineFolderType ( )

Definition at line 98 of file CoralCrestManager.cxx.

98 {
99 Crest::TagInfoDto info = getTagInfoDto();
100 std::string folderDescription = info.getFolderDescription();
101 if (folderDescription.find("<coracool>") != std::string::npos) return IOVDbNamespace::CoraCool;
102 const std::string typeName = parseTypeName(folderDescription);
103 if (typeName=="CondAttrListVec"){
104 m_isVectorPayload = true;
106 }
107 m_isVectorPayload = false;
108 std::vector< std::pair<std::string,std::string> > spec= info.getPayloadSpec().getColumns();
109 std::vector< std::pair<std::string,std::string> > chs = info.getChannels().getChannels();
110 for (auto &p : spec){
111 if(p.first=="PoolRef" && p.second=="String4k"){
112 int id=std::stoll(chs[0].first);
113 if(chs.size()==1 && id==0)
115 else
117 }
118 }
119 if (typeName == "CondAttrListCollection") return IOVDbNamespace::AttrListColl;
121 }
std::optional< bool > m_isVectorPayload
std::string parseTypeName(const std::string &description)
Crest::TagInfoDto getTagInfoDto()

◆ dumpPayload()

std::string CoralCrestManager::dumpPayload ( cool::ValidityKey since)

Definition at line 298 of file CoralCrestManager.cxx.

298 {
299 m_crest_cont.value().selectIov(since);
301 std::stringstream res;
302 res<<"[";
303 std::vector<std::string> chIds = m_crest_cont.value().channelIds();
304 auto* pspec=getAttributeListSpec();
305 std::string sep="";
306 for (auto &ch : chIds){
307 res<<sep;
308 res<<IOVDbNamespace::s_openJson<<"\""<<ch<<"\" : ";
309 switch (ftype){
311 {
312 std::vector<coral::AttributeList> attr=getVectorPayload(pspec,ch);
313 res<<"[";
314 std::string sep2="";
315 for (const auto & vitr:attr){
317 if (sep2.empty()) sep2 =IOVDbNamespace::s_delimiterJson;
318 }
319 res<<"]";
320 break;
321 }
325 {
326 coral::AttributeList attr=getPayload(pspec,ch);
328 break;
329 }
331 {
332 coral::AttributeList attr=getPayload(pspec,ch);
333 std::ostringstream os;
334 attr[0].toOutputStream(os);
335 auto str=os.str();
336 const auto separatorPosition = str.find(colonDelimiter);
337 const std::string payloadOnly=str.substr(separatorPosition+3);
338 res<<"\""<<payloadOnly<<"\"";
339 break;
340 }
342 res<< " CoraCool";
343 break;
344 default:
345 res<<" a_data_value";
346 }
347 if (sep.empty()) sep=",";
349 }
350 res<<"]";
351 pspec->release();
352 return res.str();
353 }
std::pair< std::vector< unsigned int >, bool > res
IOVDbNamespace::FolderType determineFolderType()
std::vector< coral::AttributeList > getVectorPayload(coral::AttributeListSpecification *pSpec, const std::string &chId)
coral::AttributeList getPayload(coral::AttributeListSpecification *pSpec, const std::string &chId)
coral::AttributeListSpecification * getAttributeListSpec()
std::string jsonAttributeList(const coral::AttributeList &atrlist)
Produce a representation of a coral::AttributeList as a json string.
static const std::string s_delimiterJson
json standard delimiter ', '
static const std::string s_closeJson
json close tag, '}'
static const std::string s_openJson
json open tag, '{'

◆ getAttributeListSpec()

coral::AttributeListSpecification * CoralCrestManager::getAttributeListSpec ( )

Definition at line 179 of file CoralCrestManager.cxx.

179 {
180 Crest::TagInfoDto info = getTagInfoDto();
181 std::vector< std::pair<std::string,std::string> > spec_vec= info.getPayloadSpec().getColumns();
182 auto * spec = new coral::AttributeListSpecification();
183 for (auto &p : spec_vec){
184 auto it = typeCorrespondance.find(p.second);
185 if (it != typeCorrespondance.end()) {
186 spec->extend(p.first,cool::StorageType::storageType(it->second).cppType());
187 }
188 }
189 return spec;
190 }

◆ getChannelList()

std::pair< std::vector< cool::ChannelId >, std::vector< std::string > > CoralCrestManager::getChannelList ( )

Definition at line 165 of file CoralCrestManager.cxx.

165 {
166 if(!m_TagMeta.has_value())
167 loadTagInfo();
168 Crest::TagInfoDto info = getTagInfoDto();
169 std::vector<cool::ChannelId> list;
170 std::vector<std::string> names;
171 std::vector< std::pair<std::string,std::string> > res = info.getChannels().getChannels();
172 for (auto &p : res){
173 list.push_back(std::stoll(p.first));
174 names.push_back(p.second);
175 }
176 return std::make_pair(std::move(list), std::move(names));
177 }
std::optional< Crest::TagMetaDto > m_TagMeta
list(name, path='/')
Definition histSizes.py:38

◆ getFolderDescription()

std::string CoralCrestManager::getFolderDescription ( )

Definition at line 160 of file CoralCrestManager.cxx.

160 {
161 Crest::TagInfoDto info = getTagInfoDto();
162 return info.getFolderDescription();
163 }

◆ getGlobalTagMap()

std::map< std::string, std::string > CoralCrestManager::getGlobalTagMap ( const std::string & crest_path,
const std::string & globaltag )
static

Definition at line 65 of file CoralCrestManager.cxx.

65 {
66 std::unique_ptr<Crest::CrestApiBase> crestCl;
67 if (crest_path.starts_with(CoralCrestManager::prefix1) || crest_path.starts_with(CoralCrestManager::prefix2)){
68 size_t found = crest_path.find("api-v");
69 std::string correct_crest_path=crest_path;
70 if (found == std::string::npos)
71 correct_crest_path+="/api-v6.0";
72 crestCl.reset(new Crest::CrestApi(correct_crest_path));
73 }
74 else{
75 crestCl.reset(new Crest::CrestApiFs(true,crest_path));
76 }
77 std::map<std::string, std::string> tagmap;
78 try{
79 Crest::GlobalTagMapSetDto dto = crestCl->findGlobalTagMap(globaltag,"Trace");
80 for (const auto &tagMapDto : dto.getResources()){
81 tagmap[tagMapDto.getLabel()]=tagMapDto.getTagName();
82 }
83 } catch (std::exception & e){
84 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
85 gLog << MSG::ERROR << __FILE__<<":"<<__LINE__<< ": " << e.what() << " Cannot get a global tag map for " << globaltag<<endmsg;
86 }
87 return tagmap;
88 }

◆ getIovInterval()

std::pair< uint64_t, uint64_t > CoralCrestManager::getIovInterval ( const std::string & tag,
const uint64_t since,
const uint64_t until )
private

Definition at line 241 of file CoralCrestManager.cxx.

241 {
242 Crest::IovSetDto dto = m_crestCl->selectGroups(tag, 0, 10000, 0, "id.since:ASC");
243 std::vector<uint64_t> v = dto.getListSince();
244 v.push_back(cool::ValidityKeyMax); // added "infinity" as the last item 9223372036854775807
245 return getSinceUntilPair(v, since, until);
246 }
std::pair< uint64_t, uint64_t > getSinceUntilPair(std::vector< uint64_t > &v, const uint64_t since, const uint64_t until)

◆ getIovsForTag()

std::vector< std::pair< cool::ValidityKey, std::string > > CoralCrestManager::getIovsForTag ( uint64_t since,
uint64_t until )

Definition at line 248 of file CoralCrestManager.cxx.

248 {
250 int iovNumber = m_crestCl->getSize(m_crestTag);
251 std::vector<std::pair<cool::ValidityKey,std::string>> res;
252 Crest::IovSetDto dto;
253 if(iovNumber <=1000){
254 dto = m_crestCl->selectIovs(m_crestTag, 0, -1, 0, 10000, 0, "id.since:ASC");
255 }
256 else{
257 std::pair<uint64_t,uint64_t> ppt = getIovInterval(m_crestTag, since, until);
258 uint64_t s_time = ppt.first;
259 uint64_t u_time = ppt.second;
260
261 if (s_time == 0 && u_time == 0){ // data out of range
262 return res;
263 }
264 else {
265 dto = m_crestCl->selectIovs(m_crestTag, s_time, u_time, 0, 10000, 0, "id.since:ASC");
266 }
267 }
268 for (auto &p : dto.getResources()){
269 res.push_back(std::make_pair((cool::ValidityKey)p.getSince(),p.getPayloadHash()));
270 }
271 return res;
272 }
std::pair< uint64_t, uint64_t > getIovInterval(const std::string &tag, const uint64_t since, const uint64_t until)

◆ getPayload()

coral::AttributeList CoralCrestManager::getPayload ( coral::AttributeListSpecification * pSpec,
const std::string & chId )

Definition at line 355 of file CoralCrestManager.cxx.

355 {
356 nlohmann::json j=m_crest_cont.value().getPayloadChannel(chId.c_str());
357 return createAttributeList(pSpec,j,m_crest_cont.value().getMPayloadSpec());
358 }
coral::AttributeList createAttributeList(coral::AttributeListSpecification *pSpec, nlohmann::json &j, const std::vector< std::pair< std::string, Crest::TypeId > > &tSpec)

◆ getPayloadSpec()

std::string CoralCrestManager::getPayloadSpec ( )

Definition at line 156 of file CoralCrestManager.cxx.

156 {
157 return getTagInfoDto().getPayloadSpec().toJson().dump();
158 }

◆ getSinceUntilPair()

std::pair< uint64_t, uint64_t > CoralCrestManager::getSinceUntilPair ( std::vector< uint64_t > & v,
const uint64_t since,
const uint64_t until )
private

Definition at line 212 of file CoralCrestManager.cxx.

212 {
213 uint64_t new_since = 0;
214 uint64_t new_until = 0;
215
216 if (until < since){
217 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
218 gLog << MSG::ERROR << "Wrong since/until."<<endmsg;
219 return std::make_pair(0,0);
220 }
221 const std::size_t N = v.size();
222 std::size_t i = 0;
223 for (; i < N; ++i) {
224 if(v[i] <= since && since < v[i+1]){
225 new_since = v[i];
226 break;
227 }
228 }
229
230 for (; i < N; ++i) {
231 if(v[i] < until && until <= v[i+1]){
232 new_until = v[i+1];
233 break;
234 }
235 }
236
237 return std::make_pair(new_since,new_until);
238 }
constexpr std::size_t N

◆ getTagDto()

Crest::TagDto & CoralCrestManager::getTagDto ( )

Definition at line 149 of file CoralCrestManager.cxx.

149 {
150 if(!m_Tag.has_value()){
151 m_Tag = m_crestCl->findTag(m_crestTag);
152 }
153 return m_Tag.value();
154 }
std::optional< Crest::TagDto > m_Tag

◆ getTagInfoDto()

Crest::TagInfoDto CoralCrestManager::getTagInfoDto ( )

Definition at line 143 of file CoralCrestManager.cxx.

143 {
144 if(!m_TagMeta.has_value())
145 loadTagInfo();
146 return m_TagMeta.value().getTagInfoDto();
147 }

◆ getVectorPayload()

std::vector< coral::AttributeList > CoralCrestManager::getVectorPayload ( coral::AttributeListSpecification * pSpec,
const std::string & chId )

Definition at line 360 of file CoralCrestManager.cxx.

360 {
361 std::vector<coral::AttributeList> res;
362 nlohmann::json vecJ=m_crest_cont.value().getPayloadChannel(chId.c_str());
363 for (auto &p : vecJ){
364 coral::AttributeList att=createAttributeList(pSpec,p,m_crest_cont.value().getMPayloadSpec());
365 res.push_back(att);
366 }
367 return res;
368 }

◆ initCrestContainer()

void CoralCrestManager::initCrestContainer ( )
private

Definition at line 192 of file CoralCrestManager.cxx.

192 {
193 if(m_crest_cont.has_value())
194 return;
195 Crest::TagInfoDto info = getTagInfoDto();
196 Crest::TagDto tag = getTagDto();
198 if(tag.getObjectType()=="crest-json-multi-iov")
200 Crest::CrestContainer cr_cont(mId);
201 std::vector< std::pair<std::string,std::string> > spec= info.getPayloadSpec().getColumns();
202 for (auto &p : spec){
203 cr_cont.addColumn(p.first,p.second.c_str());
204 }
205 if(!m_isVectorPayload.has_value()) determineFolderType();
206 cr_cont.setVectorPayload(m_isVectorPayload.value());
207 m_crest_cont.emplace(cr_cont);
208 return;
209 }
Crest::TagDto & getTagDto()

◆ isVectorPayload()

bool CoralCrestManager::isVectorPayload ( )

Definition at line 123 of file CoralCrestManager.cxx.

123 {
124 if(!m_isVectorPayload.has_value())
126 return m_isVectorPayload.value();
127 }

◆ loadPayloadForHash()

std::vector< uint64_t > CoralCrestManager::loadPayloadForHash ( uint64_t since,
const std::string & hash )

Definition at line 274 of file CoralCrestManager.cxx.

274 {
276 std::string reply;
277 try{
278 // get payload from Crest server
279 reply = m_crestCl->getPayload(hash);
280 } catch (std::exception & e){
281 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
282 gLog << MSG::ERROR << __FILE__<<":"<<__LINE__<< ": "<<e.what()<<" while trying to find the payload"<<endmsg;
283 throw std::runtime_error(e.what());
284 }
285 try{
286 // parse payload according to type of payload and put it to CrestConteiner.
287 // Store only one value before 'since'.
288 // Returns a list of timestamp for which data has been loaded
289 return m_crest_cont.value().fromJson(since,reply);
290 } catch (std::exception & e){
291 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
292 gLog << MSG::ERROR << "LoadPayloadForHash:"<<e.what()<<" while trying to parse the payload. Since="<<since<<", hash="<<hash<<endmsg;
293 throw std::runtime_error(e.what());
294 }
295 }

◆ loadTagInfo()

void CoralCrestManager::loadTagInfo ( )

Definition at line 129 of file CoralCrestManager.cxx.

129 {
130 if(m_TagMeta.has_value()){
131 return;
132 }
133
134 try{
135 m_TagMeta = m_crestCl->findTagMeta(m_crestTag);
136 } catch (std::exception & e){
137 MsgStream gLog(Athena::getMessageSvc(), "CoralCrestManager");
138 gLog << MSG::ERROR << __FILE__<<":"<<__LINE__<< ": " << e.what() << " Cannot get a tag meta info " << m_crestTag<<endmsg;
139 }
140 return;
141 }

◆ parseTypeName()

std::string CoralCrestManager::parseTypeName ( const std::string & description)
private

Definition at line 90 of file CoralCrestManager.cxx.

90 {
91 std::string regex=R"delim(<typeName>\s*([^\s]+)\s*</typeName>)delim";
92 std::regex re(regex);
93 std::smatch typeMatch;
94 bool match=std::regex_search(description, typeMatch,re);
95 return (match) ? std::string(typeMatch[1]) : std::string("");
96 }
const std::regex re(r_e)
std::string description
glabal timer - how long have I taken so far?
Definition hcg.cxx:93
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition hcg.cxx:359
End of vector before end of string
Definition Arrayrep.cxx:228

◆ selectIov()

void CoralCrestManager::selectIov ( cool::ValidityKey since)

Definition at line 370 of file CoralCrestManager.cxx.

370 {
371 m_crest_cont.value().selectIov(since);
372 }

Member Data Documentation

◆ m_crest_cont

std::optional<Crest::CrestContainer> CoralCrestManager::m_crest_cont
private

Definition at line 74 of file CoralCrestManager.h.

◆ m_crestCl

std::unique_ptr<Crest::CrestApiBase> CoralCrestManager::m_crestCl
private

Definition at line 64 of file CoralCrestManager.h.

◆ m_crestTag

const std::string CoralCrestManager::m_crestTag
private

Definition at line 65 of file CoralCrestManager.h.

◆ m_isVectorPayload

std::optional<bool> CoralCrestManager::m_isVectorPayload
private

Definition at line 68 of file CoralCrestManager.h.

◆ m_Tag

std::optional<Crest::TagDto> CoralCrestManager::m_Tag
private

Definition at line 67 of file CoralCrestManager.h.

◆ m_TagMeta

std::optional<Crest::TagMetaDto> CoralCrestManager::m_TagMeta
private

Definition at line 66 of file CoralCrestManager.h.

◆ prefix1

const std::string CoralCrestManager::prefix1 {"http://"}
inlinestatic

Definition at line 31 of file CoralCrestManager.h.

31{"http://"};

◆ prefix2

const std::string CoralCrestManager::prefix2 {"https://"}
inlinestatic

Definition at line 32 of file CoralCrestManager.h.

32{"https://"};

The documentation for this class was generated from the following files: