ATLAS Offline Software
Loading...
Searching...
No Matches
pool::TokenIterator Class Reference

TokenIterator is an implementation of the ITokenIterator interface. More...

#include <TokenIterator.h>

Inheritance diagram for pool::TokenIterator:
Collaboration diagram for pool::TokenIterator:

Public Member Functions

 TokenIterator (FileDescriptor &fileDescriptor, const std::string &containerName)
 Constructor taking as argument the file descriptor, the container name.
 ~TokenIterator ()
 TokenIterator (const TokenIterator &)=delete
TokenIterator & operator= (const TokenIterator &)=delete
virtual Token * next () override final
 Advances tne iterator and returns a pointer to next token.
virtual std::size_t size () override final
 Return the size of the collection.
virtual bool seek (std::size_t position) override final
 Seek to a given position in the collection.

Private Attributes

DbContainer * m_container
Token * m_refToken

Detailed Description

TokenIterator is an implementation of the ITokenIterator interface.

Definition at line 24 of file TokenIterator.h.

Constructor & Destructor Documentation

◆ TokenIterator() [1/2]

pool::TokenIterator::TokenIterator ( FileDescriptor & fileDescriptor,
const std::string & containerName )

Constructor taking as argument the file descriptor, the container name.

Definition at line 15 of file TokenIterator.cxx.

16 :
17 m_container( nullptr ), m_refToken ( nullptr )
18{
19 DbDatabase dbH( fileDescriptor.dbc()->handle() );
20 if ( dbH.isValid() ) {
21 m_refToken = new Token(dbH.cntToken(containerName));
22 m_container = new DbContainer(m_refToken->technology());
23 }
24 if( !dbH.isValid() || !m_container->open(dbH, m_refToken->contID(), 0, m_refToken->technology(), Io::READ).isSuccess() ) {
25 throw std::runtime_error( "Selection from " + fileDescriptor.PFN() + "(" + containerName + ") failed (APR: \" TokenIterator::TokenIterator() \" from \" PersistencySvc \")" );
26 }
27}
DbContainer * m_container

◆ ~TokenIterator()

pool::TokenIterator::~TokenIterator ( )

Definition at line 29 of file TokenIterator.cxx.

30{
31 delete m_container; m_container = nullptr;
32 m_refToken->release(); m_refToken = nullptr;
33}

◆ TokenIterator() [2/2]

pool::TokenIterator::TokenIterator ( const TokenIterator & )
delete

Member Function Documentation

◆ next()

Token * pool::TokenIterator::next ( )
finaloverridevirtual

Advances tne iterator and returns a pointer to next token.

Returns
Shared Token ptr (refCount+1) if not at the end, nullptr otherwise.

Implements pool::ITokenIterator.

Definition at line 37 of file TokenIterator.cxx.

38{
39 Token::OID_t linkH(m_refToken->oid());
40 if( !m_container->next(linkH).isSuccess() ) return nullptr;
41 m_refToken->oid() = linkH;
42 m_refToken->addRef();
43 return m_refToken;
44}

◆ operator=()

TokenIterator & pool::TokenIterator::operator= ( const TokenIterator & )
delete

◆ seek()

bool pool::TokenIterator::seek ( std::size_t position)
finaloverridevirtual

Seek to a given position in the collection.

Parameters
positionThe position to which to seek.
Returns
True if successful, false otherwise.

Implements pool::ITokenIterator.

Definition at line 55 of file TokenIterator.cxx.

56{
57 if( position >= size() ) return false;
58 // go to position-1, so that the next call to next() will return the Token at <position>
59 m_refToken->oid().second = int(position-1);
60 return true;
61}
virtual std::size_t size() override final
Return the size of the collection.

◆ size()

std::size_t pool::TokenIterator::size ( )
finaloverridevirtual

Return the size of the collection.

Implements pool::ITokenIterator.

Definition at line 48 of file TokenIterator.cxx.

49{
50 return m_container->size();
51}

Member Data Documentation

◆ m_container

DbContainer* pool::TokenIterator::m_container
private

Definition at line 54 of file TokenIterator.h.

◆ m_refToken

Token* pool::TokenIterator::m_refToken
private

Definition at line 55 of file TokenIterator.h.


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