metaproxy  1.21.0
Private Types | Private Member Functions | Private Attributes | Friends | List of all members
metaproxy_1::filter::VirtualDB::Rep Class Reference
Collaboration diagram for metaproxy_1::filter::VirtualDB::Rep:
Collaboration graph

Private Types

typedef std::map< std::string, VirtualDB::Set >::iterator Sets_it
 

Private Member Functions

FrontendPtr get_frontend (Package &package)
 
void release_frontend (Package &package)
 
void refresh_torus ()
 

Private Attributes

std::list< VirtualDB::Mapm_maps
 
boost::mutex m_mutex
 
boost::condition m_cond_session_ready
 
std::map< mp::Session, FrontendPtrm_clients
 
bool pass_vhosts
 

Friends

class VirtualDB
 
struct Frontend
 

Detailed Description

Definition at line 104 of file filter_virt_db.cpp.

Member Typedef Documentation

◆ Sets_it

typedef std::map<std::string,VirtualDB::Set>::iterator metaproxy_1::filter::VirtualDB::Rep::Sets_it
private

Definition at line 113 of file filter_virt_db.cpp.

Member Function Documentation

◆ get_frontend()

yf::VirtualDB::FrontendPtr mp::filter::VirtualDB::Rep::get_frontend ( Package &  package)
private

Definition at line 404 of file filter_virt_db.cpp.

405 {
406  boost::mutex::scoped_lock lock(m_mutex);
407 
408  std::map<mp::Session,yf::VirtualDB::FrontendPtr>::iterator it;
409 
410  while(true)
411  {
412  it = m_clients.find(package.session());
413  if (it == m_clients.end())
414  break;
415 
416  if (!it->second->m_in_use)
417  {
418  it->second->m_in_use = true;
419  return it->second;
420  }
421  m_cond_session_ready.wait(lock);
422  }
423  FrontendPtr f(new Frontend(this));
424  m_clients[package.session()] = f;
425  f->m_in_use = true;
426  return f;
427 }
std::map< mp::Session, FrontendPtr > m_clients
boost::shared_ptr< Frontend > FrontendPtr

◆ refresh_torus()

void metaproxy_1::filter::VirtualDB::Rep::refresh_torus ( )
private

◆ release_frontend()

void mp::filter::VirtualDB::Rep::release_frontend ( Package &  package)
private

Definition at line 429 of file filter_virt_db.cpp.

430 {
431  boost::mutex::scoped_lock lock(m_mutex);
432  std::map<mp::Session,yf::VirtualDB::FrontendPtr>::iterator it;
433 
434  it = m_clients.find(package.session());
435  if (it != m_clients.end())
436  {
437  if (package.session().is_closed())
438  {
439  it->second->close(package);
440  m_clients.erase(it);
441  }
442  else
443  {
444  it->second->m_in_use = false;
445  }
446  m_cond_session_ready.notify_all();
447  }
448 }

Friends And Related Function Documentation

◆ Frontend

friend struct Frontend
friend

Definition at line 106 of file filter_virt_db.cpp.

◆ VirtualDB

friend class VirtualDB
friend

Definition at line 105 of file filter_virt_db.cpp.

Member Data Documentation

◆ m_clients

std::map<mp::Session, FrontendPtr> metaproxy_1::filter::VirtualDB::Rep::m_clients
private

Definition at line 116 of file filter_virt_db.cpp.

◆ m_cond_session_ready

boost::condition metaproxy_1::filter::VirtualDB::Rep::m_cond_session_ready
private

Definition at line 115 of file filter_virt_db.cpp.

◆ m_maps

std::list<VirtualDB::Map> metaproxy_1::filter::VirtualDB::Rep::m_maps
private

Definition at line 112 of file filter_virt_db.cpp.

◆ m_mutex

boost::mutex metaproxy_1::filter::VirtualDB::Rep::m_mutex
private

Definition at line 114 of file filter_virt_db.cpp.

◆ pass_vhosts

bool metaproxy_1::filter::VirtualDB::Rep::pass_vhosts
private

Definition at line 117 of file filter_virt_db.cpp.


The documentation for this class was generated from the following file: