diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llmessage/llcoproceduremanager.cpp | 109 | 
1 files changed, 7 insertions, 102 deletions
diff --git a/indra/llmessage/llcoproceduremanager.cpp b/indra/llmessage/llcoproceduremanager.cpp index bc7c982756..89eb00a2b7 100644 --- a/indra/llmessage/llcoproceduremanager.cpp +++ b/indra/llmessage/llcoproceduremanager.cpp @@ -67,18 +67,6 @@ public:      /// @return This method returns a UUID that can be used later to cancel execution.      LLUUID enqueueCoprocedure(const std::string &name, CoProcedure_t proc); -    /// Cancel a coprocedure. If the coprocedure is already being actively executed  -    /// this method calls cancelSuspendedOperation() on the associated HttpAdapter -    /// If it has not yet been dequeued it is simply removed from the queue. -    //bool cancelCoprocedure(const LLUUID &id); - -//    /// Returns the number of coprocedures in the queue awaiting processing. -//    /// -//    inline size_t countPending() const -//    { -//        return mPendingCoprocs.size(); -//    } -      /// Returns the number of coprocedures actively being processed.      ///      inline size_t countActive() const @@ -86,13 +74,6 @@ public:          return mActiveCoprocs.size();      } -//    /// Returns the total number of coprocedures either queued or in active processing. -//    /// -//    inline size_t count() const -//    { -//        return countPending() + countActive(); -//    } -      void close();  private: @@ -111,8 +92,9 @@ private:          CoProcedure_t mProc;      }; -    // we use a deque here rather than std::queue since we want to be able to  -    // iterate through the queue and potentially erase an entry from the middle. +    // we use a buffered_channel here rather than unbuffered_channel since we want to be able to  +    // push values without blocking,even if there's currently no one calling a pop operation (due to +	// fibber running right now)      typedef boost::fibers::buffered_channel<QueuedCoproc::ptr_t>  CoprocQueue_t;      typedef std::map<LLUUID, LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t> ActiveCoproc_t; @@ -120,7 +102,6 @@ private:      size_t          mPoolSize;      CoprocQueue_t   mPendingCoprocs;      ActiveCoproc_t  mActiveCoprocs; -    //bool            mShutdown;      typedef std::map<std::string, LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t> CoroAdapterMap_t;      LLCore::HttpRequest::policy_t mHTTPPolicy; @@ -128,7 +109,6 @@ private:      CoroAdapterMap_t mCoroMapping;      void coprocedureInvokerCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t httpAdapter); -  };  //========================================================================= @@ -193,44 +173,12 @@ LLUUID LLCoprocedureManager::enqueueCoprocedure(const std::string &pool, const s      return targetPool->enqueueCoprocedure(name, proc);  } -//void LLCoprocedureManager::cancelCoprocedure(const LLUUID &id) -//{ -//    for (poolMap_t::const_iterator it = mPoolMap.begin(); it != mPoolMap.end(); ++it) -//    { -//        if (it->second->cancelCoprocedure(id)) -//        { -//            return; -//        } -//    } -//    LL_INFOS() << "Coprocedure not found." << LL_ENDL; -//} -  void LLCoprocedureManager::setPropertyMethods(SettingQuery_t queryfn, SettingUpdate_t updatefn)  {      mPropertyQueryFn = queryfn;      mPropertyDefineFn = updatefn;  } -////------------------------------------------------------------------------- -//size_t LLCoprocedureManager::countPending() const -//{ -//    size_t count = 0; -//    for (poolMap_t::const_iterator it = mPoolMap.begin(); it != mPoolMap.end(); ++it) -//    { -//        count += (*it).second->countPending(); -//    } -//    return count; -//} -// -//size_t LLCoprocedureManager::countPending(const std::string &pool) const -//{ -//    poolMap_t::const_iterator it = mPoolMap.find(pool); -// -//    if (it == mPoolMap.end()) -//        return 0; -//    return (*it).second->countPending(); -//} -  size_t LLCoprocedureManager::countActive() const  {      size_t count = 0; @@ -252,25 +200,6 @@ size_t LLCoprocedureManager::countActive(const std::string &pool) const      return it->second->countActive();  } -//size_t LLCoprocedureManager::count() const -//{ -//    size_t count = 0; -//    for (poolMap_t::const_iterator it = mPoolMap.begin(); it != mPoolMap.end(); ++it) -//    { -//        count += (*it).second->count(); -//    } -//    return count; -//} -// -//size_t LLCoprocedureManager::count(const std::string &pool) const -//{ -//    poolMap_t::const_iterator it = mPoolMap.find(pool); -// -//    if (it == mPoolMap.end()) -//        return 0; -//    return (*it).second->count(); -//} -  void LLCoprocedureManager::close(const std::string &pool)  {      poolMap_t::iterator it = mPoolMap.find(pool); @@ -285,7 +214,6 @@ LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):      mPoolName(poolName),      mPoolSize(size),      mPendingCoprocs(DEFAULT_QUEUE_SIZE), -    //mShutdown(false),      mCoroMapping(),      mHTTPPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID)  { @@ -317,32 +245,6 @@ LLUUID LLCoprocedurePool::enqueueCoprocedure(const std::string &name, LLCoproced      return id;  } -//bool LLCoprocedurePool::cancelCoprocedure(const LLUUID &id) -//{ -//    // first check the active coroutines.  If there, remove it and return. -//    ActiveCoproc_t::iterator itActive = mActiveCoprocs.find(id); -//    if (itActive != mActiveCoprocs.end()) -//    { -//        LL_INFOS() << "Found and canceling active coprocedure with id=" << id.asString() << " in pool \"" << mPoolName << "\"" << LL_ENDL; -//        (*itActive).second->cancelSuspendedOperation(); -//        mActiveCoprocs.erase(itActive); -//        return true; -//    } -// -////    for (auto it: mPendingCoprocs) -////    { -////        if ((*it)->mId == id) -////        { -////            LL_INFOS() << "Found and removing queued coroutine(" << (*it)->mName << ") with Id=" << id.asString() << " in pool \"" << mPoolName << "\"" << LL_ENDL; -////            mPendingCoprocs.erase(it); -////            return true; -////        } -////    } -// -//    LL_INFOS() << "Coprocedure with Id=" << id.asString() << " was not found in pool \"" << mPoolName << "\"" << LL_ENDL; -//    return false; -//} -  //-------------------------------------------------------------------------  void LLCoprocedurePool::coprocedureInvokerCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t httpAdapter)  { @@ -358,6 +260,7 @@ void LLCoprocedurePool::coprocedureInvokerCoro(LLCoreHttpUtil::HttpCoroutineAdap          ActiveCoproc_t::iterator itActive = mActiveCoprocs.insert(ActiveCoproc_t::value_type(coproc->mId, httpAdapter)).first; +        // Nicky: This is super spammy. Consider using LL_DEBUGS here?          LL_INFOS() << "Dequeued and invoking coprocedure(" << coproc->mName << ") with id=" << coproc->mId.asString() << " in pool \"" << mPoolName << "\"" << LL_ENDL;          try @@ -374,12 +277,14 @@ void LLCoprocedurePool::coprocedureInvokerCoro(LLCoreHttpUtil::HttpCoroutineAdap              throw;          } +        // Nicky: This is super spammy. Consider using LL_DEBUGS here?          LL_INFOS() << "Finished coprocedure(" << coproc->mName << ")" << " in pool \"" << mPoolName << "\"" << LL_ENDL;          mActiveCoprocs.erase(itActive);      }  } -void LLCoprocedurePool::close() { +void LLCoprocedurePool::close() +{      mPendingCoprocs.close();  }  | 
