summaryrefslogtreecommitdiff
path: root/lib/jsonrpc.h
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2018-01-22 11:09:40 -0800
committerBen Pfaff <blp@ovn.org>2018-03-24 12:04:51 -0700
commit8cf6bbb184c319b05f2a78a6fc7fc5b93297eafd (patch)
treebd949e042fee2b1bba6bd5b0fdd5d024a03c368f /lib/jsonrpc.h
parent5ee527e223b266d06c37d93d54695dc48e890cbf (diff)
downloadopenvswitch-8cf6bbb184c319b05f2a78a6fc7fc5b93297eafd.tar.gz
jsonrpc: Allow jsonrpc_session to have more than one remote.
The implementation cycles through the remotes in random order. This allows clients to perform some load balancing across alternative implementations of a service. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Russell Bryant <russell@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
Diffstat (limited to 'lib/jsonrpc.h')
-rw-r--r--lib/jsonrpc.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/jsonrpc.h b/lib/jsonrpc.h
index 9b4fb0e51..969a6ed38 100644
--- a/lib/jsonrpc.h
+++ b/lib/jsonrpc.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2012, 2013, 2017 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ struct jsonrpc_msg;
struct pstream;
struct reconnect_stats;
struct stream;
+struct svec;
/* API for a JSON-RPC stream. */
@@ -99,6 +100,8 @@ struct json *jsonrpc_msg_to_json(struct jsonrpc_msg *);
/* A JSON-RPC session with reconnection. */
struct jsonrpc_session *jsonrpc_session_open(const char *name, bool retry);
+struct jsonrpc_session *jsonrpc_session_open_multiple(const struct svec *,
+ bool retry);
struct jsonrpc_session *jsonrpc_session_open_unreliably(struct jsonrpc *,
uint8_t);
void jsonrpc_session_close(struct jsonrpc_session *);
@@ -108,6 +111,7 @@ void jsonrpc_session_wait(struct jsonrpc_session *);
size_t jsonrpc_session_get_backlog(const struct jsonrpc_session *);
const char *jsonrpc_session_get_name(const struct jsonrpc_session *);
+size_t jsonrpc_session_get_n_remotes(const struct jsonrpc_session *);
int jsonrpc_session_send(struct jsonrpc_session *, struct jsonrpc_msg *);
struct jsonrpc_msg *jsonrpc_session_recv(struct jsonrpc_session *);