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(); } }
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); }
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(); }
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(); } } }