blob: 1b3b30040076f0d63c5cf86dce080059e7950764 [file] [log] [blame]
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ResilientDB SDK: Connection Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen_html_style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classresdb__driver_1_1connection_1_1Connection.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classresdb__driver_1_1connection_1_1Connection-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Connection Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>A Connection object to make HTTP requests to a particular node.
<a href="classresdb__driver_1_1connection_1_1Connection.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa7ab6de915fb6e8eaf91c49c1b950433" id="r_aa7ab6de915fb6e8eaf91c49c1b950433"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#aa7ab6de915fb6e8eaf91c49c1b950433">__init__</a> (self, *str <a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#ab90428b2be3cf348c02614ae919e5de6">node_url</a>, dict headers=None)</td></tr>
<tr class="memdesc:aa7ab6de915fb6e8eaf91c49c1b950433"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a :class:<code>~resdb_driver.connection.Connection</code> instance. <br /></td></tr>
<tr class="separator:aa7ab6de915fb6e8eaf91c49c1b950433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad69df57baeb0c349dc72e7e38d997fc4" id="r_ad69df57baeb0c349dc72e7e38d997fc4"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#ad69df57baeb0c349dc72e7e38d997fc4">get_backoff_timedelta</a> (self)</td></tr>
<tr class="separator:ad69df57baeb0c349dc72e7e38d997fc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19266ed871cd2ded25922bb8b06d730c" id="r_a19266ed871cd2ded25922bb8b06d730c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceresdb__driver_1_1connection.html#a12c40bac41268d36628cdd8c43da10dd">HttpResponse</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#a19266ed871cd2ded25922bb8b06d730c">request</a> (self, str method, *str path=None, dict json=None, dict params=None, dict headers=None, int timeout=None, int backoff_cap=None, **kwargs)</td></tr>
<tr class="memdesc:a19266ed871cd2ded25922bb8b06d730c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an HTTP request with the given parameters. <br /></td></tr>
<tr class="separator:a19266ed871cd2ded25922bb8b06d730c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a152c1a059cb4e90467ddef606b729479" id="r_a152c1a059cb4e90467ddef606b729479"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#a152c1a059cb4e90467ddef606b729479">update_backoff_time</a> (self, success, backoff_cap=None)</td></tr>
<tr class="separator:a152c1a059cb4e90467ddef606b729479"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a33faaacc83097623f41e27a1d3b24f6a" id="r_a33faaacc83097623f41e27a1d3b24f6a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#a33faaacc83097623f41e27a1d3b24f6a">backoff_time</a></td></tr>
<tr class="separator:a33faaacc83097623f41e27a1d3b24f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab90428b2be3cf348c02614ae919e5de6" id="r_ab90428b2be3cf348c02614ae919e5de6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#ab90428b2be3cf348c02614ae919e5de6">node_url</a></td></tr>
<tr class="separator:ab90428b2be3cf348c02614ae919e5de6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0823e1ff851f7526e7fc5487718a051" id="r_aa0823e1ff851f7526e7fc5487718a051"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#aa0823e1ff851f7526e7fc5487718a051">session</a></td></tr>
<tr class="separator:aa0823e1ff851f7526e7fc5487718a051"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:abfe81cc22af1fe94d4622592a843923d" id="r_abfe81cc22af1fe94d4622592a843923d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceresdb__driver_1_1connection.html#a12c40bac41268d36628cdd8c43da10dd">HttpResponse</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#abfe81cc22af1fe94d4622592a843923d">_request</a> (self, **kwargs)</td></tr>
<tr class="separator:abfe81cc22af1fe94d4622592a843923d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:acd4f8f8b9da6cf02ec4d4715cfce8b59" id="r_acd4f8f8b9da6cf02ec4d4715cfce8b59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html#acd4f8f8b9da6cf02ec4d4715cfce8b59">_retries</a></td></tr>
<tr class="separator:acd4f8f8b9da6cf02ec4d4715cfce8b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A Connection object to make HTTP requests to a particular node. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa7ab6de915fb6e8eaf91c49c1b950433" name="aa7ab6de915fb6e8eaf91c49c1b950433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7ab6de915fb6e8eaf91c49c1b950433">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">__init__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*str&#160;</td>
<td class="paramname"><em>node_url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dict &#160;</td>
<td class="paramname"><em>headers</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes a :class:<code>~resdb_driver.connection.Connection</code> instance. </p>
<pre class="fragment">@param node_url (str): Url of the node to connect to.
@param headers (dict): Optional headers to send with each request.
@return An instance of the Connection class
</pre>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="abfe81cc22af1fe94d4622592a843923d" name="abfe81cc22af1fe94d4622592a843923d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfe81cc22af1fe94d4622592a843923d">&#9670;&#160;</a></span>_request()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"> <a class="el" href="namespaceresdb__driver_1_1connection.html#a12c40bac41268d36628cdd8c43da10dd">HttpResponse</a> _request </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**&#160;</td>
<td class="paramname"><em>kwargs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad69df57baeb0c349dc72e7e38d997fc4" name="ad69df57baeb0c349dc72e7e38d997fc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad69df57baeb0c349dc72e7e38d997fc4">&#9670;&#160;</a></span>get_backoff_timedelta()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> float get_backoff_timedelta </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a19266ed871cd2ded25922bb8b06d730c" name="a19266ed871cd2ded25922bb8b06d730c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19266ed871cd2ded25922bb8b06d730c">&#9670;&#160;</a></span>request()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> <a class="el" href="namespaceresdb__driver_1_1connection.html#a12c40bac41268d36628cdd8c43da10dd">HttpResponse</a> request </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>method</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*str &#160;</td>
<td class="paramname"><em>path</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dict &#160;</td>
<td class="paramname"><em>json</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dict &#160;</td>
<td class="paramname"><em>params</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dict &#160;</td>
<td class="paramname"><em>headers</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &#160;</td>
<td class="paramname"><em>timeout</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &#160;</td>
<td class="paramname"><em>backoff_cap</em> = <code>None</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**&#160;</td>
<td class="paramname"><em>kwargs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs an HTTP request with the given parameters. </p>
<p>Implements exponential backoff.</p>
<p>If <code>ConnectionError</code> occurs, a timestamp equal to now + the default delay (<code>BACKOFF_DELAY</code>) is assigned to the object. The timestamp is in UTC. Next time the function is called, it either waits till the timestamp is passed or raises <code>TimeoutError</code>.</p>
<p>If <code>ConnectionError</code> occurs two or more times in a row, the retry count is incremented and the new timestamp is calculated as now + the default delay multiplied by two to the power of the number of retries.</p>
<p>If a request is successful, the backoff timestamp is removed, the retry count is back to zero.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">method</td><td>(str): HTTP method (e.g.: <code>'GET'</code>). </td></tr>
<tr><td class="paramname">path</td><td>(str): API endpoint path (e.g.: <code>'/transactions'</code>). </td></tr>
<tr><td class="paramname">json</td><td>(dict): JSON data to send along with the request. </td></tr>
<tr><td class="paramname">params</td><td>(dict): Dictionary of URL (query) parameters. </td></tr>
<tr><td class="paramname">headers</td><td>(dict): Optional headers to pass to the request. </td></tr>
<tr><td class="paramname">timeout</td><td>(int): Optional timeout in seconds. </td></tr>
<tr><td class="paramname">backoff_cap</td><td>(int): The maximal allowed backoff delay in seconds to be assigned to a node. </td></tr>
<tr><td class="paramname">kwargs</td><td>Optional keyword arguments.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Response of the HTTP request. </dd></dl>
</div>
</div>
<a id="a152c1a059cb4e90467ddef606b729479" name="a152c1a059cb4e90467ddef606b729479"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a152c1a059cb4e90467ddef606b729479">&#9670;&#160;</a></span>update_backoff_time()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">update_backoff_time </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>success</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>backoff_cap</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="acd4f8f8b9da6cf02ec4d4715cfce8b59" name="acd4f8f8b9da6cf02ec4d4715cfce8b59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd4f8f8b9da6cf02ec4d4715cfce8b59">&#9670;&#160;</a></span>_retries</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">_retries</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a33faaacc83097623f41e27a1d3b24f6a" name="a33faaacc83097623f41e27a1d3b24f6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33faaacc83097623f41e27a1d3b24f6a">&#9670;&#160;</a></span>backoff_time</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">backoff_time</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab90428b2be3cf348c02614ae919e5de6" name="ab90428b2be3cf348c02614ae919e5de6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab90428b2be3cf348c02614ae919e5de6">&#9670;&#160;</a></span>node_url</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">node_url</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa0823e1ff851f7526e7fc5487718a051" name="aa0823e1ff851f7526e7fc5487718a051"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0823e1ff851f7526e7fc5487718a051">&#9670;&#160;</a></span>session</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">session</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/github/workspace/resdb_driver/<a class="el" href="connection_8py.html">connection.py</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceresdb__driver.html">resdb_driver</a></li><li class="navelem"><a class="el" href="namespaceresdb__driver_1_1connection.html">connection</a></li><li class="navelem"><a class="el" href="classresdb__driver_1_1connection_1_1Connection.html">Connection</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>