pool::RNTupleContainer Node1 pool::RNTupleContainer # m_type # m_fieldDescs # m_dbH # m_rootDb # m_ioBytes # m_isDirty # m_index # m_indexSize # m_indexBump # m_indexMulti # m_ntupleWriter # m_ntupleReader + RNTupleContainer() + ~RNTupleContainer() + close() + open() + getOption() + setOption() + isShapeSupported() + size() + getName() + isDirty() and 10 more... - initObjectFieldDesc() Node2 pool::DbContainerImp # m_name # m_canUpdate # m_canDestroy - m_stack - m_size - m_writeSize - m_stackType + DbContainerImp() + release() + size() + name() + nextRecordId() + useNextRecordId() + close() + getOption() + setOption() + transAct() and 15 more... # ~DbContainerImp() # stackType() # stackSize() # updatesPending() # stackEntry() # destroyObject() # updateObject() # writeObject() # commitTransaction() Node2->Node1 Node3 pool::IDbContainer + release() + size() + name() + isShapeSupported() + setOption() + getOption() + allocate() + allocate() + free() + nextRecordId() and 15 more... # ~IDbContainer() Node3->Node2