<!DOCTYPE html >
<html>
        <head>
          <title>local - io.gearpump.cluster.local</title>
          <meta name="description" content="local - io.gearpump.cluster.local" />
          <meta name="keywords" content="local io.gearpump.cluster.local" />
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          
      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
      <script type="text/javascript" src="../../../../lib/template.js"></script>
      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
      
      <script type="text/javascript">
         if(top === self) {
            var url = '../../../../index.html';
            var hash = 'io.gearpump.cluster.local.package';
            var anchor = window.location.hash;
            var anchor_opt = '';
            if (anchor.length >= 1)
              anchor_opt = '@' + anchor.substring(1);
            window.location.href = url + '#' + hash + anchor_opt;
         }
   	  </script>
    
        </head>
        <body class="value">
      <div id="definition">
        <img src="../../../../lib/package_big.png" />
        <p id="owner"><a href="../../../package.html" class="extype" name="io">io</a>.<a href="../../package.html" class="extype" name="io.gearpump">gearpump</a>.<a href="../package.html" class="extype" name="io.gearpump.cluster">cluster</a></p>
        <h1>local</h1><span class="permalink">
      <a href="../../../../index.html#io.gearpump.cluster.local.package" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" />
      </a>
    </span>
      </div>

      <h4 id="signature" class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <span class="name">local</span>
      </span>
      </h4>
      
          <div id="comment" class="fullcommenttop"></div>
        

      <div id="mbrsel">
        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
        
        
        <div id="visbl">
            <span class="filtertype">Visibility</span>
            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
          </div>
      </div>

      <div id="template">
        <div id="allMembers">
        

        <div id="types" class="types members">
              <h3>Type Members</h3>
              <ol><li name="io.gearpump.cluster.local.LocalCluster" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="LocalClusterextendsAnyRef"></a>
      <a id="LocalCluster:LocalCluster"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a href="LocalCluster.html"><span class="name">LocalCluster</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#io.gearpump.cluster.local.package@LocalClusterextendsAnyRef" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" />
      </a>
    </span>
      <p class="shortcomment cmt">Create a in-process cluster with single worker
</p>
    </li></ol>
            </div>

        

        <div id="values" class="values members">
              <h3>Value Members</h3>
              <ol><li name="io.gearpump.cluster.local.LocalCluster" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="LocalCluster"></a>
      <a id="LocalCluster:LocalCluster"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">object</span>
      </span>
      <span class="symbol">
        <a href="LocalCluster$.html"><span class="name">LocalCluster</span></a>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#io.gearpump.cluster.local.package@LocalCluster" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" />
      </a>
    </span>
      
    </li></ol>
            </div>

        

        
        </div>

        <div id="inheritedMembers">
        
        
        </div>

        <div id="groupedMembers">
        <div class="group" name="Ungrouped">
              <h3>Ungrouped</h3>
              
            </div>
        </div>

      </div>

      <div id="tooltip"></div>

      <div id="footer">  </div>


    </body>
      </html>