コード例 #1
0
ファイル: HttpClient.cpp プロジェクト: 3Nigma/frayon
void HttpClient::onRequest(Http::Client& client)
{
    try
    {
        Pt::Http::MessageProgress progress = client.endSend();
        if( ! progress.finished() )
        {
            client.beginSend(false);
            return;
        }

        while( ! advanceMessage() )
        {
            if(client.request().buffer().size() > 8192)
            {
                client.beginSend(false);
                return;
            }
        }
        
        finishMessage();

        client.beginReceive();
    }
    catch(const System::IOError&) // HttpError is also an IOError
    {
        // setError() makes finishResult() call onError() where we throw
        setError();
        finishResult();
    }
}
コード例 #2
0
ファイル: HttpClient.cpp プロジェクト: 3Nigma/frayon
void HttpClient::onCall()
{
    // prepare HTTP request
    _client.request().clear();
    _client.request().header().set("Content-Type", "text/xml");
    _client.request().setMethod("POST");
    std::ostream& os = _client.request().body();

    // format XML-RPC request
    beginMessage(os);
    
    while( ! advanceMessage() )
    {
        if(_client.request().buffer().size() > 8192)
        {
            _client.send(false);
        }
    }

    finishMessage();

    // send HTTP request and start receiving HTTP reply
    _client.send(true);
    std::istream& is = _client.receive();

    // parse XML-RPC reply
    Client::processResult(is);

    // discard remaining data
    std::streamsize all = std::numeric_limits<std::streamsize>::max();
    is.ignore(all);
}
コード例 #3
0
ファイル: HttpClient.cpp プロジェクト: 3Nigma/frayon
void HttpClient::onInvoke()
{
    // prepare HTTP request
    _client.request().clear();
    _client.request().header().set("Content-Type", "text/xml");
    _client.request().setMethod("POST");
    std::ostream& os = _client.request().body();

    // format XML-RPC request
    beginMessage(os);

    while( ! advanceMessage() )
    {
        if(_client.request().buffer().size() > 8192)
        {
            _client.beginSend(false);
            return;
        }
    }
        
    finishMessage();

    _client.beginReceive();
}
コード例 #4
0
void VoiceboxDialog::onDtmf(int event, int duration)
{
  DBG("VoiceboxDialog::onDtmf: event %d duration %d\n", 
      event, duration);
  
  if (EnteringPin == state) {
    play_list.flush();
    // check pin
    if (event<10) {
      entered_pin += int2str(event);
      DBG("added '%s': PIN is now '%s'.\n", 
	  int2str(event).c_str(), entered_pin.c_str());
    }
    if (event==10 || event==11) { // # and * keys
      if (entered_pin.compare(pin)) { // wrong pin
	entered_pin.clear();
	play_list.flush();
	prompts->addToPlaylist("pin_prompt", (long)this, play_list, true);
      }
    }
    if (!entered_pin.compare(pin)) {
      state = Prompting;
      doMailboxStart();
    }
  }

  if (MsgAction == state) {      
    if ((unsigned int)event == VoiceboxFactory::repeat_key) {
      play_list.flush();
      repeatCurMessage();
    } else if ((unsigned int)event == VoiceboxFactory::save_key) {
      state = Prompting;
      play_list.flush();
      enqueueBack("msg_saved");
      saveCurMessage();
      edited_msgs.push_back(*cur_msg);
      advanceMessage();
      checkFinalMessage();
      if (!isAtEnd()) {
	enqueueCurMessage();
      }
    } else if ((unsigned int)event == VoiceboxFactory::delete_key) { 
      state = Prompting;
      play_list.flush();
      enqueueBack("msg_deleted");
      deleteCurMessage(); 
      advanceMessage();
      checkFinalMessage();
      if (!isAtEnd()) {
	enqueueCurMessage();
      }
    } else if ((unsigned int)event == VoiceboxFactory::startover_key) { 
      if (isAtLastMsg()) {
	edited_msgs.push_back(*cur_msg);
	state = Prompting;
	mergeMsglists();
	gotoFirstSavedMessage();
	enqueueCurMessage();
      }
    }
  }

  if (PromptTurnover == state) {      
    if (((unsigned int)event == VoiceboxFactory::startover_key)
	&& (isAtEnd())) {
      state = Prompting;
      mergeMsglists();
      gotoFirstSavedMessage();
      enqueueCurMessage();
    }
  }
 
}