Merge "citrix" branch into "master".
[sliver-openvswitch.git] / lib / jsonrpc.h
index e6d11ac..ae8b9de 100644 (file)
@@ -67,7 +67,8 @@ struct jsonrpc_msg {
 };
 
 struct jsonrpc_msg *jsonrpc_create_request(const char *method,
-                                           struct json *params);
+                                           struct json *params,
+                                           struct json **idp);
 struct jsonrpc_msg *jsonrpc_create_notify(const char *method,
                                           struct json *params);
 struct jsonrpc_msg *jsonrpc_create_reply(struct json *result,
@@ -81,5 +82,26 @@ void jsonrpc_msg_destroy(struct jsonrpc_msg *);
 
 char *jsonrpc_msg_from_json(struct json *, struct jsonrpc_msg **);
 struct json *jsonrpc_msg_to_json(struct jsonrpc_msg *);
+\f
+/* A JSON-RPC session with reconnection. */
+
+struct jsonrpc_session *jsonrpc_session_open(const char *name);
+struct jsonrpc_session *jsonrpc_session_open_unreliably(struct jsonrpc *);
+void jsonrpc_session_close(struct jsonrpc_session *);
+
+void jsonrpc_session_run(struct jsonrpc_session *);
+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 *);
+
+int jsonrpc_session_send(struct jsonrpc_session *, struct jsonrpc_msg *);
+struct jsonrpc_msg *jsonrpc_session_recv(struct jsonrpc_session *);
+void jsonrpc_session_recv_wait(struct jsonrpc_session *);
+
+bool jsonrpc_session_is_alive(const struct jsonrpc_session *);
+bool jsonrpc_session_is_connected(const struct jsonrpc_session *);
+unsigned int jsonrpc_session_get_seqno(const struct jsonrpc_session *);
+void jsonrpc_session_force_reconnect(struct jsonrpc_session *);
 
 #endif /* jsonrpc.h */