void worker(promise<int> p) {
  try {
    //何か処理をして結果をpromiseに設定する
    p.set_value(computeSomething());
  } catch(...) {
    //例外が発生したら例外をpromiseに設定する
    p.set_exception(current_exception());
  }
}
    void
    on_write(const std::error_code& ec) {
        CF_DBG("<< write: %s", CF_EC(ec));

        if (ec) {
            session->on_error(ec);
            pr.set_exception(std::system_error(ec));
        } else {
            pr.set_value();
        }
    }
Ejemplo n.º 3
0
 void read_write_handler( const promise<size_t>::ptr& p, const boost::system::error_code& ec, size_t bytes_transferred ) {
     if( !ec ) p->set_value(bytes_transferred);
     else p->set_exception( boost::copy_exception( boost::system::system_error(ec) ) );
 }