<!DOCTYPE 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">
<meta name="description" content="">
<meta name="keywords" content=" ">
<title>Changing a polled source stream's period  | Apache Edgent Documentation</title>
<link rel="stylesheet" type="text/css" href="../css/syntax.css">
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css">
<!--<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css">-->
<link rel="stylesheet" type="text/css" href="../css/modern-business.css">
<link rel="stylesheet" type="text/css" href="../css/lavish-bootstrap.css">
<link rel="stylesheet" type="text/css" href="../css/customstyles.css">
<link rel="stylesheet" type="text/css" href="../css/theme-blue.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="../js/jquery.navgoco.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js"></script>
<script src="../js/toc.js"></script>
<script src="../js/customscripts.js"></script>
<link rel="shortcut icon" href="../common_images/favicon.ico" type="image/x-icon">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->







 

<script>
  $(function () {
      $('[data-toggle="tooltip"]').tooltip()
  })
</script>



  </head>

<body>

   <!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <div class="container topnavlinks">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

            <a class="fa fa-home fa-lg navbar-brand" href="../docs/home.html">&nbsp;<span class="projectTitle"> Apache Edgent Documentation</span></a>

        </div>
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
                <!-- entries without drop-downs appear here -->
                <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
                








                <li class="dropdown">
                    
                    
                    
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">GitHub Repos<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        
                        
                        
                        <li><a href="https://github.com/apache/incubator-edgent" target="_blank">Source code</a></li>
                        
                        
                        
                        
                        
                        <li><a href="https://github.com/apache/incubator-edgent-samples" target="_blank">Edgent Samples</a></li>
                        
                        
                        
                        
                        
                        <li><a href="https://github.com/apache/incubator-edgent-website" target="_blank">Website/Documentation</a></li>
                        
                        
                        
                        

                    </ul>
                </li>
                
                


                <li class="dropdown">
                    
                    
                    
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Javadoc<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        
                        
                        
                        <li><a href="..\javadoc\latest">latest</a></li>
                        
                        
                        
                        
                        
                        <li><a href="..\javadoc\r1.2.0">1.2.0</a></li>
                        
                        
                        
                        
                        
                        <li><a href="..\javadoc\r1.1.0">1.1.0</a></li>
                        
                        
                        
                        
                        
                        <li><a href="..\javadoc\r1.0.0">1.0.0</a></li>
                        
                        
                        
                        
                        
                        <li><a href="..\javadoc\r0.4.0">0.4.0</a></li>
                        
                        
                        
                        

                    </ul>
                </li>
                
                


                <!-- entries with drop-downs appear here -->
                <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->

                <li class="dropdown">
                    
                    
                    
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Edgent Resources<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        
                        
                        
                        <li><a href="downloads">Download</a></li>
                        
                        
                        
                        
                        
                        <li><a href="faq">FAQ</a></li>
                        
                        
                        
                        
                        
                        <li class="dropdownActive"><a href="/">edgent.apache.org</a></li>
                        
                        
                        
                        

                    </ul>
                </li>
                
                


                <!-- special insertion -->

               
                <!-- Send feedback function -->
<script>
function SendLinkByMail(href) {
var subject= "Apache Edgent Documentation feedback";
var body = "I have some feedback about the Changing a polled source stream's period page: ";
body += window.location.href;
body += "";
var uri = "mailto:?subject=";
uri += encodeURIComponent(subject);
uri += "&body=";
uri += encodeURIComponent(body);
window.location.href = uri;
}
</script>

<li><a href="mailto:dev@edgent.incubator.apache.org" target="_blank"><i class="fa fa-envelope-o"></i> Feedback</a></li>


                <!--uncomment this block if you want simple search instead of algolia-->
                <li>
                     <!--start search-->
                    <div id="search-demo-container">
                        <input type="text" id="search-input" placeholder="search...">
                        <ul id="results-container"></ul>
                    </div>
                    <script src="../js/jekyll-search.js" type="text/javascript"></script>
                    <script type="text/javascript">
                        SimpleJekyllSearch.init({
                            searchInput: document.getElementById('search-input'),
                            resultsContainer: document.getElementById('results-container'),
                            dataSource: '../search.json',
                            searchResultTemplate: '<li><a href="{url}" title="Changing a polled source stream\s period">{title}</a></li>',
                        noResultsText: 'No results found.',
                                limit: 10,
                                fuzzy: true,
                        })
                    </script>
                     <!--end search-->
                </li>

            
        </div>
        <!-- /.container -->
</nav>



    <!-- Page Content -->
    <div class="container">
        <div class="col-lg-12">&nbsp;</div>


<!-- Content Row -->
<div class="row">
    <!-- Sidebar Column -->
    <div class="col-md-3">

        <script>

            $(document).ready(function() {
                // Initialize navgoco with default options
                $("#mysidebar").navgoco({
                    caretHtml: '',
                    accordion: true,
                    openClass: 'active', // open
                    save: true,
                    cookie: {
                        name: 'navgoco',
                        expires: false,
                        path: '/'
                    },
                    slide: {
                        duration: 400,
                        easing: 'swing'
                    }
                });

                $("#collapseAll").click(function(e) {
                    e.preventDefault();
                    $("#mysidebar").navgoco('toggle', false);
                });

                $("#expandAll").click(function(e) {
                    e.preventDefault();
                    $("#mysidebar").navgoco('toggle', true);
                });

            });

        </script>


        









        <ul id="mysidebar" class="nav">

            <span class="siteTagline">Edgent</span>
            <span class="versionTagline">Version 1.2.0-incubating</span>

            
            
            
                
            
            <li><a href="#">Overview</a>
                <ul>
                    
                    
                    
                    
                    <li><a href="../docs/edgent_index.html">Introduction</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/home.html">Edgent Overview</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/power-of-edgent.html">The Power of Edgent</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/faq.html">FAQ</a></li>
                    

                    

                    
                    
                </ul>
                
                
            
            <li><a href="#">Get Started</a>
                <ul>
                    
                    
                    
                    
                    <li><a href="../docs/downloads.html">Downloads</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/edgent-getting-started.html">Getting Started Guide</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/edgent-getting-started-samples.html">Quickstart with Edgent Samples</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/application-development.html">Understanding App Development</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/quickstart.html">Quickstart IBM Watson IoT Platform</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/common-edgent-operations.html">Common operations</a></li>
                    

                    

                    
                    
                </ul>
                
                
            
            <li><a href="#">Edgent Cookbook</a>
                <ul>
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_hello_edgent.html">Hello Edgent!</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_source_function.html">Writing a source function</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_value_out_of_range.html">Detecting a sensor value out of expected range</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Applying different processing against a single stream</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_combining_streams_processing_results.html">Splitting a stream to apply different processing and combining the results into a single stream</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_external_filter_range.html">Using an external configuration file for filter ranges</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_adaptable_filter_range.html">Changing a filter's range</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li class="active"><a href="../recipes/recipe_adaptable_polling_source.html">Changing a polled source stream's period</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_adaptable_deadtime_filter.html">Using an adaptable deadtime filter</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_dynamic_analytic_control.html">Dynamically enabling analytic flows</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_parallel_analytics.html">How can I run analytics on several tuples in parallel?</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_concurrent_analytics.html">How can I run several analytics on a tuple concurrently?</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../recipes/recipe_writing_a_connector.html">How do I write a connector?</a></li>
                    

                    

                    
                    
                </ul>
                
                
            
            <li><a href="#">Using the Console</a>
                <ul>
                    
                    
                    
                    
                    <li><a href="../docs/console.html">Using the console</a></li>
                    

                    

                    
                    
                </ul>
                
                
            
            <li><a href="#">Get Involved</a>
                <ul>
                    
                    
                    
                    
                    <li><a href="../docs/community.html">How to participate</a></li>
                    

                    

                    
                    
                    
                    
                    
                    <li><a href="../docs/committers.html">Committers</a></li>
                    

                    

                    
                    
                </ul>
                
                
                


                <!-- if you aren't using the accordion, uncomment this block:

                     <p class="external">
                         <a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a>
                     </p>
                 -->
				 <br/>
			</li>
		</ul>
		<div class="row">
		<div class="col-md-12">
			
<!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
<script>
$( document ).ready(function() {
  // Handler for .ready() called.

$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });

/* this offset helps account for the space taken up by the floating toolbar. */
$('#toc').on('click', 'a', function() {
  var target = $(this.getAttribute('href'))
    , scroll_target = target.offset().top

  $(window).scrollTop(scroll_target - 10);
  return false
})
  
});
</script>


<div id="toc"></div>

		</div>
	</div>
	</div>
	
    <!-- this highlights the active parent class in the navgoco sidebar. this is critical so that the parent expands when you're viewing a page. This must appear below the sidebar code above. Otherwise, if placed inside customscripts.js, the script runs before the sidebar code runs and the class never gets inserted.-->
    <script>$("li.active").parents('li').toggleClass("active");</script>


            <!-- Content Column -->
            <div class="col-md-9">
                
                <div class="post-header">
   <h1 class="post-title-main">Changing a polled source stream's period</h1>
</div>

<div class="post-content">

   

<!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
<script>
$( document ).ready(function() {
  // Handler for .ready() called.

$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });

/* this offset helps account for the space taken up by the floating toolbar. */
$('#toc').on('click', 'a', function() {
  var target = $(this.getAttribute('href'))
    , scroll_target = target.offset().top

  $(window).scrollTop(scroll_target - 10);
  return false
})
  
});
</script>


<div id="toc"></div>


    

    <a target="_blank" href="https://github.com/apache/incubator-edgent-website/blob/master/site/recipes/recipe_adaptable_polling_source.md" class="btn btn-default githubEditButton" role="button"><i class="fa fa-github fa-lg"></i> Edit me</a>
    
  <p>The <a href="recipe_source_function.html">Writing a source function</a> recipe introduced the basics of creating a source stream by polling a data source periodically.</p>

<p>Oftentimes, a user wants the poll frequency to be adaptable rather than static. For example, an event such as a sudden rise in a temperature sensor may motivate more frequent polling of the sensor and analysis of the data until the condition subsides. A change in the poll frequency may be driven by locally performed analytics or via a command from an external source.</p>

<p>An Edgent <code>IotProvider</code> and <code>IoTDevice</code> with its command streams would be a natural way to control the application. In this recipe we will just simulate a &quot;set poll period&quot; command stream.</p>

<p>The <code>Topology.poll()</code> <a href="/javadoc/latest/org/apache/edgent/topology/Topology.html#poll-org.apache.edgent.function.Supplier-long-java.util.concurrent.TimeUnit-">documentation</a> describes how the poll period may be changed at runtime.</p>

<p>The mechanism is based on a more general Edgent runtime <code>edgent.execution.services.ControlService</code> service. The runtime registers &quot;control beans&quot; for entities that are controllable. These controls can be retrieved at runtime via the service.</p>

<p>At runtime, <code>Topology.poll()</code> registers a <code>edgent.execution.mbeans.PeriodMXBean</code> control. <strong>Retrieving the control at runtime requires setting an alias on the poll generated stream using <code>TStream.alias()</code>.</strong></p>

<h2 id="create-the-polled-stream-and-set-its-alias">Create the polled stream and set its alias</h2>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">Topology</span> <span class="n">top</span> <span class="o">=</span> <span class="o">...;</span>
<span class="n">SimulatedTemperatureSensor</span> <span class="n">tempSensor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimulatedTemperatureSensor</span><span class="o">();</span>
<span class="n">TStream</span><span class="o">&lt;</span><span class="n">Double</span><span class="o">&gt;</span> <span class="n">engineTemp</span> <span class="o">=</span> <span class="n">top</span><span class="o">.</span><span class="na">poll</span><span class="o">(</span><span class="n">tempSensor</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">)</span>
                              <span class="o">.</span><span class="na">alias</span><span class="o">(</span><span class="s">"engineTemp"</span><span class="o">)</span>
                              <span class="o">.</span><span class="na">tag</span><span class="o">(</span><span class="s">"engineTemp"</span><span class="o">);</span>
</code></pre></div>
<p>It&#39;s also a good practice to add tags to streams to improve the usability of the development mode Edgent console.</p>

<h2 id="define-a-set-poll-period-method">Define a &quot;set poll period&quot; method</h2>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">static</span> <span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="kt">void</span> <span class="nf">setPollPeriod</span><span class="o">(</span><span class="n">TStream</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">pollStream</span><span class="o">,</span> <span class="kt">long</span> <span class="n">period</span><span class="o">,</span> <span class="n">TimeUnit</span> <span class="n">unit</span><span class="o">)</span> <span class="o">{</span>
    <span class="c1">// get the topology's runtime ControlService service</span>
    <span class="n">ControlService</span> <span class="n">cs</span> <span class="o">=</span> <span class="n">pollStream</span><span class="o">.</span><span class="na">topology</span><span class="o">().</span><span class="na">getRuntimeServiceSupplier</span><span class="o">()</span>
                                <span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">getService</span><span class="o">(</span><span class="n">ControlService</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>

    <span class="c1">// using the the stream's alias, get its PeriodMXBean control</span>
    <span class="n">PeriodMXBean</span> <span class="n">control</span> <span class="o">=</span> <span class="n">cs</span><span class="o">.</span><span class="na">getControl</span><span class="o">(</span><span class="n">TStream</span><span class="o">.</span><span class="na">TYPE</span><span class="o">,</span> <span class="n">pollStream</span><span class="o">.</span><span class="na">getAlias</span><span class="o">(),</span> <span class="n">PeriodMXBean</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>

    <span class="c1">// change the poll period using the control</span>
    <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Setting period="</span><span class="o">+</span><span class="n">period</span><span class="o">+</span><span class="s">" "</span><span class="o">+</span><span class="n">unit</span><span class="o">+</span><span class="s">" stream="</span><span class="o">+</span><span class="n">pollStream</span><span class="o">);</span>
    <span class="n">control</span><span class="o">.</span><span class="na">setPeriod</span><span class="o">(</span><span class="n">period</span><span class="o">,</span> <span class="n">unit</span><span class="o">);</span>
<span class="o">}</span>
</code></pre></div>
<h2 id="process-the-set-poll-period-command-stream">Process the &quot;set poll period&quot; command stream</h2>

<p>Our commands are on the <code>TStream&lt;JsonObject&gt; cmds</code> stream. Each <code>JsonObject</code> tuple is a command with the properties &quot;period&quot; and &quot;unit&quot;.</p>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">cmds</span><span class="o">.</span><span class="na">sink</span><span class="o">(</span><span class="n">json</span> <span class="o">-&gt;</span> <span class="n">setPollPeriod</span><span class="o">(</span><span class="n">engineTemp</span><span class="o">,</span>
    <span class="n">json</span><span class="o">.</span><span class="na">getAsJsonPrimitive</span><span class="o">(</span><span class="s">"period"</span><span class="o">).</span><span class="na">getAsLong</span><span class="o">(),</span>
    <span class="n">TimeUnit</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">json</span><span class="o">.</span><span class="na">getAsJsonPrimitive</span><span class="o">(</span><span class="s">"unit"</span><span class="o">).</span><span class="na">getAsString</span><span class="o">())));</span>
</code></pre></div>
<h2 id="the-final-application">The final application</h2>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kn">import</span> <span class="nn">java.util.Date</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.util.concurrent.TimeUnit</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.util.concurrent.atomic.AtomicInteger</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">com.google.gson.JsonObject</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.apache.edgent.execution.mbeans.PeriodMXBean</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.execution.services.ControlService</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.providers.development.DevelopmentProvider</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.providers.direct.DirectProvider</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.samples.utils.sensor.SimulatedTemperatureSensor</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.topology.TStream</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.edgent.topology.Topology</span><span class="o">;</span>

<span class="cm">/**
 * A recipe for a polled source stream with an adaptable poll period.
 */</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">AdaptablePolledSource</span> <span class="o">{</span>

    <span class="cm">/**
     * Poll a temperature sensor to periodically obtain temperature readings.
     * Respond to a simulated command stream to change the poll period.
     */</span>
    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>

        <span class="n">DirectProvider</span> <span class="n">dp</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DirectProvider</span><span class="o">();</span>

        <span class="n">Topology</span> <span class="n">top</span> <span class="o">=</span> <span class="n">dp</span><span class="o">.</span><span class="na">newTopology</span><span class="o">(</span><span class="s">"TemperatureSensor"</span><span class="o">);</span>

        <span class="c1">// Generate a polled temperature sensor stream and set its alias</span>
        <span class="n">SimulatedTemperatureSensor</span> <span class="n">tempSensor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimulatedTemperatureSensor</span><span class="o">();</span>
        <span class="n">TStream</span><span class="o">&lt;</span><span class="n">Double</span><span class="o">&gt;</span> <span class="n">engineTemp</span> <span class="o">=</span> <span class="n">top</span><span class="o">.</span><span class="na">poll</span><span class="o">(</span><span class="n">tempSensor</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">)</span>
                                      <span class="o">.</span><span class="na">alias</span><span class="o">(</span><span class="s">"engineTemp"</span><span class="o">)</span>
                                      <span class="o">.</span><span class="na">tag</span><span class="o">(</span><span class="s">"engineTemp"</span><span class="o">);</span>

        <span class="c1">// Report the time each temperature reading arrives and the value</span>
        <span class="n">engineTemp</span><span class="o">.</span><span class="na">peek</span><span class="o">(</span><span class="n">tuple</span> <span class="o">-&gt;</span> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="k">new</span> <span class="n">Date</span><span class="o">()</span> <span class="o">+</span> <span class="s">" temp="</span> <span class="o">+</span> <span class="n">tuple</span><span class="o">));</span>

        <span class="c1">// Generate a simulated "set poll period" command stream</span>
        <span class="n">TStream</span><span class="o">&lt;</span><span class="n">JsonObject</span><span class="o">&gt;</span> <span class="n">cmds</span> <span class="o">=</span> <span class="n">simulatedSetPollPeriodCmds</span><span class="o">(</span><span class="n">top</span><span class="o">);</span>

        <span class="c1">// Process the commands to change the poll period</span>
        <span class="n">cmds</span><span class="o">.</span><span class="na">sink</span><span class="o">(</span><span class="n">json</span> <span class="o">-&gt;</span> <span class="n">setPollPeriod</span><span class="o">(</span><span class="n">engineTemp</span><span class="o">,</span>
            <span class="n">json</span><span class="o">.</span><span class="na">getAsJsonPrimitive</span><span class="o">(</span><span class="s">"period"</span><span class="o">).</span><span class="na">getAsLong</span><span class="o">(),</span>
            <span class="n">TimeUnit</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">json</span><span class="o">.</span><span class="na">getAsJsonPrimitive</span><span class="o">(</span><span class="s">"unit"</span><span class="o">).</span><span class="na">getAsString</span><span class="o">())));</span>

        <span class="n">dp</span><span class="o">.</span><span class="na">submit</span><span class="o">(</span><span class="n">top</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="kd">static</span> <span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="kt">void</span> <span class="nf">setPollPeriod</span><span class="o">(</span><span class="n">TStream</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">pollStream</span><span class="o">,</span> <span class="kt">long</span> <span class="n">period</span><span class="o">,</span> <span class="n">TimeUnit</span> <span class="n">unit</span><span class="o">)</span> <span class="o">{</span>
        <span class="c1">// get the topology's runtime ControlService service</span>
        <span class="n">ControlService</span> <span class="n">cs</span> <span class="o">=</span> <span class="n">pollStream</span><span class="o">.</span><span class="na">topology</span><span class="o">().</span><span class="na">getRuntimeServiceSupplier</span><span class="o">()</span>
                                    <span class="o">.</span><span class="na">get</span><span class="o">().</span><span class="na">getService</span><span class="o">(</span><span class="n">ControlService</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>

        <span class="c1">// using the the stream's alias, get its PeriodMXBean control</span>
        <span class="n">PeriodMXBean</span> <span class="n">control</span> <span class="o">=</span> <span class="n">cs</span><span class="o">.</span><span class="na">getControl</span><span class="o">(</span><span class="n">TStream</span><span class="o">.</span><span class="na">TYPE</span><span class="o">,</span> <span class="n">pollStream</span><span class="o">.</span><span class="na">getAlias</span><span class="o">(),</span> <span class="n">PeriodMXBean</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>

        <span class="c1">// change the poll period using the control</span>
        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Setting period="</span><span class="o">+</span><span class="n">period</span><span class="o">+</span><span class="s">" "</span><span class="o">+</span><span class="n">unit</span><span class="o">+</span><span class="s">" stream="</span><span class="o">+</span><span class="n">pollStream</span><span class="o">);</span>
        <span class="n">control</span><span class="o">.</span><span class="na">setPeriod</span><span class="o">(</span><span class="n">period</span><span class="o">,</span> <span class="n">unit</span><span class="o">);</span>
    <span class="o">}</span>

    <span class="kd">static</span> <span class="n">TStream</span><span class="o">&lt;</span><span class="n">JsonObject</span><span class="o">&gt;</span> <span class="nf">simulatedSetPollPeriodCmds</span><span class="o">(</span><span class="n">Topology</span> <span class="n">top</span><span class="o">)</span> <span class="o">{</span>
        <span class="n">AtomicInteger</span> <span class="n">lastPeriod</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtomicInteger</span><span class="o">(</span><span class="mi">1</span><span class="o">);</span>
        <span class="n">TStream</span><span class="o">&lt;</span><span class="n">JsonObject</span><span class="o">&gt;</span> <span class="n">cmds</span> <span class="o">=</span> <span class="n">top</span><span class="o">.</span><span class="na">poll</span><span class="o">(()</span> <span class="o">-&gt;</span> <span class="o">{</span>
                <span class="c1">// toggle between 1 and 2 sec period</span>
                <span class="kt">int</span> <span class="n">newPeriod</span> <span class="o">=</span> <span class="n">lastPeriod</span><span class="o">.</span><span class="na">get</span><span class="o">()</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">?</span> <span class="mi">2</span> <span class="o">:</span> <span class="mi">1</span><span class="o">;</span>
                <span class="n">lastPeriod</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">newPeriod</span><span class="o">);</span>
                <span class="n">JsonObject</span> <span class="n">jo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">JsonObject</span><span class="o">();</span>
                <span class="n">jo</span><span class="o">.</span><span class="na">addProperty</span><span class="o">(</span><span class="s">"period"</span><span class="o">,</span> <span class="n">newPeriod</span><span class="o">);</span>
                <span class="n">jo</span><span class="o">.</span><span class="na">addProperty</span><span class="o">(</span><span class="s">"unit"</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">.</span><span class="na">toString</span><span class="o">());</span>
                <span class="k">return</span> <span class="n">jo</span><span class="o">;</span>
            <span class="o">},</span> <span class="mi">5</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">)</span>
            <span class="o">.</span><span class="na">tag</span><span class="o">(</span><span class="s">"cmds"</span><span class="o">);</span>
        <span class="k">return</span> <span class="n">cmds</span><span class="o">;</span>
    <span class="o">}</span>

<span class="o">}</span>
</code></pre></div>

<div class="tags">
    
</div>

<!-- 

    <div id="disqus_thread"></div>
    <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'idrbwjekyll'; // required: replace example with your forum shortname

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
    <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 -->

</div>



<footer>
    <div class="row">
        <div class="col-lg-12 footer">

             Site last
            generated: Apr 3, 2019 <br/>

        </div>
    </div>
    <br/>
    <div class="row">
        <div class="col-md-12">
            <p class="small">Apache Edgent is an effort undergoing Incubation at The Apache Software
                Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects
                until a further review indicates that the infrastructure, communications, and decision making process
                have stabilized in a manner consistent with other successful ASF projects. While incubation status is
                not necessarily a reflection of the completeness or stability of the code, it does indicate that the
                project has yet to be fully endorsed by the ASF.</p>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <p class="small">Copyright © 2016 The Apache Software Foundation. Licensed under the Apache
                License, Version 2.0.
                Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
                Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their
                respective owners.</p>
        </div>
    </div>

    <div class="container">
        <div class="row">
        <div>
            <img class="img-responsive center-block" src="../img/edgent_incubation.png" style="display: block; margin: auto;"alt="">
        </div>
    </div>
</footer>

            </div><!-- /.row -->

    </div>    <!-- /.container -->

</body>


</html>

