ATLAS Offline Software
Loading...
Searching...
No Matches
IRCUSvc.h
Go to the documentation of this file.
1// This file's extension implies that it's C, but it's really -*- C++ -*-.
2
3/*
4 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5*/
6
7// $Id$
14
15
16#ifndef ATHENAKERNEL_IRCUSVC_H
17#define ATHENAKERNEL_IRCUSVC_H
18
19
21#include "GaudiKernel/IInterface.h"
22#include <memory>
23
24
25namespace Athena {
26
27
39 : virtual public IInterface
40{
41public:
43
44
51 template <class T, typename... Args>
52 std::unique_ptr<RCUObject<T> > newrcu (Args&&... args)
53 {
54 return std::make_unique<RCUObject<T> > (*this, std::forward<Args>(args)...);
55 }
56
57
62 virtual void add (IRCUObject* obj) = 0;
63
64
69 virtual StatusCode remove (IRCUObject* obj) = 0;
70
71
75 virtual size_t getNumSlots() const = 0;
76};
77
78
79} // namespace Athena
80
81
82#endif // not ATHENAKERNEL_IRCUSVC_H
read-copy-update (RCU) style synchronization for Athena.
Base object class for RCU-style synchronization for Athena.
Definition RCUObject.h:147
Interface for RCU service.
Definition IRCUSvc.h:40
virtual void add(IRCUObject *obj)=0
Add a new RCU object to the set being managed.
virtual StatusCode remove(IRCUObject *obj)=0
Remove an object from the service.
virtual size_t getNumSlots() const =0
Return the number of event slots.
DeclareInterfaceID(IRCUSvc, 1, 0)
std::unique_ptr< RCUObject< T > > newrcu(Args &&... args)
Make a new RCU object.
Definition IRCUSvc.h:52
Some weak symbol referencing magic... These are declared in AthenaKernel/getMessageSvc....