From 7dde0a705de7a460b226a673101a759747958175 Mon Sep 17 00:00:00 2001 From: Eric Frias Date: Thu, 29 May 2014 15:54:13 -0400 Subject: [PATCH] Add 5 and 6 argument versions of json rpc call functions --- include/fc/rpc/json_connection.hpp | 40 +++++++++++++++++++++ src/rpc/json_connection.cpp | 56 ++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/include/fc/rpc/json_connection.hpp b/include/fc/rpc/json_connection.hpp index c64e70c..88c46a6 100644 --- a/include/fc/rpc/json_connection.hpp +++ b/include/fc/rpc/json_connection.hpp @@ -82,6 +82,21 @@ namespace fc { namespace rpc { const variant& a3, const variant& a4 ); + future async_call( const fc::string& method, + const variant& a1, + const variant& a2, + const variant& a3, + const variant& a4, + const variant& a5 ); + + 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 ); + template Result call( const fc::string& method, const variant& a1, @@ -103,6 +118,31 @@ namespace fc { namespace rpc { return async_call( method, a1, a2, a3, a4).wait(timeout).as(); } + template + Result call( const fc::string& method, + const variant& a1, + const variant& a2, + const variant& a3, + const variant& a4, + const variant& a5, + microseconds timeout = microseconds::maximum()) + { + return async_call( method, a1, a2, a3, a4, a5).wait(timeout).as(); + } + + template + Result call( const fc::string& method, + const variant& a1, + const variant& a2, + const variant& a3, + const variant& a4, + const variant& a5, + const variant& a6, + microseconds timeout = microseconds::maximum()) + { + return async_call( method, a1, a2, a3, a4, a5, a6).wait(timeout).as(); + } + 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 4a112b4..37da39b 100644 --- a/src/rpc/json_connection.cpp +++ b/src/rpc/json_connection.cpp @@ -433,6 +433,62 @@ namespace fc { namespace rpc { 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 ) + { + 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 << "]}\n"; + } + 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 ) + { + 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 << "]}\n"; + } + my->_out->flush(); + return my->_awaiting[id]; + } + future json_connection::async_call( const fc::string& method, mutable_variant_object named_args ) { return async_call( method, variant_object( fc::move(named_args) ) );