32 if ( std::get<1>(
result ) ) {
40 ATH_MSG_ERROR(
"Unable to link parent view that cannot be cast to SG::View" );
60 std::vector< const SG::View* > validParents;
64 auto inParentProxy =
parent->impl()->findProxy(
id,
key,
false );
67 if (
isValid( inParentProxy ) ) {
70 if ( parentProxy && ( parentProxy->object() != inParentProxy->object() ) ) {
71 ATH_MSG_WARNING(
"Parent view " <<
parent->name() <<
" contains conflicting data (" << inParentProxy->object() <<
") vs " << parentProxy->object() <<
" found first" );
75 if ( !parentProxy ) parentProxy = inParentProxy;
78 validParents.push_back(
parent );
86 if ( validParents.size() > 1 ) {
88 std::string validNames =
"";
89 for (
auto&
parent : validParents ) validNames +=
parent->name() +
" ";
91 ATH_MSG_WARNING(
"Key " <<
key <<
" in multiple parents (" << validParents.size() <<
"): " << validNames );
97 if ( (not
isValid( localProxy )) and allowFallThrough ) {
101 bool filterPass =
false;
105 if (
key.find(
entry ) != std::string::npos ) {
117 auto mainStoreProxy =
m_store->proxy(
id,
key );
118 if ( mainStoreProxy ) {
119 ATH_MSG_INFO(
"Key " <<
key <<
" fell through to main store from view " <<
m_name <<
": returning " << mainStoreProxy );
120 m_fallList.insert(
key );
122 return mainStoreProxy;
129 throw std::runtime_error(
"Not implemented: SimpleView::proxy" );
130 return m_store->proxy( pTransient );
136 if ( m_fallList.find(
key ) != m_fallList.end() ) {
137 ATH_MSG_WARNING(
"Key " <<
key <<
" was recorded to view " <<
m_name <<
" but was previously retrieved via fallthrough" );