Example #1
0
String CHttpServer::directRequest( const String& method, const String& uri, const String& query, const HeaderList& headers ,const String& body )
{
  common::CMutexLock lock(m_mxSyncRequest);
  
  String ret;
  if ( m_pQueue != 0 )
  {
    CDirectHttpRequestQueue::CDirectHttpRequest req;
  
    pthread_cond_t signal;
    pthread_cond_init(&signal,0);
    
    CMutex m;
  
    req.signal = &signal;
    req.mutex = m.getNativeMutex();
    req.method = method;
    req.uri = uri;
    req.query = query;
    req.headers = headers;
    req.body = body;
  
    pthread_mutex_lock(m.getNativeMutex());

    m_pQueue->doRequest( req );
    
    pthread_cond_wait(&signal, m.getNativeMutex());
    pthread_mutex_unlock(m.getNativeMutex());
    
    ret = m_pQueue->getResponse();
  }
  
  return ret;
 
}