Packages

100% API Complete Consul Client written in Elixir

Current section

Files

Jump to
consul_client docs Consul.Watch.html
Raw

docs/Consul.Watch.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.14.3">
<title>Consul.Watch – Consul v0.1.5</title>
<link rel="stylesheet" href="dist/app-091c05798a.css" />
<link rel="canonical" href="https://hexdocs.pm/consul_client/Consul.Watch.html" />
<script src="dist/sidebar_items.js"></script>
</head>
<body data-type="modules">
<script>if(localStorage.getItem('night-mode')) document.body.className += ' night-mode';</script>
<div class="main">
<button class="sidebar-toggle">
<i class="icon-menu"></i>
</button>
<section class="sidebar">
<a href="readme.html" class="sidebar-projectLink">
<div class="sidebar-projectDetails">
<h1 class="sidebar-projectName">
Consul
</h1>
<h2 class="sidebar-projectVersion">
v0.1.5
</h2>
</div>
</a>
<div class="sidebar-search">
<i class="icon-search"></i>
<input type="text" class="sidebar-searchInput" placeholder="search" autocomplete="off" />
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
<small class="visible-xs">Consul v0.1.5</small>
Consul.Watch
<a href="https://github.com/Toady00/consul/blob/master/lib/consul/watch.ex#L1" title="View Source" class="view-source" rel="help">
<i class="icon-code"></i>
</a>
</h1>
<section id="moduledoc">
<p>Consul provides a <code class="inline">blocking</code> query that allows you to watch for changes on
some endpoints. These are noted in the official consul documentation.</p>
<p>The default time that consul will wait before sending a response is 5 minutes.
After that the query will return even if there hasn’t been a change.</p>
<p>This module is the beginning of supporting these blocking queries at a higher
level than using the Raw client directly. <a href="Consul.Watch.html#content"><code class="inline">Consul.Watch</code></a> wraps the query in a
<a href="http://elixir-lang.org/docs/stable/elixir/Task.html"><code class="inline">Task</code></a> that can be used to retrieve the value whenever it returns.</p>
<p>The best way to use these tasks is probably going to be via <a href="http://elixir-lang.org/docs/stable/elixir/Task.html#yield/2"><code class="inline">Task.yield/2</code></a>
and friends. You can yield over and over again. If the query hasn’t returned
the yield will return <code class="inline">nil</code>. If the query has returned then it will return
<code class="inline">{:ok, %Consul.KV{}}</code>. Refer to the <a href="http://elixir-lang.org/docs/stable/elixir/Task.html"><code class="inline">Task</code></a> docs for more information on
working with <a href="http://elixir-lang.org/docs/stable/elixir/Task.html"><code class="inline">Task</code></a>s.</p>
</section>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<i class="icon-link"></i>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#task/1">task(kv)</a>
</div>
<div class="summary-synopsis"><p>Create a task representing a blocking KV request</p>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#task/2">task(path, index)</a>
</div>
<div class="summary-synopsis"><p>Create a task representing a blocking KV request</p>
</div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<i class="icon-link"></i>
</a>
Functions
</h1>
<div class="detail" id="task/1">
<div class="detail-header">
<a href="#task/1" class="detail-link" title="Link to this function">
<i class="icon-link"></i>
</a>
<span class="signature">task(kv)</span>
<a href="https://github.com/Toady00/consul/blob/master/lib/consul/watch.ex#L34" class="view-source" rel="help" title="View Source">
<i class="icon-code"></i>
</a>
<div class="specs">
<pre>task(<a href="Consul.KV.html#t:t/0">Consul.KV.t</a>) :: <a href="http://elixir-lang.org/docs/stable/elixir/Task.html#t:t/0">Task.t</a></pre>
</div>
</div>
<section class="docstring">
<p>Create a task representing a blocking KV request.</p>
</section>
</div>
<div class="detail" id="task/2">
<div class="detail-header">
<a href="#task/2" class="detail-link" title="Link to this function">
<i class="icon-link"></i>
</a>
<span class="signature">task(path, index)</span>
<a href="https://github.com/Toady00/consul/blob/master/lib/consul/watch.ex#L47" class="view-source" rel="help" title="View Source">
<i class="icon-code"></i>
</a>
<div class="specs">
<pre>task(<a href="http://elixir-lang.org/docs/stable/elixir/String.html#t:t/0">String.t</a>, pos_integer) :: <a href="http://elixir-lang.org/docs/stable/elixir/Task.html#t:t/0">Task.t</a></pre>
</div>
</div>
<section class="docstring">
<p>Create a task representing a blocking KV request.</p>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" rel="help" target="_blank">ExDoc</a> (v0.14.3),
</span>
<span class="line">
designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<button class="night-mode-toggle" />
</footer>
</div>
</div>
</section>
</div>
<script src="dist/app-574613960f.js"></script>
</body>
</html>