<!DOCTYPE html >
<html>
        <head>
          <title>storage - io.gearpump.streaming.storage</title>
          <meta name="description" content="storage - io.gearpump.streaming.storage" />
          <meta name="keywords" content="storage io.gearpump.streaming.storage" />
          <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.streaming.storage.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 alt="Package" 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.streaming">streaming</a></p>
        <h1>storage</h1><span class="permalink">
      <a href="../../../../index.html#io.gearpump.streaming.storage.package" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </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">storage</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.streaming.storage.AppDataStore" visbl="pub" data-isabs="true" fullComment="no" group="Ungrouped">
      <a id="AppDataStoreextendsAnyRef"></a>
      <a id="AppDataStore:AppDataStore"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">trait</span>
      </span>
      <span class="symbol">
        <a href="AppDataStore.html"><span class="name">AppDataStore</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.streaming.storage.package@AppDataStoreextendsAnyRef" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt">Generic storage to store KV Data.</p>
    </li><li name="io.gearpump.streaming.storage.InMemoryAppStoreOnMaster" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="InMemoryAppStoreOnMasterextendsAppDataStore"></a>
      <a id="InMemoryAppStoreOnMaster:InMemoryAppStoreOnMaster"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a href="InMemoryAppStoreOnMaster.html"><span class="name">InMemoryAppStoreOnMaster</span></a><span class="result"> extends <a href="AppDataStore.html" class="extype" name="io.gearpump.streaming.storage.AppDataStore">AppDataStore</a></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#io.gearpump.streaming.storage.package@InMemoryAppStoreOnMasterextendsAppDataStore" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt">In memory application storage located on master nodes
</p>
    </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>
