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

Private Member Functions

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

Private Attributes

std::list< Multi::Mapm_route_patterns
 
boost::mutex m_mutex
 
boost::condition m_cond_session_ready
 
std::map< mp::Session, FrontendPtrm_clients
 
bool m_hide_unavailable
 
bool m_hide_errors
 
multi_merge_type m_merge_type
 

Friends

class Multi
 
struct Frontend
 

Detailed Description

Definition at line 134 of file filter_multi.cpp.

Constructor & Destructor Documentation

◆ Rep()

mp::filter::Multi::Rep::Rep ( )
private

Member Function Documentation

◆ get_frontend()

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

Definition at line 175 of file filter_multi.cpp.

176 {
177  boost::mutex::scoped_lock lock(m_mutex);
178 
179  std::map<mp::Session,yf::Multi::FrontendPtr>::iterator it;
180 
181  while(true)
182  {
183  it = m_clients.find(package.session());
184  if (it == m_clients.end())
185  break;
186 
187  if (!it->second->m_in_use)
188  {
189  it->second->m_in_use = true;
190  return it->second;
191  }
192  m_cond_session_ready.wait(lock);
193  }
194  FrontendPtr f(new Frontend(this));
195  m_clients[package.session()] = f;
196  f->m_in_use = true;
197  return f;
198 }
std::map< mp::Session, FrontendPtr > m_clients
boost::condition m_cond_session_ready
boost::shared_ptr< Frontend > FrontendPtr

◆ release_frontend()

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

Definition at line 200 of file filter_multi.cpp.

201 {
202  boost::mutex::scoped_lock lock(m_mutex);
203  std::map<mp::Session,yf::Multi::FrontendPtr>::iterator it;
204 
205  it = m_clients.find(package.session());
206  if (it != m_clients.end())
207  {
208  if (package.session().is_closed())
209  {
210  it->second->close(package);
211  m_clients.erase(it);
212  }
213  else
214  {
215  it->second->m_in_use = false;
216  }
217  m_cond_session_ready.notify_all();
218  }
219 }

Friends And Related Function Documentation

◆ Frontend

friend struct Frontend
friend

Definition at line 136 of file filter_multi.cpp.

◆ Multi

friend class Multi
friend

Definition at line 135 of file filter_multi.cpp.

Member Data Documentation

◆ m_clients

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

Definition at line 145 of file filter_multi.cpp.

◆ m_cond_session_ready

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

Definition at line 144 of file filter_multi.cpp.

◆ m_hide_errors

bool metaproxy_1::filter::Multi::Rep::m_hide_errors
private

Definition at line 147 of file filter_multi.cpp.

◆ m_hide_unavailable

bool metaproxy_1::filter::Multi::Rep::m_hide_unavailable
private

Definition at line 146 of file filter_multi.cpp.

◆ m_merge_type

multi_merge_type metaproxy_1::filter::Multi::Rep::m_merge_type
private

Definition at line 148 of file filter_multi.cpp.

◆ m_mutex

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

Definition at line 143 of file filter_multi.cpp.

◆ m_route_patterns

std::list<Multi::Map> metaproxy_1::filter::Multi::Rep::m_route_patterns
private

Definition at line 142 of file filter_multi.cpp.


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