diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp | 228 |
1 files changed, 169 insertions, 59 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp b/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp index 25354e8328a..cc0da373600 100644 --- a/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp +++ b/TAO/orbsvcs/orbsvcs/Log/Hash_LogRecordStore.cpp @@ -12,14 +12,12 @@ ACE_RCSID (Log, Hash_LogRecordStore, "$Id$") -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - -TAO_Hash_LogRecordStore::TAO_Hash_LogRecordStore ( - CORBA::ORB_ptr orb, - DsLogAdmin::LogId logid, - DsLogAdmin::LogFullActionType log_full_action, - CORBA::ULongLong max_size, - const DsLogAdmin::CapacityAlarmThresholdList* thresholds) +TAO_Hash_LogRecordStore::TAO_Hash_LogRecordStore (CORBA::ORB_ptr orb, + DsLogAdmin::LogId logid, + DsLogAdmin::LogFullActionType log_full_action, + CORBA::ULongLong max_size, + const DsLogAdmin::CapacityAlarmThresholdList* thresholds + ) : maxid_ (0), max_size_ (max_size), id_ (logid), @@ -44,9 +42,6 @@ TAO_Hash_LogRecordStore::TAO_Hash_LogRecordStore ( this->thresholds_.length(1); this->thresholds_[0] = 100; } - - this->log_qos_.length(1); - this->log_qos_[0] = DsLogAdmin::QoSNone; } TAO_Hash_LogRecordStore::~TAO_Hash_LogRecordStore (void) @@ -70,12 +65,24 @@ TAO_Hash_LogRecordStore::close (void) CORBA::ULongLong TAO_Hash_LogRecordStore::get_current_size (ACE_ENV_SINGLE_ARG_DECL) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + return this->current_size_; } CORBA::ULongLong TAO_Hash_LogRecordStore::get_n_records (ACE_ENV_SINGLE_ARG_DECL) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + return this->num_records_; } @@ -83,6 +90,12 @@ int TAO_Hash_LogRecordStore::log (const DsLogAdmin::LogRecord &const_rec ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + // Get log record size... size_t record_size = log_record_size (const_rec); @@ -129,6 +142,12 @@ TAO_Hash_LogRecordStore::retrieve (DsLogAdmin::RecordId id, DsLogAdmin::LogRecord &rec ACE_ENV_ARG_DECL) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + int retval = rec_hash_.find (id, rec); return retval; } @@ -137,6 +156,12 @@ int TAO_Hash_LogRecordStore::update (DsLogAdmin::LogRecord &rec ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + DsLogAdmin::LogRecord oldrec; if (rec_hash_.unbind (rec.id, oldrec) != 0) @@ -178,6 +203,12 @@ int TAO_Hash_LogRecordStore::remove (DsLogAdmin::RecordId id ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + return remove_i (id); } @@ -185,6 +216,12 @@ TAO_Hash_LogRecordStore::remove (DsLogAdmin::RecordId id int TAO_Hash_LogRecordStore::purge_old_records (ACE_ENV_SINGLE_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + CORBA::ULongLong num_records_to_purge = this->num_records_ * 5U / 100U; if (num_records_to_purge < 1) @@ -302,7 +339,6 @@ TAO_Hash_LogRecordStore::query_i (const char *constraint, TAO_Hash_Iterator_i *iter_query = 0; ACE_NEW_THROW_EX (iter_query, TAO_Hash_Iterator_i (this->reactor_, - this, iter, iter_end, count, @@ -331,6 +367,12 @@ TAO_Hash_LogRecordStore::query (const char *grammar, DsLogAdmin::InvalidGrammar, DsLogAdmin::InvalidConstraint)) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + this->check_grammar (grammar ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); @@ -347,6 +389,12 @@ TAO_Hash_LogRecordStore::retrieve (DsLogAdmin::TimeT from_time, ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + // Decide between forward vs backward retrieval. char constraint[32]; char uint64_formating[32]; @@ -357,7 +405,7 @@ TAO_Hash_LogRecordStore::retrieve (DsLogAdmin::TimeT from_time, ACE_U64_TO_U32 (from_time)); #else ACE_OS::sprintf (uint64_formating, - ACE_UINT64_FORMAT_SPECIFIER, + ACE_UINT64_FORMAT_SPECIFIER_A, from_time); #endif @@ -422,6 +470,12 @@ TAO_Hash_LogRecordStore::match (const char* grammar, DsLogAdmin::InvalidGrammar, DsLogAdmin::InvalidConstraint)) { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + this->check_grammar (grammar ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); @@ -440,6 +494,12 @@ TAO_Hash_LogRecordStore::delete_records (const char *grammar, DsLogAdmin::InvalidGrammar, DsLogAdmin::InvalidConstraint)) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + this->check_grammar (grammar ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); @@ -455,6 +515,12 @@ TAO_Hash_LogRecordStore::delete_records_by_id (const DsLogAdmin::RecordIdList &i ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + CORBA::ULong count (0); for (CORBA::ULong i = 0; i < ids.length (); i++) @@ -471,6 +537,12 @@ TAO_Hash_LogRecordStore::delete_records_by_id (const DsLogAdmin::RecordIdList &i CORBA::ULong TAO_Hash_LogRecordStore::remove_old_records (ACE_ENV_SINGLE_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + if (this->max_record_life_ == 0) { return 0; } @@ -515,13 +587,6 @@ TAO_Hash_LogRecordStore::remove_old_records (ACE_ENV_SINGLE_ARG_DECL) 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) @@ -539,6 +604,12 @@ TAO_Hash_LogRecordStore::check_grammar (const char* grammar DsLogAdmin::AdministrativeState TAO_Hash_LogRecordStore::get_administrative_state (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (this->admin_state_); + return this->admin_state_; } @@ -546,6 +617,12 @@ void TAO_Hash_LogRecordStore::set_administrative_state (DsLogAdmin::AdministrativeState state ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; + this->admin_state_ = state; } @@ -553,6 +630,12 @@ TAO_Hash_LogRecordStore::set_administrative_state (DsLogAdmin::AdministrativeSta DsLogAdmin::CapacityAlarmThresholdList* TAO_Hash_LogRecordStore::get_capacity_alarm_thresholds (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + DsLogAdmin::CapacityAlarmThresholdList* ret_val; ACE_NEW_THROW_EX (ret_val, DsLogAdmin::CapacityAlarmThresholdList (this->thresholds_), @@ -566,6 +649,12 @@ void TAO_Hash_LogRecordStore::set_capacity_alarm_thresholds (const DsLogAdmin::CapacityAlarmThresholdList& thresholds ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; + this->thresholds_ = thresholds; } @@ -574,6 +663,12 @@ TAO_Hash_LogRecordStore::set_capacity_alarm_thresholds (const DsLogAdmin::Capaci DsLogAdmin::ForwardingState TAO_Hash_LogRecordStore::get_forwarding_state (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (this->forward_state_); + return this->forward_state_; } @@ -581,12 +676,24 @@ void TAO_Hash_LogRecordStore::set_forwarding_state (DsLogAdmin::ForwardingState state ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; + this->forward_state_ = state; } DsLogAdmin::TimeInterval TAO_Hash_LogRecordStore::get_interval (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (this->interval_); + return this->interval_; } @@ -594,6 +701,12 @@ void TAO_Hash_LogRecordStore::set_interval (const DsLogAdmin::TimeInterval &interval ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; + this->interval_ = interval; } @@ -601,6 +714,12 @@ TAO_Hash_LogRecordStore::set_interval (const DsLogAdmin::TimeInterval &interval DsLogAdmin::LogFullActionType TAO_Hash_LogRecordStore::get_log_full_action (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (this->log_full_action_); + return this->log_full_action_; } @@ -608,31 +727,25 @@ 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; - ACE_NEW_THROW_EX (ret_val, - DsLogAdmin::QoSList (this->log_qos_), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; - return ret_val; + this->log_full_action_ = action; } -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 { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + return this->max_record_life_; } @@ -640,12 +753,24 @@ void TAO_Hash_LogRecordStore::set_max_record_life (CORBA::ULong max_record_life ACE_ENV_ARG_DECL) { + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; + this->max_record_life_ = max_record_life; } CORBA::ULongLong TAO_Hash_LogRecordStore::get_max_size (ACE_ENV_SINGLE_ARG_DECL) const { + ACE_READ_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (0); + return this->max_size_; } @@ -653,26 +778,11 @@ 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; - ACE_NEW_THROW_EX (ret_val, - DsLogAdmin::WeekMask (this->weekmask_), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); - - return ret_val; -} + ACE_WRITE_GUARD_THROW_EX (ACE_SYNCH_RW_MUTEX, + guard, + lock_, + CORBA::INTERNAL ()); + ACE_CHECK; -void -TAO_Hash_LogRecordStore::set_week_mask (const DsLogAdmin::WeekMask &masks - ACE_ENV_ARG_DECL) -{ - this->weekmask_ = masks; + this->max_size_ = size; } - -TAO_END_VERSIONED_NAMESPACE_DECL |