#pragma once #include #include #include #include #include #include #include namespace fc { namespace rpc { /** * Provides a simple wrapper for RPC calls to a given interface. */ class cli : public api_connection { public: cli( uint32_t max_depth ) : api_connection(max_depth) {} ~cli(); virtual variant send_call( api_id_type api_id, string method_name, variants args = variants() ); virtual variant send_callback( uint64_t callback_id, variants args = variants() ); virtual void send_notice( uint64_t callback_id, variants args = variants() ); void start(); void stop(); void wait(); void format_result( const string& method, std::function formatter); virtual void getline( const fc::string& prompt, fc::string& line ); void set_prompt( const string& prompt ); private: void run(); std::string _prompt = ">>>"; std::map > _result_formatters; fc::future _run_complete; }; } }