bool ChatHandler::HandleGMListIngameCommand(char* /*args*/) { std::list< std::pair<std::string, bool> > names; { ACE_READ_GUARD_RETURN(HashMapHolder<Player>::LockType, g, HashMapHolder<Player>::GetLock(), true) HashMapHolder<Player>::MapType& m = sObjectAccessor.GetPlayers(); for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr) { Player* player = itr->second; AccountTypes security = player->GetSession()->GetSecurity(); if ((player->isGameMaster() || (security > SEC_PLAYER && security <= (AccountTypes)sWorld.getConfig(CONFIG_UINT32_GM_LEVEL_IN_GM_LIST))) && (!m_session || player->IsVisibleGloballyFor(m_session->GetPlayer()))) { names.push_back(std::make_pair<std::string, bool>(GetNameLink(player), player->isAcceptWhispers())); } } } if (!names.empty()) { SendSysMessage(LANG_GMS_ON_SRV); char const* accepts = GetMangosString(LANG_GM_ACCEPTS_WHISPER); char const* not_accept = GetMangosString(LANG_GM_NO_WHISPER); for (std::list<std::pair< std::string, bool> >::const_iterator iter = names.begin(); iter != names.end(); ++iter) { PSendSysMessage("%s - %s", iter->first.c_str(), iter->second ? accepts : not_accept); } } else { SendSysMessage(LANG_GMS_NOT_LOGGED); } return true; }
CosTrading::FollowOption TAO_Link_Attributes_i::max_link_follow_policy (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), CosTrading::local_only); return this->max_link_follow_policy_; }
CosTrading::Proxy_ptr TAO_Trading_Components_i::proxy_if (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), CosTrading::Proxy::_nil ()); return this->proxy_.ptr (); }
CosTrading::Admin_ptr TAO_Trading_Components_i::admin_if (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), CosTrading::Admin::_nil ()); return this->admin_.ptr (); }
CosTrading::TypeRepository_ptr TAO_Support_Attributes_i::type_repos (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), CosTrading::TypeRepository::_nil ()); return this->type_repos_.ptr (); }
CosTrading::Register_ptr TAO_Trading_Components_i::register_if (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), CosTrading::Register::_nil ()); return this->register_.ptr (); }
CORBA::Boolean TAO_Support_Attributes_i::supports_modifiable_properties (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), 0); return this->supports_modifiable_properties_; }
TAO_NS_Control* TAO_Control_Registry::get (const ACE_CString& name) const { ACE_READ_GUARD_RETURN (TAO_SYNCH_RW_MUTEX, guard, this->mutex_, 0); Map::data_type type = 0; this->map_.find (name, type); return type; }
Player* ObjectAccessor::FindPlayerByName(const char* name) { ACE_READ_GUARD_RETURN(HashMapHolder<Player>::LockType, guard, HashMapHolder<Player>::GetLock(), NULL) HashMapHolder<Player>::MapType& m = sObjectAccessor.GetPlayers(); for (HashMapHolder<Player>::MapType::iterator iter = m.begin(); iter != m.end(); ++iter) if (iter->second->IsInWorld() && (::strcmp(name, iter->second->GetName()) == 0)) { return iter->second; } return NULL; }
template <class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK> int ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::test_invariant (void) { ACE_TRACE ("ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::test_invariant"); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); // Recurse from the root, starting with the measured black height at // 0, and the expected black height at -1, which will cause the // count from first measured path to a leaf to be used as the // expected one from that point onward (the key is to check // consistency). int expected_black_height = -1; if (this->test_invariant_recurse (this->root_, expected_black_height, 0) == 0) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("invariant holds\n"))); return 0; } return -1; }
static bool HandleGMListIngameCommand(ChatHandler* handler, char const* /*args*/) { bool first = true; bool footer = false; ACE_READ_GUARD_RETURN(HashMapHolder<Player>::LockType, guard, *HashMapHolder<Player>::GetLock(), true); HashMapHolder<Player>::MapType const& m = sObjectAccessor->GetPlayers(); for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr) { AccountTypes itrSec = itr->second->GetSession()->GetSecurity(); if ((itr->second->isGameMaster() || (!AccountMgr::IsPlayerAccount(itrSec) && itrSec <= AccountTypes(sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_GM_LIST)))) && (!handler->GetSession() || itr->second->IsVisibleGloballyFor(handler->GetSession()->GetPlayer()))) { if (first) { first = false; footer = true; handler->SendSysMessage(LANG_GMS_ON_SRV); handler->SendSysMessage("========================"); } char const* name = itr->second->GetName(); uint8 security = itrSec; uint8 max = ((16 - strlen(name)) / 2); uint8 max2 = max; if ((max + max2 + strlen(name)) == 16) max2 = max - 1; if (handler->GetSession()) handler->PSendSysMessage("| %s GMLevel %u", name, security); else handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max2, " ", security); } } if (footer) handler->SendSysMessage("========================"); if (first) handler->SendSysMessage(LANG_GMS_NOT_LOGGED); return true; }
::Stock::StockQuoter_ptr StockDistributor_i::provide_quoter_info (::Stock::Cookie *ck) { ACE_READ_GUARD_RETURN (ACE_RW_Thread_Mutex, guard, lock_, 0); try { CookieMap::const_iterator iter = this->subscribers_list_.find (ck->cookie_id ()); ACE_DEBUG ((LM_DEBUG, "Looking up cookie %s\n", ck->cookie_id ())); if (iter == this->subscribers_list_.end ()) throw ::Stock::Invalid_Subscription (); StockQuoter_i *quoter = new StockQuoter_i; PortableServer::ServantBase_var owner_transfer (quoter); PortableServer::ObjectId *oid = this->rt_poa_->activate_object_with_priority (quoter, iter->second.second); CORBA::Object_var obj = rt_poa_->id_to_reference (*oid); ::Stock::StockQuoter_var quoter_var = ::Stock::StockQuoter::_narrow (obj.in ()); if (CORBA::is_nil (quoter_var.in ())) ACE_ERROR_RETURN ((LM_ERROR, "ERROR: No reference to quoter returned from narrow!\n"), 0); return quoter_var._retn (); } catch (CORBA::Exception &ex) { ex._tao_print_exception ("StockDistributor_i::provide_quoter_info"); return ::Stock::StockQuoter::_nil (); } }
CORBA::ULong TAO_Import_Attributes_i::max_hop_count (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), 0); return this->max_hop_count_; }
CORBA::ULong TAO_Import_Attributes_i::max_return_card (void) const { ACE_READ_GUARD_RETURN (ACE_Lock, ace_mon, this->locker_.lock (), 10); return this->max_return_card_; }
int Reader_Task::svc (void) { ACE_Profile_Timer timer; ACE_Profile_Timer::ACE_Elapsed_Time elapsed_time; barrier_.wait (); // Wait at the barrier. // We start an ACE_Profile_Timer here... timer.start (); for (int iterations = 1; iterations <= n_iterations; iterations++) { ACE_Thread::yield (); int result = 0; { #if defined (RW_MUTEX) ACE_READ_GUARD_RETURN (ACE_RW_Thread_Mutex, g, rw_mutex, 1); #else ACE_GUARD_RETURN (ACE_Thread_Mutex, g, mutex, 1); #endif /* RW_MUTEX */ find_last (); #if defined (RW_MUTEX) if (use_try_upgrade) result = rw_mutex.tryacquire_write_upgrade (); #endif /* RW_MUTEX */ // True, when we were able to upgrade. if (result == 0 && use_try_upgrade) { //find_last (); try to find something which is not in //there upgraded++; continue; } } if ((result == -1 && errno == EBUSY) // we tried and failed || !use_try_upgrade) // we did not try at all { #if defined (RW_MUTEX) ACE_WRITE_GUARD (ACE_RW_Thread_Mutex, g, rw_mutex, 1); #else ACE_GUARD_RETURN (ACE_Thread_Mutex, g, mutex, 1); #endif /* RW_MUTEX */ not_upgraded++; find_last (); } else if (result == -1 && errno != EBUSY) { ACE_ERROR ((LM_ERROR, ACE_TEXT (" (%t) failure in upgrading to write lock!\n"), 1)); } } // Stop the timer. timer.stop (); timer.elapsed_time (elapsed_time); this->time_Calculation_.report_time (elapsed_time); return 0; }