1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8 <title>Class: MCollective::RPC::Progress</title>
10 <link rel="stylesheet" href="../../rdoc.css" type="text/css" media="screen" />
12 <script src="../../js/jquery.js" type="text/javascript"
13 charset="utf-8"></script>
14 <script src="../../js/thickbox-compressed.js" type="text/javascript"
15 charset="utf-8"></script>
16 <script src="../../js/quicksearch.js" type="text/javascript"
17 charset="utf-8"></script>
18 <script src="../../js/darkfish.js" type="text/javascript"
19 charset="utf-8"></script>
25 <div id="file-metadata">
26 <div id="file-list-section" class="section">
27 <h3 class="section-header">In Files</h3>
28 <div class="section-body">
31 <li><a href="../../lib/mcollective/rpc/progress_rb.html?TB_iframe=true&height=550&width=785"
32 class="thickbox" title="lib/mcollective/rpc/progress.rb">lib/mcollective/rpc/progress.rb</a></li>
41 <div id="class-metadata">
45 <div id="parent-class-section" class="section">
46 <h3 class="section-header">Parent</h3>
48 <p class="link"><a href="../../Object.html">Object</a></p>
53 <!-- Namespace Contents -->
56 <!-- Method Quickref -->
58 <div id="method-list-section" class="section">
59 <h3 class="section-header">Methods</h3>
60 <ul class="link-list">
62 <li><a href="#M000391">::new</a></li>
64 <li><a href="#M000392">#twirl</a></li>
70 <!-- Included Modules -->
74 <div id="project-metadata">
77 <div id="fileindex-section" class="section project-section">
78 <h3 class="section-header">Files</h3>
81 <li class="file"><a href="../../COPYING.html">COPYING</a></li>
83 <li class="file"><a href="../../Gemfile.html">Gemfile</a></li>
85 <li class="file"><a href="../../README.html">README</a></li>
87 <li class="file"><a href="../../Rakefile.html">Rakefile</a></li>
89 <li class="file"><a href="../../etc/client_cfg_dist.html">client.cfg.dist</a></li>
91 <li class="file"><a href="../../etc/data-help_erb.html">data-help.erb</a></li>
93 <li class="file"><a href="../../etc/discovery-help_erb.html">discovery-help.erb</a></li>
95 <li class="file"><a href="../../etc/facts_yaml_dist.html">facts.yaml.dist</a></li>
97 <li class="file"><a href="../../etc/metadata-help_erb.html">metadata-help.erb</a></li>
99 <li class="file"><a href="../../etc/msg-help_erb.html">msg-help.erb</a></li>
101 <li class="file"><a href="../../etc/rpc-help_erb.html">rpc-help.erb</a></li>
103 <li class="file"><a href="../../etc/server_cfg_dist.html">server.cfg.dist</a></li>
105 <li class="file"><a href="../../etc/ssl/PLACEHOLDER.html">PLACEHOLDER</a></li>
107 <li class="file"><a href="../../etc/ssl/clients/PLACEHOLDER.html">PLACEHOLDER</a></li>
109 <li class="file"><a href="../../lib/mcollective/generators/templates/action_snippet_erb.html">action_snippet.erb</a></li>
111 <li class="file"><a href="../../lib/mcollective/generators/templates/data_input_snippet_erb.html">data_input_snippet.erb</a></li>
113 <li class="file"><a href="../../lib/mcollective/generators/templates/ddl_erb.html">ddl.erb</a></li>
115 <li class="file"><a href="../../lib/mcollective/generators/templates/plugin_erb.html">plugin.erb</a></li>
117 <li class="file"><a href="../../lib/mcollective/locales/en_yml.html">en.yml</a></li>
119 <li class="file"><a href="../../mcollective_init.html">mcollective.init</a></li>
125 <div id="classindex-section" class="section project-section">
126 <h3 class="section-header">Class Index
127 <span class="search-toggle"><img src="../../images/find.png"
128 height="16" width="16" alt="[+]"
129 title="show/hide quicksearch" /></span></h3>
130 <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
132 <legend>Quicksearch</legend>
133 <input type="text" name="quicksearch" value=""
134 class="quicksearch-field" />
138 <ul class="link-list">
140 <li><a href="../../MCollective.html">MCollective</a></li>
142 <li><a href="../../MCollective/Agent.html">MCollective::Agent</a></li>
144 <li><a href="../../MCollective/Agents.html">MCollective::Agents</a></li>
146 <li><a href="../../MCollective/Aggregate.html">MCollective::Aggregate</a></li>
148 <li><a href="../../MCollective/Aggregate/Base.html">MCollective::Aggregate::Base</a></li>
150 <li><a href="../../MCollective/Aggregate/Result.html">MCollective::Aggregate::Result</a></li>
152 <li><a href="../../MCollective/Aggregate/Result/Base.html">MCollective::Aggregate::Result::Base</a></li>
154 <li><a href="../../MCollective/Aggregate/Result/CollectionResult.html">MCollective::Aggregate::Result::CollectionResult</a></li>
156 <li><a href="../../MCollective/Aggregate/Result/NumericResult.html">MCollective::Aggregate::Result::NumericResult</a></li>
158 <li><a href="../../MCollective/Application.html">MCollective::Application</a></li>
160 <li><a href="../../MCollective/Applications.html">MCollective::Applications</a></li>
162 <li><a href="../../MCollective/Cache.html">MCollective::Cache</a></li>
164 <li><a href="../../MCollective/Client.html">MCollective::Client</a></li>
166 <li><a href="../../MCollective/CodedError.html">MCollective::CodedError</a></li>
168 <li><a href="../../MCollective/Config.html">MCollective::Config</a></li>
170 <li><a href="../../MCollective/Connector.html">MCollective::Connector</a></li>
172 <li><a href="../../MCollective/Connector/Base.html">MCollective::Connector::Base</a></li>
174 <li><a href="../../MCollective/DDL.html">MCollective::DDL</a></li>
176 <li><a href="../../MCollective/DDL/AgentDDL.html">MCollective::DDL::AgentDDL</a></li>
178 <li><a href="../../MCollective/DDL/Base.html">MCollective::DDL::Base</a></li>
180 <li><a href="../../MCollective/DDL/DataDDL.html">MCollective::DDL::DataDDL</a></li>
182 <li><a href="../../MCollective/DDL/DiscoveryDDL.html">MCollective::DDL::DiscoveryDDL</a></li>
184 <li><a href="../../MCollective/DDL/ValidatorDDL.html">MCollective::DDL::ValidatorDDL</a></li>
186 <li><a href="../../MCollective/DDLValidationError.html">MCollective::DDLValidationError</a></li>
188 <li><a href="../../MCollective/Data.html">MCollective::Data</a></li>
190 <li><a href="../../MCollective/Data/Base.html">MCollective::Data::Base</a></li>
192 <li><a href="../../MCollective/Data/Result.html">MCollective::Data::Result</a></li>
194 <li><a href="../../MCollective/Discovery.html">MCollective::Discovery</a></li>
196 <li><a href="../../MCollective/Facts.html">MCollective::Facts</a></li>
198 <li><a href="../../MCollective/Facts/Base.html">MCollective::Facts::Base</a></li>
200 <li><a href="../../MCollective/Generators.html">MCollective::Generators</a></li>
202 <li><a href="../../MCollective/Generators/AgentGenerator.html">MCollective::Generators::AgentGenerator</a></li>
204 <li><a href="../../MCollective/Generators/Base.html">MCollective::Generators::Base</a></li>
206 <li><a href="../../MCollective/Generators/DataGenerator.html">MCollective::Generators::DataGenerator</a></li>
208 <li><a href="../../MCollective/InvalidRPCData.html">MCollective::InvalidRPCData</a></li>
210 <li><a href="../../MCollective/Log.html">MCollective::Log</a></li>
212 <li><a href="../../MCollective/Logger.html">MCollective::Logger</a></li>
214 <li><a href="../../MCollective/Logger/Base.html">MCollective::Logger::Base</a></li>
216 <li><a href="../../MCollective/Logger/Console_logger.html">MCollective::Logger::Console_logger</a></li>
218 <li><a href="../../MCollective/Logger/File_logger.html">MCollective::Logger::File_logger</a></li>
220 <li><a href="../../MCollective/Logger/Syslog_logger.html">MCollective::Logger::Syslog_logger</a></li>
222 <li><a href="../../MCollective/Matcher.html">MCollective::Matcher</a></li>
224 <li><a href="../../MCollective/Matcher/Parser.html">MCollective::Matcher::Parser</a></li>
226 <li><a href="../../MCollective/Matcher/Scanner.html">MCollective::Matcher::Scanner</a></li>
228 <li><a href="../../MCollective/Message.html">MCollective::Message</a></li>
230 <li><a href="../../MCollective/MissingRPCData.html">MCollective::MissingRPCData</a></li>
232 <li><a href="../../MCollective/MsgDoesNotMatchRequestID.html">MCollective::MsgDoesNotMatchRequestID</a></li>
234 <li><a href="../../MCollective/MsgTTLExpired.html">MCollective::MsgTTLExpired</a></li>
236 <li><a href="../../MCollective/NotTargettedAtUs.html">MCollective::NotTargettedAtUs</a></li>
238 <li><a href="../../MCollective/Optionparser.html">MCollective::Optionparser</a></li>
240 <li><a href="../../MCollective/PluginManager.html">MCollective::PluginManager</a></li>
242 <li><a href="../../MCollective/PluginPackager.html">MCollective::PluginPackager</a></li>
244 <li><a href="../../MCollective/PluginPackager/AgentDefinition.html">MCollective::PluginPackager::AgentDefinition</a></li>
246 <li><a href="../../MCollective/PluginPackager/StandardDefinition.html">MCollective::PluginPackager::StandardDefinition</a></li>
248 <li><a href="../../MCollective/RPC.html">MCollective::RPC</a></li>
250 <li><a href="../../MCollective/RPC/ActionRunner.html">MCollective::RPC::ActionRunner</a></li>
252 <li><a href="../../MCollective/RPC/Agent.html">MCollective::RPC::Agent</a></li>
254 <li><a href="../../MCollective/RPC/Audit.html">MCollective::RPC::Audit</a></li>
256 <li><a href="../../MCollective/RPC/Client.html">MCollective::RPC::Client</a></li>
258 <li><a href="../../MCollective/RPC/Helpers.html">MCollective::RPC::Helpers</a></li>
260 <li><a href="../../MCollective/RPC/Progress.html">MCollective::RPC::Progress</a></li>
262 <li><a href="../../MCollective/RPC/Reply.html">MCollective::RPC::Reply</a></li>
264 <li><a href="../../MCollective/RPC/Request.html">MCollective::RPC::Request</a></li>
266 <li><a href="../../MCollective/RPC/Result.html">MCollective::RPC::Result</a></li>
268 <li><a href="../../MCollective/RPC/Stats.html">MCollective::RPC::Stats</a></li>
270 <li><a href="../../MCollective/RPCAborted.html">MCollective::RPCAborted</a></li>
272 <li><a href="../../MCollective/RPCError.html">MCollective::RPCError</a></li>
274 <li><a href="../../MCollective/Registration.html">MCollective::Registration</a></li>
276 <li><a href="../../MCollective/Registration/Base.html">MCollective::Registration::Base</a></li>
278 <li><a href="../../MCollective/Runner.html">MCollective::Runner</a></li>
280 <li><a href="../../MCollective/RunnerStats.html">MCollective::RunnerStats</a></li>
282 <li><a href="../../MCollective/SSL.html">MCollective::SSL</a></li>
284 <li><a href="../../MCollective/Security.html">MCollective::Security</a></li>
286 <li><a href="../../MCollective/Security/Base.html">MCollective::Security::Base</a></li>
288 <li><a href="../../MCollective/SecurityValidationFailed.html">MCollective::SecurityValidationFailed</a></li>
290 <li><a href="../../MCollective/Shell.html">MCollective::Shell</a></li>
292 <li><a href="../../MCollective/Translatable.html">MCollective::Translatable</a></li>
294 <li><a href="../../MCollective/UnixDaemon.html">MCollective::UnixDaemon</a></li>
296 <li><a href="../../MCollective/UnknownRPCAction.html">MCollective::UnknownRPCAction</a></li>
298 <li><a href="../../MCollective/UnknownRPCError.html">MCollective::UnknownRPCError</a></li>
300 <li><a href="../../MCollective/Util.html">MCollective::Util</a></li>
302 <li><a href="../../MCollective/Validator.html">MCollective::Validator</a></li>
304 <li><a href="../../MCollective/ValidatorError.html">MCollective::ValidatorError</a></li>
306 <li><a href="../../MCollective/WindowsDaemon.html">MCollective::WindowsDaemon</a></li>
308 <li><a href="../../Array.html">Array</a></li>
310 <li><a href="../../Dir.html">Dir</a></li>
312 <li><a href="../../Object.html">Object</a></li>
314 <li><a href="../../String.html">String</a></li>
316 <li><a href="../../Symbol.html">Symbol</a></li>
319 <div id="no-class-search-results" style="display: none;">No matching classes.</div>
326 <div id="documentation">
327 <h1 class="class">MCollective::RPC::Progress</h1>
329 <div id="description">
331 Class that shows a progress bar, currently only supports a twirling
335 You can specify a size for the progress bar if you want if you dont it will
336 use the helper functions to figure out terminal dimensions and draw an
337 appropriately sized bar
340 p = <a href="Progress.html#M000391">Progress.new</a> 100.times {|i| print
341 p.twirl(i+1, 100) + “r“};puts
344 * [ ==================================================> ] 100 / 100
357 <div id="public-class-method-details" class="method-section section">
358 <h3 class="section-header">Public Class Methods</h3>
361 <div id="new-method" class="method-detail ">
362 <a name="M000391"></a>
364 <div class="method-heading">
366 <span class="method-name">new</span><span
367 class="method-args">(size=nil)</span>
368 <span class="method-click-advice">click to toggle source</span>
372 <div class="method-description">
374 <p class="missing-docs">(Not documented)</p>
378 <div class="method-source-code"
381 <span class="ruby-comment cmt"># File lib/mcollective/rpc/progress.rb, line 15</span>
382 15: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">size</span>=<span class="ruby-keyword kw">nil</span>)
383 16: <span class="ruby-ivar">@twirl</span> = [<span class="ruby-value str">'|'</span>, <span class="ruby-value str">'/'</span>, <span class="ruby-value str">'-'</span>, <span class="ruby-value str">"\\"</span>, <span class="ruby-value str">'|'</span>, <span class="ruby-value str">'/'</span>, <span class="ruby-value str">'-'</span>, <span class="ruby-value str">"\\"</span>]
384 17: <span class="ruby-ivar">@twirldex</span> = <span class="ruby-value">0</span>
386 19: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">size</span>
387 20: <span class="ruby-ivar">@size</span> = <span class="ruby-identifier">size</span>
388 21: <span class="ruby-keyword kw">else</span>
389 22: <span class="ruby-identifier">cols</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">terminal_dimensions</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-value">22</span>
391 24: <span class="ruby-comment cmt"># Defaults back to old behavior if it</span>
392 25: <span class="ruby-comment cmt"># couldn't figure out the size or if</span>
393 26: <span class="ruby-comment cmt"># its more than 60 wide</span>
394 27: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cols</span> <span class="ruby-operator"><=</span> <span class="ruby-value">0</span>
395 28: <span class="ruby-ivar">@size</span> = <span class="ruby-value">0</span>
396 29: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cols</span> <span class="ruby-operator">></span> <span class="ruby-value">60</span>
397 30: <span class="ruby-ivar">@size</span> = <span class="ruby-value">60</span>
398 31: <span class="ruby-keyword kw">else</span>
399 32: <span class="ruby-ivar">@size</span> = <span class="ruby-identifier">cols</span>
400 33: <span class="ruby-keyword kw">end</span>
401 34: <span class="ruby-keyword kw">end</span>
402 35: <span class="ruby-keyword kw">end</span></pre>
413 <div id="public-instance-method-details" class="method-section section">
414 <h3 class="section-header">Public Instance Methods</h3>
417 <div id="twirl-method" class="method-detail ">
418 <a name="M000392"></a>
420 <div class="method-heading">
422 <span class="method-name">twirl</span><span
423 class="method-args">(current, total)</span>
424 <span class="method-click-advice">click to toggle source</span>
428 <div class="method-description">
430 <p class="missing-docs">(Not documented)</p>
434 <div class="method-source-code"
437 <span class="ruby-comment cmt"># File lib/mcollective/rpc/progress.rb, line 37</span>
438 37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">twirl</span>(<span class="ruby-identifier">current</span>, <span class="ruby-identifier">total</span>)
439 38: <span class="ruby-comment cmt"># if the size is negative there is just not enough</span>
440 39: <span class="ruby-comment cmt"># space on the terminal, return a simpler version</span>
441 40: <span class="ruby-keyword kw">return</span> <span class="ruby-node">"\r#{current} / #{total}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
443 42: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">total</span>
444 43: <span class="ruby-identifier">txt</span> = <span class="ruby-value str">"\r %s [ "</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:green</span>, <span class="ruby-value str">"*"</span>)
445 44: <span class="ruby-keyword kw">else</span>
446 45: <span class="ruby-identifier">txt</span> = <span class="ruby-value str">"\r %s [ "</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-ivar">@twirl</span>[<span class="ruby-ivar">@twirldex</span>])
447 46: <span class="ruby-keyword kw">end</span>
449 48: <span class="ruby-identifier">dashes</span> = ((<span class="ruby-identifier">current</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) <span class="ruby-operator">*</span> <span class="ruby-ivar">@size</span>).<span class="ruby-identifier">round</span>
451 50: <span class="ruby-identifier">dashes</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"="</span> }
452 51: <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">">"</span>
454 53: (<span class="ruby-ivar">@size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">dashes</span>).<span class="ruby-identifier">times</span> { <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" "</span> }
456 55: <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-node">" ] #{current} / #{total}"</span>
458 57: <span class="ruby-ivar">@twirldex</span> <span class="ruby-operator">==</span> <span class="ruby-value">7</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@twirldex</span> = <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@twirldex</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
460 59: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">txt</span>
461 60: <span class="ruby-keyword kw">end</span></pre>
476 <div id="rdoc-debugging-section-dump" class="debugging-section">
478 <p>Disabled; run with --debug to generate this.</p>
482 <div id="validator-badges">
483 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
484 <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
485 Rdoc Generator</a> 1.1.6</small>.</p>