Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:00:31

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIKERNEL_IHIVEWHITEBOARD_H
0012 #define GAUDIKERNEL_IHIVEWHITEBOARD_H
0013 
0014 // Framework include files
0015 #include "GaudiKernel/DataObjID.h"
0016 #include "GaudiKernel/IInterface.h"
0017 
0018 // C++ include files
0019 #include <string>
0020 
0021 /**@class IHiveWhiteBoard IHiveWhiteBoard.h GaudiKernel/IHiveWhiteBoard.h
0022  *
0023  *  @author  Pere Mato
0024  *  @author  Danilo Piparo
0025  *  @version 1.0
0026  */
0027 class GAUDI_API IHiveWhiteBoard : public extend_interfaces<IInterface> {
0028 public:
0029   /// InterfaceID
0030   DeclareInterfaceID( IHiveWhiteBoard, 2, 0 );
0031 
0032   /** Activate an given 'slot' for all subsequent calls within the
0033    * same thread id.
0034    *
0035    * @param  partition     [IN]     Partition number (event slot)   *
0036    * @return Status code indicating failure or success.
0037    */
0038   virtual StatusCode selectStore( size_t partitionIndex ) = 0;
0039 
0040   /** Clear an given 'slot'.
0041    *
0042    * @param  partition     [IN]     Partition number (event slot)   *
0043    * @return Status code indicating failure or success.
0044    */
0045   virtual StatusCode clearStore( size_t partitionIndex ) = 0;
0046 
0047   /** Set the number of 'slots'.
0048    *
0049    * @param  partition     [IN]     Partition number (event slot)   *
0050    * @return Status code indicating failure or success.
0051    */
0052   virtual StatusCode setNumberOfStores( size_t slots ) = 0;
0053 
0054   /** Get the number of 'slots'.
0055    *
0056    * @return Number of event stores allocated in the whiteboard
0057    */
0058   virtual size_t getNumberOfStores() const = 0;
0059 
0060   /** Check if a data object exists in store.
0061    *  TODO: remove the method ASA a cross-experiment
0062    *        event data store interface emerges
0063    *
0064    * @return  boolean
0065    */
0066   virtual bool exists( const DataObjID& ) = 0;
0067 
0068   /** Allocate a store partition for new event
0069    *
0070    * @param     evtnumber     [IN]     Event number
0071    * @return Partition number (npos to indicate an error).
0072    */
0073   virtual size_t allocateStore( int evtnumber ) = 0;
0074 
0075   /** Free a store partition
0076    *
0077    * @param     partition     [IN]     Partition number
0078    * @return Status code indicating failure or success.
0079    */
0080   virtual StatusCode freeStore( size_t partitionIndex ) = 0;
0081 
0082   /** Get the partition number corresponding to a given event
0083    *
0084    * @param     evtnumber     [IN]     Event number
0085    * @return    Partition number (npos to indicate an error).
0086    */
0087   virtual size_t getPartitionNumber( int eventnumber ) const = 0;
0088 
0089   /// Get free slots number
0090   virtual size_t freeSlots() = 0;
0091 };
0092 #endif // GAUDIKERNEL_IHIVEWHITEBOARD_H