diff --git a/include/fc/rpc/json_connection.hpp b/include/fc/rpc/json_connection.hpp index b666a74..1ce32bf 100644 --- a/include/fc/rpc/json_connection.hpp +++ b/include/fc/rpc/json_connection.hpp @@ -107,6 +107,17 @@ namespace fc { namespace rpc { const variant& a7 ); + future async_call( const fc::string& method, + const variant& a1, + const variant& a2, + const variant& a3, + const variant& a4, + const variant& a5, + const variant& a6, + const variant& a7, + const variant& a8 + ); + template Result call( const fc::string& method, const variant& a1, diff --git a/src/rpc/json_connection.cpp b/src/rpc/json_connection.cpp index 226d145..fa01fd0 100644 --- a/src/rpc/json_connection.cpp +++ b/src/rpc/json_connection.cpp @@ -518,6 +518,42 @@ namespace fc { namespace rpc { my->_out->flush(); return my->_awaiting[id]; } + future json_connection::async_call( const fc::string& method, + const variant& a1, + const variant& a2, + const variant& a3, + const variant& a4, const variant& a5, const variant& a6, const variant& a7, const variant& a8 ) + { + auto id = my->_next_id++; + my->_awaiting[id] = fc::promise::ptr( new fc::promise() ); + + { + fc::scoped_lock lock(my->_write_mutex); + *my->_out << "{\"id\":"; + *my->_out << id; + *my->_out << ",\"method\":"; + json::to_stream( *my->_out, method ); + *my->_out << ",\"params\":["; + fc::json::to_stream( *my->_out, a1 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a2 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a3 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a4 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a5 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a6 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a7 ); + *my->_out << ","; + fc::json::to_stream( *my->_out, a8 ); + *my->_out << "]}\n"; + } + my->_out->flush(); + return my->_awaiting[id]; + } future json_connection::async_call( const fc::string& method, mutable_variant_object named_args ) {