
class VEXON_COIND;

struct VEXON_RPC
{
	VEXON_COIND *coind;
	int port;

	char host[1024];
	char credential[1024];
	char cert[1024];

	int ssl;
	int curl;
	int sock;
	int id;

	int bufpos;
	char buffer[VEXON_SMALLBUFSIZE];

	pthread_mutex_t mutex;

	void* CURL;
};

//////////////////////////////////////////////////////////////////////////

bool rpc_connected(VEXON_RPC *rpc);
bool rpc_connect(VEXON_RPC *rpc);
void rpc_close(VEXON_RPC *rpc);

int rpc_send_raw(VEXON_RPC *rpc, const char *buffer, int bytes);
int rpc_send(VEXON_RPC *rpc, const char *format, ...);
int rpc_flush(VEXON_RPC *rpc);

json_value *rpc_call(VEXON_RPC *rpc, char const *method, char const *params=NULL);

json_value *rpc_curl_call(VEXON_RPC *rpc, char const *method, char const *params);
void rpc_curl_get_lasterr(char* buffer, int buflen);
void rpc_curl_close(VEXON_RPC *rpc);
