summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp830
1 files changed, 830 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp b/trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp
new file mode 100644
index 00000000000..aa90c47cea0
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp
@@ -0,0 +1,830 @@
+#include "orbsvcs/Log/LogMgr_i.h"
+#include "orbsvcs/Log/Hash_LogRecordStore.h"
+#include "orbsvcs/Log/Hash_Iterator_i.h"
+#include "orbsvcs/Log/Log_Constraint_Interpreter.h"
+#include "orbsvcs/Log/Log_Constraint_Visitors.h"
+#include "orbsvcs/Time_Utilities.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+#include "tao/AnyTypeCode/Any_Unknown_IDL_Type.h"
+#include "tao/ORB_Core.h"
+#include "tao/debug.h"
+#include "ace/OS_NS_sys_time.h"
+
+ACE_RCSID (Log,
+ Hash_LogRecordStore,
+ "$Id$")
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+TAO_Hash_LogRecordStore::TAO_Hash_LogRecordStore (
+ TAO_LogMgr_i* logmgr_i,
+ DsLogAdmin::LogId logid,
+ DsLogAdmin::LogFullActionType log_full_action,
+ CORBA::ULongLong max_size,
+ const DsLogAdmin::CapacityAlarmThresholdList* thresholds)
+ : logmgr_i_ (logmgr_i),
+ maxid_ (0),
+ max_size_ (max_size),
+ id_ (logid),
+ current_size_ (0),
+ num_records_ (0),
+ gauge_ (0),
+ max_rec_list_len_ (LOG_DEFAULT_MAX_REC_LIST_LEN),
+ admin_state_ (DsLogAdmin::unlocked),
+ forward_state_ (DsLogAdmin::on),
+ log_full_action_ (log_full_action),
+ max_record_life_ (0),
+ reactor_ (logmgr_i_->orb()->orb_core ()->reactor ())
+{
+ interval_.start = 0;
+ interval_.stop = 0;
+
+ if (thresholds)
+ {
+ this->thresholds_ = *thresholds;
+ }
+ else
+ {
+ this->thresholds_.length(1);
+ this->thresholds_[0] = 100;
+ }
+
+ this->log_qos_.length(1);
+ this->log_qos_[0] = DsLogAdmin::QoSNone;
+
+ PortableServer::POA_ptr log_poa =
+ logmgr_i_->log_poa();
+
+ // Create POA for iterators
+ TAO::Utils::PolicyList_Destroyer policies (2);
+ policies.length (2);
+
+ policies[0] =
+ log_poa->create_lifespan_policy (PortableServer::TRANSIENT);
+ policies[1] =
+ log_poa->create_id_assignment_policy (PortableServer::SYSTEM_ID);
+
+ char buf[32];
+ ACE_OS::snprintf (buf, sizeof (buf), "Log%d", (int) id_);
+
+ PortableServer::POAManager_var poa_manager =
+ log_poa->the_POAManager ();
+
+ this->iterator_poa_ =
+ log_poa->create_POA(buf, poa_manager.in(), policies);
+}
+
+TAO_Hash_LogRecordStore::~TAO_Hash_LogRecordStore (void)
+{
+ this->iterator_poa_->destroy (1, 0);
+}
+
+int
+TAO_Hash_LogRecordStore::open (void)
+{
+ return rec_map_.open ();
+}
+
+int
+TAO_Hash_LogRecordStore::close (void)
+{
+ // Close the hash
+ return rec_map_.close ();
+}
+
+CORBA::ULongLong
+TAO_Hash_LogRecordStore::get_current_size (ACE_ENV_SINGLE_ARG_DECL)
+{
+ return this->current_size_;
+}
+
+CORBA::ULongLong
+TAO_Hash_LogRecordStore::get_n_records (ACE_ENV_SINGLE_ARG_DECL)
+{
+ return this->num_records_;
+}
+
+CORBA::ULongLong
+TAO_Hash_LogRecordStore::get_gauge (ACE_ENV_SINGLE_ARG_DECL)
+{
+ return this->gauge_;
+}
+
+void
+TAO_Hash_LogRecordStore::reset_gauge (ACE_ENV_SINGLE_ARG_DECL)
+{
+ this->gauge_ = 0;
+}
+
+int
+TAO_Hash_LogRecordStore::log (const DsLogAdmin::LogRecord &const_rec
+ ACE_ENV_ARG_DECL)
+{
+ // Get log record size...
+ size_t record_size = log_record_size (const_rec);
+
+ // Check if we are allowed to write...
+ if (max_size_ !=0 && ((current_size_ + record_size) >= max_size_))
+ return 1; // return code for log rec. full
+
+ // Copy record...
+ DsLogAdmin::LogRecord rec = const_rec;
+
+ // Initialize a couple of fields first...
+ // ACE emulation of U Long Long (for platforms that don't have one)
+ // does not define postfix operators
+ rec.id = ++maxid_;
+
+ ORBSVCS_Time::Time_Value_to_TimeT(rec.time,ACE_OS::gettimeofday());
+
+ // First, bind the id to the LogRecord in the hash_map
+ if (this->rec_map_.bind (rec.id, rec) != 0)
+ {
+#if defined (ACE_LACKS_LONGLONG_T)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "LogRecordStore (%P|%t):Failed to bind %d in the hash map\n",
+ ACE_U64_TO_U32(rec.id)),
+ -1);
+#else
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "LogRecordStore (%P|%t):Failed to bind %Q in the hash map\n",
+ rec.id),
+ -1);
+#endif
+ }
+
+ // Increment the number of records in the log
+ ++this->num_records_;
+ this->current_size_ += record_size;
+ this->gauge_ += record_size;
+
+ return 0;
+}
+
+int
+TAO_Hash_LogRecordStore::retrieve_i (DsLogAdmin::RecordId id,
+ DsLogAdmin::LogRecord &rec
+ ACE_ENV_ARG_DECL)
+{
+ int retval = rec_map_.find (id, rec);
+ return retval;
+}
+
+int
+TAO_Hash_LogRecordStore::update_i (DsLogAdmin::LogRecord &rec
+ ACE_ENV_ARG_DECL)
+{
+ DsLogAdmin::LogRecord oldrec;
+
+ if (rec_map_.unbind (rec.id, oldrec) != 0)
+ {
+ return -1;
+ }
+
+ --this->num_records_;
+ this->current_size_ -= log_record_size(oldrec);
+
+ if (rec_map_.bind (rec.id, rec) != 0)
+ {
+ return -1;
+ }
+
+ ++this->num_records_;
+ this->current_size_ += log_record_size(rec);
+
+ return 0;
+}
+
+int
+TAO_Hash_LogRecordStore::remove_i (DsLogAdmin::RecordId id
+ ACE_ENV_ARG_DECL)
+{
+ DsLogAdmin::LogRecord rec;
+ if (rec_map_.unbind (id, rec) != 0)
+ {
+ return -1;
+ }
+
+ --this->num_records_;
+ this->current_size_ -= log_record_size(rec);
+
+ return 0;
+}
+
+void
+TAO_Hash_LogRecordStore::remove_i (LOG_RECORD_STORE_ITER iter
+ ACE_ENV_ARG_DECL)
+{
+ size_t size = log_record_size(iter->item ());
+
+ rec_map_.unbind(&*iter);
+
+ --this->num_records_;
+ this->current_size_ -= size;
+}
+
+int
+TAO_Hash_LogRecordStore::purge_old_records (ACE_ENV_SINGLE_ARG_DECL)
+{
+ CORBA::ULongLong num_records_to_purge = this->num_records_ * 5U / 100U;
+
+ if (num_records_to_purge < 1)
+ num_records_to_purge = 1;
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ if (num_records_to_purge > 0 )
+ {
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ for (CORBA::ULongLong i = 0;
+ iter != iter_end && i < num_records_to_purge;
+ ++i)
+ {
+ this->remove_i (iter++);
+ ++count;
+ }
+ }
+
+ return count;
+}
+
+void
+TAO_Hash_LogRecordStore::set_record_attribute (DsLogAdmin::RecordId id,
+ const DsLogAdmin::NVList
+ &attr_list
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidRecordId,
+ DsLogAdmin::InvalidAttribute))
+{
+ // TODO: validate attributes here.
+
+ DsLogAdmin::LogRecord rec;
+ if (this->retrieve_i (id, rec ACE_ENV_ARG_PARAMETER) == -1)
+ {
+ ACE_THROW (DsLogAdmin::InvalidRecordId ());
+ }
+
+ rec.attr_list = attr_list;
+
+ if (this->update_i (rec ACE_ENV_ARG_PARAMETER) == -1)
+ {
+ ACE_THROW (CORBA::PERSIST_STORE ());
+ }
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::set_records_attribute (
+ const char *grammar,
+ const char *constraint,
+ const DsLogAdmin::NVList
+ &attr_list ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidGrammar,
+ DsLogAdmin::InvalidConstraint,
+ DsLogAdmin::InvalidAttribute))
+{
+ this->check_grammar (grammar ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // TODO: validate attributes here.
+
+ // Use an Interpreter to build an expression tree.
+ TAO_Log_Constraint_Interpreter interpreter (constraint
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ for ( ; iter != iter_end; ++iter)
+ {
+ // Use an evaluator.
+ TAO_Log_Constraint_Visitor evaluator (iter->item ());
+
+ // Does it match the constraint?
+ if (interpreter.evaluate (evaluator) == 1)
+ {
+ set_record_attribute (iter->item ().id, attr_list);
+ ++count;
+ }
+ }
+
+ return count;
+}
+
+DsLogAdmin::NVList*
+TAO_Hash_LogRecordStore::get_record_attribute (DsLogAdmin::RecordId id
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidRecordId))
+{
+ DsLogAdmin::LogRecord rec;
+
+ int retval = this->retrieve_i (id, rec ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ if (retval == -1)
+ {
+ ACE_THROW_RETURN (DsLogAdmin::InvalidRecordId (),
+ 0);
+ }
+
+ DsLogAdmin::NVList* nvlist = 0;
+ ACE_NEW_THROW_EX (nvlist,
+ DsLogAdmin::NVList (rec.attr_list),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return nvlist;
+}
+
+
+int
+TAO_Hash_LogRecordStore::flush (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+{
+ return 0;
+}
+
+size_t
+TAO_Hash_LogRecordStore::log_record_size (const DsLogAdmin::LogRecord &rec)
+{
+ size_t mb_size = 0;
+ TAO::Any_Impl *impl = rec.info.impl ();
+
+ if (impl->encoded ())
+ {
+ TAO::Unknown_IDL_Type *unk =
+ dynamic_cast<TAO::Unknown_IDL_Type *> (impl);
+
+ mb_size = unk->_tao_get_cdr ().start ()->length ();
+ }
+ else
+ {
+ // If the Any is not encoded, it just has a stored value
+ // instead of a CDR stream, not sure what info would be
+ // useful here.
+ }
+
+ return sizeof (rec) + mb_size;
+}
+
+DsLogAdmin::RecordList*
+TAO_Hash_LogRecordStore::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))
+{
+ // Use an Interpreter to build an expression tree.
+ TAO_Log_Constraint_Interpreter interpreter (constraint
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Sequentially iterate over all the records and pick the ones that
+ // meet the constraints.
+
+ // Allocate the list of <how_many> length.
+ DsLogAdmin::RecordList* rec_list;
+ ACE_NEW_THROW_EX (rec_list,
+ DsLogAdmin::RecordList (how_many),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+ rec_list->length(how_many);
+
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ for ( ; ((iter != iter_end) && (count < how_many)); ++iter)
+ {
+ // Use an evaluator.
+ TAO_Log_Constraint_Visitor evaluator (iter->item ());
+
+ // Does it match the constraint?
+ if (interpreter.evaluate (evaluator) == 1)
+ {
+ if (TAO_debug_level > 0)
+ {
+#if defined (ACE_LACKS_LONGLONG_T)
+ ACE_DEBUG ((LM_DEBUG,"Matched constraint! d = %d, Time = %d\n",
+ ACE_U64_TO_U32 (iter->item ().id),
+ ACE_U64_TO_U32 (iter->item ().time)));
+#else
+ ACE_DEBUG ((LM_DEBUG,"Matched constraint! d = %Q, Time = %Q\n",
+ iter->item ().id,
+ iter->item ().time));
+#endif
+ }
+
+ (*rec_list)[count] = iter->item ();
+ // copy the log record.
+ ++count;
+ }
+ }
+
+ rec_list->length (count);
+
+ if (iter != iter_end) // There are more records to process.
+ {
+ // Create an iterator to pass out.
+ TAO_Hash_Iterator_i *iter_query = 0;
+ ACE_NEW_THROW_EX (iter_query,
+ TAO_Hash_Iterator_i (this->iterator_poa_.in (),
+ this->reactor_,
+ this,
+ iter,
+ iter_end,
+ count,
+ constraint,
+ this->max_rec_list_len_),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (rec_list);
+
+ // Transfer ownership to the POA.
+ PortableServer::ServantBase_var safe_iter_query = iter_query;
+
+ // Activate it.
+ PortableServer::ObjectId_var oid =
+ this->iterator_poa_->activate_object (iter_query);
+ CORBA::Object_var obj =
+ this->iterator_poa_->id_to_reference (oid.in ());
+
+ // Narrow it
+ iter_out = DsLogAdmin::Iterator::_narrow (obj.in ());
+ }
+
+ return rec_list;
+}
+
+DsLogAdmin::RecordList*
+TAO_Hash_LogRecordStore::query (const char *grammar,
+ const char *constraint,
+ DsLogAdmin::Iterator_out iter_out
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidGrammar,
+ DsLogAdmin::InvalidConstraint))
+{
+ this->check_grammar (grammar ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->query_i (constraint,
+ iter_out,
+ this->max_rec_list_len_
+ ACE_ENV_ARG_PARAMETER);
+}
+
+DsLogAdmin::RecordList*
+TAO_Hash_LogRecordStore::retrieve (DsLogAdmin::TimeT from_time,
+ CORBA::Long how_many,
+ DsLogAdmin::Iterator_out iter_out
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Decide between forward vs backward retrieval.
+ char constraint[32];
+ char uint64_formating[32];
+
+#if defined (ACE_LACKS_LONGLONG_T)
+ ACE_OS::sprintf (uint64_formating,
+ "%u",
+ ACE_U64_TO_U32 (from_time));
+#else
+ ACE_OS::sprintf (uint64_formating,
+ ACE_UINT64_FORMAT_SPECIFIER,
+ from_time);
+#endif
+
+ if (how_many >= 0)
+ ACE_OS::sprintf (constraint, "time >= %s", uint64_formating);
+ else
+ {
+ ACE_OS::sprintf (constraint, "time < %s", uint64_formating);
+ how_many = -(how_many);
+ }
+
+ return this->query_i (constraint,
+ iter_out,
+ how_many
+ ACE_ENV_ARG_PARAMETER);
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::match (const char* grammar,
+ const char *constraint
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidGrammar,
+ DsLogAdmin::InvalidConstraint))
+{
+ this->check_grammar (grammar ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Use an Interpreter to build an expression tree.
+ TAO_Log_Constraint_Interpreter interpreter (constraint
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ for ( ; iter != iter_end; ++iter)
+ {
+ // Use an evaluator.
+ TAO_Log_Constraint_Visitor evaluator (iter->item ());
+
+ // Does it match the constraint?
+ if (interpreter.evaluate (evaluator) == 1)
+ {
+ ++count;
+ }
+ }
+
+ return count;
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::delete_records (const char *grammar,
+ const char *constraint
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidGrammar,
+ DsLogAdmin::InvalidConstraint))
+{
+ this->check_grammar (grammar ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Use an Interpreter to build an expression tree.
+ TAO_Log_Constraint_Interpreter interpreter (constraint
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ while (iter != iter_end)
+ {
+ // Use an evaluator.
+ TAO_Log_Constraint_Visitor evaluator (iter->item ());
+
+ // Does it match the constraint?
+ if (interpreter.evaluate (evaluator) == 1)
+ {
+ this->remove_i (iter++);
+ ++count;
+ }
+ else
+ {
+ ++iter;
+ }
+ }
+
+ return count;
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::delete_records_by_id (const DsLogAdmin::RecordIdList &ids
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CORBA::ULong count (0);
+
+ for (CORBA::ULong i = 0; i < ids.length (); i++)
+ {
+ if (this->remove_i (ids [i]) == 0)
+ {
+ ++count;
+ }
+ }
+
+ return count;
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::remove_old_records (ACE_ENV_SINGLE_ARG_DECL)
+{
+ if (this->max_record_life_ == 0) {
+ return 0;
+ }
+
+ TimeBase::TimeT purge_time;
+ ORBSVCS_Time::Time_Value_to_TimeT (purge_time,
+ (ACE_OS::gettimeofday() - ACE_Time_Value(this->max_record_life_)));
+
+ CORBA::ULongLong p_time = (CORBA::ULongLong) purge_time;
+
+ static char out[256] = "";
+
+ double temp1 =
+ static_cast<double> (ACE_UINT64_DBLCAST_ADAPTER (p_time));
+
+ ACE_OS::sprintf (out, "time < %.0f", temp1);
+
+ // Use an Interpreter to build an expression tree.
+ TAO_Log_Constraint_Interpreter interpreter (out
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Create iterators
+ LOG_RECORD_STORE_ITER iter (rec_map_.begin ());
+ LOG_RECORD_STORE_ITER iter_end (rec_map_.end ());
+
+ CORBA::ULong count = 0; // count of matches found.
+
+ while (iter != iter_end)
+ {
+ // Use an evaluator.
+ TAO_Log_Constraint_Visitor evaluator (iter->item ());
+
+ // Does it match the constraint?
+ if (interpreter.evaluate (evaluator) == 1)
+ {
+ this->remove_i (iter++);
+ ++count;
+ }
+ else
+ {
+ ++iter;
+ }
+ }
+
+ return count;
+}
+
+ACE_SYNCH_RW_MUTEX&
+TAO_Hash_LogRecordStore::lock()
+{
+ return lock_;
+}
+
+
+void
+TAO_Hash_LogRecordStore::check_grammar (const char* grammar
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ DsLogAdmin::InvalidGrammar))
+{
+ // Verify grammar
+ if (ACE_OS::strcmp (grammar, "TCL") != 0 &&
+ ACE_OS::strcmp (grammar, "ETCL") != 0 &&
+ ACE_OS::strcmp (grammar, "EXTENDED_TCL") != 0)
+ ACE_THROW (DsLogAdmin::InvalidGrammar ());
+}
+
+
+DsLogAdmin::AdministrativeState
+TAO_Hash_LogRecordStore::get_administrative_state (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->admin_state_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_administrative_state (DsLogAdmin::AdministrativeState state
+ ACE_ENV_ARG_DECL)
+{
+ this->admin_state_ = state;
+}
+
+
+DsLogAdmin::CapacityAlarmThresholdList*
+TAO_Hash_LogRecordStore::get_capacity_alarm_thresholds (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ DsLogAdmin::CapacityAlarmThresholdList* ret_val;
+ ACE_NEW_THROW_EX (ret_val,
+ DsLogAdmin::CapacityAlarmThresholdList (this->thresholds_),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return ret_val;
+}
+
+void
+TAO_Hash_LogRecordStore::set_capacity_alarm_thresholds (const DsLogAdmin::CapacityAlarmThresholdList& thresholds
+ ACE_ENV_ARG_DECL)
+{
+ this->thresholds_ = thresholds;
+}
+
+
+
+DsLogAdmin::ForwardingState
+TAO_Hash_LogRecordStore::get_forwarding_state (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->forward_state_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_forwarding_state (DsLogAdmin::ForwardingState state
+ ACE_ENV_ARG_DECL)
+{
+ this->forward_state_ = state;
+}
+
+DsLogAdmin::TimeInterval
+TAO_Hash_LogRecordStore::get_interval (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->interval_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_interval (const DsLogAdmin::TimeInterval &interval
+ ACE_ENV_ARG_DECL)
+{
+ this->interval_ = interval;
+}
+
+
+DsLogAdmin::LogFullActionType
+TAO_Hash_LogRecordStore::get_log_full_action (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->log_full_action_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_log_full_action (DsLogAdmin::LogFullActionType action
+ ACE_ENV_ARG_DECL)
+{
+ this->log_full_action_ = action;
+}
+
+DsLogAdmin::QoSList *
+TAO_Hash_LogRecordStore::get_log_qos (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ DsLogAdmin::QoSList* ret_val = 0;
+ ACE_NEW_THROW_EX (ret_val,
+ DsLogAdmin::QoSList (this->log_qos_),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return ret_val;
+}
+
+void
+TAO_Hash_LogRecordStore::set_log_qos (const DsLogAdmin::QoSList& qos
+ ACE_ENV_ARG_DECL)
+{
+ this->log_qos_ = qos;
+}
+
+CORBA::ULong
+TAO_Hash_LogRecordStore::get_max_record_life (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->max_record_life_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_max_record_life (CORBA::ULong max_record_life
+ ACE_ENV_ARG_DECL)
+{
+ this->max_record_life_ = max_record_life;
+}
+
+CORBA::ULongLong
+TAO_Hash_LogRecordStore::get_max_size (ACE_ENV_SINGLE_ARG_DECL) const
+{
+ return this->max_size_;
+}
+
+void
+TAO_Hash_LogRecordStore::set_max_size (CORBA::ULongLong size
+ ACE_ENV_ARG_DECL)
+{
+ this->max_size_ = size;
+}
+
+DsLogAdmin::WeekMask*
+TAO_Hash_LogRecordStore::get_week_mask (ACE_ENV_SINGLE_ARG_DECL)
+{
+ DsLogAdmin::WeekMask* ret_val = 0;
+ ACE_NEW_THROW_EX (ret_val,
+ DsLogAdmin::WeekMask (this->weekmask_),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return ret_val;
+}
+
+void
+TAO_Hash_LogRecordStore::set_week_mask (const DsLogAdmin::WeekMask &masks
+ ACE_ENV_ARG_DECL)
+{
+ this->weekmask_ = masks;
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL