void drop ( common::connection_iface *c ) { upgradable_lock lck(clients_lock_); client_map_type::iterator f(clients_.find(c)); if( f != clients_.end( )) { upgrade_to_unique ulck(lck); clients_.erase( f ); } }
// ############################################################################################################## void jevois::Camera::get(jevois::RawImage & img) { JEVOIS_TRACE(4); { std::unique_lock<std::mutex> ulck(itsOutputMtx); itsOutputCondVar.wait(ulck, [&]() { return itsOutputImage.valid() || itsStreaming.load() == false; }); if (itsStreaming.load() == false) { LDEBUG("Not streaming"); throw std::runtime_error("Camera not streaming"); } img = itsOutputImage; itsOutputImage.invalidate(); } LDEBUG("Camera image " << img.bufindex << " handed over to processing"); }
void ClientSystem::TransferOutgoingMessagesTo( MessageList::Messages_t& messages ) { if (mThreaded) { std::unique_lock<std::mutex> ulck( mMessageHolder.GetOutgoingMessages().GetMutex() ); if (!mMessageHolder.GetOutgoingMessages().HasPublishedMessages()) { mMessageHolder.GetOutgoingMessages().GetCV().wait_for( ulck, std::chrono::milliseconds( mWaitMillisecs ) ); } mMessageHolder.GetOutgoingMessages().TransferPublishedMessagesTo( messages ); } else { mMessageHolder.GetOutgoingMessages().TransferPublishedMessagesTo( messages ); } }