store headers only once, refs #7
This commit is contained in:
81
actlibrary/include/actSlotManager.h
Normal file
81
actlibrary/include/actSlotManager.h
Normal file
@@ -0,0 +1,81 @@
|
||||
// ---------------------------------------------------------------------------
|
||||
// Name: actSlotManager.h
|
||||
// Product: cv act library
|
||||
// Purpose: The class SlotManager detects and manages the subsystems and the slots
|
||||
//
|
||||
// Copyright: (c) 2002 cv cryptovision GmbH
|
||||
// all rights reserved
|
||||
// Licence: The conditions for the use of this software are regulated
|
||||
// in the cv act library licence agreement.
|
||||
//
|
||||
// Autor: Dr. Xiangdong Wang
|
||||
// Markus Tesche
|
||||
// Date: 03/26/2002
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#ifndef ACT_SlotManager_h
|
||||
#define ACT_SlotManager_h
|
||||
|
||||
#include "actIEventMonitoring.h"
|
||||
|
||||
namespace act
|
||||
{
|
||||
class ISubsystem;
|
||||
class ISubsystemConfig;
|
||||
|
||||
class ISlot;
|
||||
class ITokenConfig;
|
||||
|
||||
//
|
||||
// SlotManager
|
||||
class SlotManager : public IEventMonitoring
|
||||
{
|
||||
private:
|
||||
struct SubsystemList
|
||||
{
|
||||
SubsystemList(ISubsystem* system, SubsystemList* next = 0);
|
||||
~SubsystemList();
|
||||
|
||||
SubsystemList* insert(SubsystemList* prev);
|
||||
SubsystemList* remove(SubsystemList* prev);
|
||||
|
||||
ISubsystem* system;
|
||||
SubsystemList* next;
|
||||
};
|
||||
|
||||
public:
|
||||
SlotManager(ITokenConfig* tkcfg = 0);
|
||||
~SlotManager();
|
||||
|
||||
bool Install(ISubsystem* system);
|
||||
bool Install(ISubsystemConfig* config);
|
||||
|
||||
void Refresh();
|
||||
void Disconnect();
|
||||
ISubsystem* GetSystem(size_t pos = 0) const;
|
||||
|
||||
// SlotList
|
||||
int GetSlotNumber() const;
|
||||
const ISlot* GetSlot(int pos) const;
|
||||
ISlot* CreateSlot(const char* name) const;
|
||||
|
||||
// IEventMonitoring functions
|
||||
virtual bool IsMonitored() const;
|
||||
virtual void StopMonitor(bool force = false);
|
||||
virtual void StartMonitor(IEventHandler* cmd);
|
||||
|
||||
protected:
|
||||
IEventHandler* SetMonitor(SubsystemList* begin, IEventHandler* cmd, bool force);
|
||||
|
||||
private:
|
||||
int m_total;
|
||||
ITokenConfig* m_tkcfg;
|
||||
SubsystemList* m_begin;
|
||||
SubsystemList* m_current;
|
||||
IEventHandler* m_cmd_root;
|
||||
IEventHandler* m_cmd_current;
|
||||
};
|
||||
|
||||
} // namespace act
|
||||
|
||||
#endif // ACT_SlotManager_h
|
Reference in New Issue
Block a user