summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h399
1 files changed, 0 insertions, 399 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h b/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h
deleted file mode 100644
index d4518fd3825..00000000000
--- a/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.h
+++ /dev/null
@@ -1,399 +0,0 @@
-// -*- C++ -*-
-
-//=============================================================================
-/**
- * @file Hash_LogRecordStore.h
- *
- * $Id$
- *
- * @author Matthew Braun <mjb2@cs.wustl.edu>
- * @author Pradeep Gore <pradeep@cs.wustl.edu>
- * @author David A. Hanvey <d.hanvey@qub.ac.uk>
- */
-//=============================================================================
-
-#ifndef TAO_HASH_LOG_RECORD_STORE_H
-#define TAO_HASH_LOG_RECORD_STORE_H
-
-#include /**/ "ace/pre.h"
-#include /**/ "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "orbsvcs/Log/LogRecordStore.h"
-#include "ace/Containers.h"
-#include "ace/RB_Tree.h"
-#include "ace/Synch_Traits.h"
-#include "ace/Null_Mutex.h"
-#include "ace/RW_Thread_Mutex.h"
-#include "ace/Reactor.h"
-#include "tao/PortableServer/PortableServer.h"
-#include "orbsvcs/Log/log_serv_export.h"
-
-#define LOG_DEFAULT_MAX_REC_LIST_LEN 100
-
-TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-
-class TAO_LogMgr_i;
-
-/**
- * @class TAO_Hash_LogRecordStore
- *
- * @brief A concrete container class for storing DsLogAdmin::LogRecords
- *
- * This implementation uses an ACE_RB_Tree to store LogRecords.
- * Permits fast searches by id and iteration, while allowing for
- * ring-buffer like wrapping of entries.
- *
- * @note The name of this class is somewhat misleading, as it no
- * longer uses a ACE_Hash_Map.
- *
- * @note LogRecords should be indexed by both id and timestamp.
- * However, timestamps are not unique keys and there are no ACE
- * multimap containers.
- *
- * @todo If ACE_RB_Tree supported an insertion "hint" like std::map,
- * log insertion would be O(1) instead of O(lgN). This could be an
- * issue for large log channels.
- */
-class TAO_Log_Serv_Export TAO_Hash_LogRecordStore
- : public TAO_LogRecordStore
-{
- public:
-
- // = Initialization and termination methods
-
- /// Constructor.
- TAO_Hash_LogRecordStore (TAO_LogMgr_i* logmgr,
- DsLogAdmin::LogId id,
- DsLogAdmin::LogFullActionType log_full_action,
- CORBA::ULongLong max_size,
- const DsLogAdmin::CapacityAlarmThresholdList* thresholds
- );
-
- /// Destructor.
- virtual ~TAO_Hash_LogRecordStore (void);
-
- /// Initialization.
- virtual int open (void);
-
- /// Close the record store.
- virtual int close (void);
-
-
- // = Log Parameters
-
- /// Gets the administrative state of the log
- virtual DsLogAdmin::AdministrativeState
- get_administrative_state (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Sets the administrative state of the log
- virtual void
- set_administrative_state (DsLogAdmin::AdministrativeState
- ACE_ENV_ARG_DECL);
-
- /// Get the capacity alarm thresholds
- virtual DsLogAdmin::CapacityAlarmThresholdList*
- get_capacity_alarm_thresholds (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Set the capacity alarm thresholds
- virtual void
- set_capacity_alarm_thresholds (const DsLogAdmin::CapacityAlarmThresholdList& thresholds
- ACE_ENV_ARG_DECL);
-
- /// Gets the forwarding state
- virtual DsLogAdmin::ForwardingState
- get_forwarding_state (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Sets the forwarding state
- virtual void
- set_forwarding_state (DsLogAdmin::ForwardingState state
- ACE_ENV_ARG_DECL);
-
- /// Get the log duration
- virtual DsLogAdmin::TimeInterval
- get_interval (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Set the log duration.
- virtual void
- set_interval (const DsLogAdmin::TimeInterval & interval
- ACE_ENV_ARG_DECL);
-
- /// Gets the log full action
- virtual DsLogAdmin::LogFullActionType
- get_log_full_action (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Sets the log full action
- virtual void
- set_log_full_action(DsLogAdmin::LogFullActionType action
- ACE_ENV_ARG_DECL);
-
- /// Get the list of the QoS properties supported by the log.
- virtual DsLogAdmin::QoSList*
- get_log_qos (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Set the list of the QoS properties supported by the log.
- virtual void
- set_log_qos (const DsLogAdmin::QoSList& qos
- ACE_ENV_ARG_DECL);
-
- /// Gets the max record life
- virtual CORBA::ULong
- get_max_record_life (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Sets the max record life
- virtual void
- set_max_record_life (CORBA::ULong life
- ACE_ENV_ARG_DECL);
-
- /// Get the current set value of the max size of the log data.
- virtual CORBA::ULongLong
- get_max_size (ACE_ENV_SINGLE_ARG_DECL) const;
-
- /// Set the max size of log data. size == 0, => infinite.
- virtual void
- set_max_size (CORBA::ULongLong size
- ACE_ENV_ARG_DECL);
-
- /// Get the weekly scheduling parameters
- virtual DsLogAdmin::WeekMask*
- get_week_mask (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Set the weekly scheduling parameters.
- virtual void
- set_week_mask (const DsLogAdmin::WeekMask & masks
- ACE_ENV_ARG_DECL);
-
-
- // = LogRecordStore status methods
-
- /// Gets the current size of the log data.
- virtual CORBA::ULongLong
- get_current_size (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Get the number of records in the log right now.
- virtual CORBA::ULongLong
- get_n_records (ACE_ENV_SINGLE_ARG_DECL);
-
-
- // = LogRecordStore gauge
-
- /// Gets the current value of the "gauge" that measures the total
- /// size of the records written to the log.
- virtual CORBA::ULongLong
- get_gauge(ACE_ENV_SINGLE_ARG_DECL);
-
- /// Resets the "gauge" to 0
- virtual void
- reset_gauge(ACE_ENV_SINGLE_ARG_DECL);
-
-
- // = Record logging, retrieval, update and removal methods.
-
- /// Insert rec into storage. Returns 0 on success -1 on failure and 1
- /// if the log is full.
- virtual int
- log (const DsLogAdmin::LogRecord &rec ACE_ENV_ARG_DECL);
-
- /// Deletes "old" records from the store.
- virtual int
- purge_old_records (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Set single record attributes.
- virtual void
- set_record_attribute (DsLogAdmin::RecordId id,
- const DsLogAdmin::NVList & attr_list
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidRecordId,
- DsLogAdmin::InvalidAttribute));
-
- /// Set the attributes of all records that matches the
- /// constraints with same attr_list.
- virtual CORBA::ULong
- set_records_attribute (const char * grammar,
- const char * c,
- const DsLogAdmin::NVList & attr_list
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidGrammar,
- DsLogAdmin::InvalidConstraint,
- DsLogAdmin::InvalidAttribute));
-
- /// Get the attributes of the record with id <id>. Raises
- /// DsLogAdmin::InvalidRecordId
- virtual DsLogAdmin::NVList*
- get_record_attribute (DsLogAdmin::RecordId id
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidRecordId));
-
- /// Ensure changes have been flushed to persistent media
- /// Returns 0 on success, -1 on failure.
- virtual int
- flush (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Returns all records in the log that match the given constraint
- /// <c>.
- virtual DsLogAdmin::RecordList*
- query (const char * grammar,
- const char * c,
- DsLogAdmin::Iterator_out i
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidGrammar,
- DsLogAdmin::InvalidConstraint));
-
- /// Retrieve <how_many> records from time <from_time> using iterator
- /// <i>.
- virtual DsLogAdmin::RecordList*
- retrieve (DsLogAdmin::TimeT from_time,
- CORBA::Long how_many,
- DsLogAdmin::Iterator_out i
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Returns the number of records matching constraint <c>.
- virtual CORBA::ULong
- match (const char * grammar,
- const char * c
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidGrammar,
- DsLogAdmin::InvalidConstraint));
-
- /// Delete records matching constraint <c>.
- virtual CORBA::ULong
- delete_records (const char * grammar,
- const char * c
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidGrammar,
- DsLogAdmin::InvalidConstraint));
-
- /// Delete records matching ids in <ids>
- virtual CORBA::ULong
- delete_records_by_id (const DsLogAdmin::RecordIdList & ids
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual CORBA::ULong
- remove_old_records (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Read-Write Lock
- virtual ACE_SYNCH_RW_MUTEX& lock();
-
-/* protected: */
- /// Defines types to represent the container that maps RecordIds to
- /// LogRecords.
- typedef ACE_RB_Tree <DsLogAdmin::RecordId,
- DsLogAdmin::LogRecord,
- ACE_Less_Than<DsLogAdmin::RecordId>,
- ACE_Null_Mutex> LOG_RECORD_STORE;
- typedef LOG_RECORD_STORE::ITERATOR LOG_RECORD_STORE_ITER;
- typedef LOG_RECORD_STORE::ENTRY LOG_RECORD_STORE_ENTRY;
-
-protected:
- /// Set rec to the pointer to the LogRecord with the given
- /// id. Returns 0 on success, -1 on failure.
- int retrieve_i (DsLogAdmin::RecordId id,
- DsLogAdmin::LogRecord &rec
- ACE_ENV_ARG_DECL);
-
- /// Update into storage. Returns 0 on success -1 on failure.
- int update_i (DsLogAdmin::LogRecord &rec
- ACE_ENV_ARG_DECL);
-
- /// Remove the record with id <id> from the LogRecordStore.
- /// Returns 0 on success, -1 on failure.
- int remove_i (DsLogAdmin::RecordId id
- ACE_ENV_ARG_DECL);
-
- /// Remove the record from the LogRecordStore.
- void remove_i (LOG_RECORD_STORE_ITER iter
- ACE_ENV_ARG_DECL);
-
- DsLogAdmin::RecordList* query_i (const char *constraint,
- DsLogAdmin::Iterator_out &iter_out,
- CORBA::ULong how_many
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidConstraint));
-
- /// Throws DsLogAdmin::InvalidGrammar if we don't support this grammar.
- void check_grammar (const char* grammar ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- DsLogAdmin::InvalidGrammar));
-
-
- /// The size of a LogRecord
- size_t log_record_size(const DsLogAdmin::LogRecord &rec);
-
- TAO_LogMgr_i* logmgr_i_;
-
- /// Assigned to a new RecordId and then incremented
- /// @@ Should I have a list of reclaimed id's for when records are
- /// deleted?
- DsLogAdmin::RecordId maxid_;
-
- /// The maximum size of the log.
- CORBA::ULongLong max_size_;
-
- /// The log id to which this LogRecordStore relates.
- DsLogAdmin::LogId id_;
-
- /// The current size (in bytes) of the log.
- CORBA::ULongLong current_size_;
-
- /// The current number of records in the log.
- CORBA::ULongLong num_records_;
-
- /// The current value of the "gauge" that measures the total size of
- /// the records written to the log.
- CORBA::ULongLong gauge_;
-
- /// The max size of the record list returned in a query.
- CORBA::ULong max_rec_list_len_;
-
- /// The map of RecordId's to LogRecord's
- LOG_RECORD_STORE rec_map_;
-
-
- /// The administrative state of the log
- DsLogAdmin::AdministrativeState admin_state_;
-
- DsLogAdmin::CapacityAlarmThresholdList
- thresholds_;
-
- /// The forwarding state of the log
- DsLogAdmin::ForwardingState forward_state_;
-
- /// The interval during which the log should be in operation
- DsLogAdmin::TimeInterval interval_;
-
- /// The action to take if the log reaches max capacity
- DsLogAdmin::LogFullActionType log_full_action_;
-
- /// The list of the QoS properties supported by the log.
- DsLogAdmin::QoSList log_qos_;
-
- /// The maximum record lifetime
- CORBA::ULong max_record_life_;
-
- /// The days of the week that the log should be operational
- DsLogAdmin::WeekMask weekmask_;
-
-
- ACE_Reactor* reactor_;
-
- PortableServer::POA_var iterator_poa_;
-
- mutable ACE_SYNCH_RW_MUTEX lock_;
-};
-
-TAO_END_VERSIONED_NAMESPACE_DECL
-
-#include /**/ "ace/post.h"
-#endif /*TAO_HASH_LOG_RECORD_STORE_H*/