Files
cdev-1.7.2n/extensions/cdevGenericServer/include/rsvcCacheDataAttr.h
2022-12-13 12:44:04 +01:00

74 lines
1.9 KiB
C++

//-----------------------------------------------------------------------------
// Copyright (c) 1994,1995 Southeastern Universities Research Association,
// Continuous Electron Beam Accelerator Facility
//
// This software was developed under a United States Government license
// described in the NOTICE file included as part of this distribution.
//
//-----------------------------------------------------------------------------
//
// Description:
// RSVC Server Cache Data Attributes
//
// Author: Jie Chen
//
//
//
#ifndef _RSVC_CACHE_DATA_ATTR_H
#define _RSVC_CACHE_DATA_ATTR_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <rsvcNetData.h>
#include <rsvcHashable.h>
#include <rsvcHash.h>
#include <rsvcCacheData.h>
class rsvcCbk;
class rsvcCacheDataAttr : public rsvcHashable
{
public:
// constructor and destructor
rsvcCacheDataAttr (char* attr, rsvcCacheData& cache);
virtual ~rsvcCacheDataAttr (void);
// return hash code
unsigned int hash (void);
// monitor on/off
// outdata's are newly allocated data.
// remember to free those
virtual int monitorOn (rsvcCbk& cbk);
virtual int monitorOff (rsvcCbk& cbk);
// monitor off all with same ioptr
virtual int monitorOff (void* ioptr);
virtual int getValue (rsvcCbk& cbk);
// return attribute name
char* attrName (void) const;
// notify channels
void notifyChannels (void);
protected:
// remove all callbacks from the lists
void removeAllCbks (void);
// attribute name
char* name_;
// all callback list : (with all cbk pointers)
rsvcHash monitorList_;
// whole cached data storage
rsvcCacheData& cache_;
// deny access to copy and assignment operations
rsvcCacheDataAttr (const rsvcCacheDataAttr& attr);
rsvcCacheDataAttr& operator = (const rsvcCacheDataAttr& attr);
};
#endif