blob: 8bbb32df850febeaf0853576c9c2a018936b3fdb [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SessionStore (kafka 3.6.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.kafka.streams.state, interface: SessionStore">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.kafka.streams.state</a></div>
<h1 title="Interface SessionStore" class="title">Interface SessionStore&lt;K,<wbr>AGG&gt;</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>K</code> - type of the record keys</dd>
<dd><code>AGG</code> - type of the aggregated values</dd>
</dl>
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;K,<wbr>AGG&gt;</code>, <code><a href="../processor/StateStore.html" title="interface in org.apache.kafka.streams.processor">StateStore</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">SessionStore&lt;K,<wbr>AGG&gt;</span><span class="extends-implements">
extends <a href="../processor/StateStore.html" title="interface in org.apache.kafka.streams.processor">StateStore</a>, <a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;K,<wbr>AGG&gt;</span></div>
<div class="block">Interface for storing the aggregated values of sessions.
<p>
The key is internally represented as <a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream"><code>Windowed&lt;K&gt;</code></a> that comprises the plain
key and the <a href="../kstream/Window.html" title="class in org.apache.kafka.streams.kstream"><code>Window</code></a> that represents window start- and end-timestamp.
<p>
If two sessions are merged, a new session with new start- and end-timestamp must be inserted into
the store while the two old sessions must be deleted.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#backwardFindSessions(K,java.time.Instant,java.time.Instant)" class="member-name-link">backwardFindSessions</a><wbr>(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Fetch any sessions with the matching key and the sessions end is &ge; earliestSessionEndTime
and the sessions start is &le; latestSessionStartTime iterating from latest to earliest.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#backwardFindSessions(K,K,java.time.Instant,java.time.Instant)" class="member-name-link">backwardFindSessions</a><wbr>(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyFrom,
<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyTo,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Fetch any sessions in the given range of keys and the sessions end is &ge;
earliestSessionEndTime and the sessions start is &le; latestSessionStartTime iterating from
latest to earliest.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="SessionStore.html" title="type parameter in SessionStore">AGG</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#fetchSession(K,java.time.Instant,java.time.Instant)" class="member-name-link">fetchSession</a><wbr>(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;sessionStartTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;sessionEndTime)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Get the value of key from a single session.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#findSessions(long,long)" class="member-name-link">findSessions</a><wbr>(long&nbsp;earliestSessionEndTime,
long&nbsp;latestSessionEndTime)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Return all the session window entries that ends between the specified range (both ends are inclusive).</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#findSessions(K,java.time.Instant,java.time.Instant)" class="member-name-link">findSessions</a><wbr>(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Fetch any sessions with the matching key and the sessions end is &ge; earliestSessionEndTime
and the sessions start is &le; latestSessionStartTime iterating from earliest to latest.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#findSessions(K,K,java.time.Instant,java.time.Instant)" class="member-name-link">findSessions</a><wbr>(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyFrom,
<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyTo,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Fetch any sessions in the given range of keys and the sessions end is &ge;
earliestSessionEndTime and the sessions start is &le; latestSessionStartTime iterating from
earliest to latest.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#put(org.apache.kafka.streams.kstream.Windowed,AGG)" class="member-name-link">put</a><wbr>(<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;&nbsp;sessionKey,
<a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&nbsp;aggregate)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Write the aggregated value for the provided key to the store</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#remove(org.apache.kafka.streams.kstream.Windowed)" class="member-name-link">remove</a><wbr>(<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;&nbsp;sessionKey)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Remove the session aggregated with provided <a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream"><code>Windowed</code></a> key from the store</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.kafka.streams.state.ReadOnlySessionStore">Methods inherited from interface&nbsp;org.apache.kafka.streams.state.<a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a></h3>
<code><a href="ReadOnlySessionStore.html#backwardFetch(K)">backwardFetch</a>, <a href="ReadOnlySessionStore.html#backwardFetch(K,K)">backwardFetch</a>, <a href="ReadOnlySessionStore.html#backwardFindSessions(K,long,long)">backwardFindSessions</a>, <a href="ReadOnlySessionStore.html#backwardFindSessions(K,K,long,long)">backwardFindSessions</a>, <a href="ReadOnlySessionStore.html#fetch(K)">fetch</a>, <a href="ReadOnlySessionStore.html#fetch(K,K)">fetch</a>, <a href="ReadOnlySessionStore.html#fetchSession(K,long,long)">fetchSession</a>, <a href="ReadOnlySessionStore.html#findSessions(K,long,long)">findSessions</a>, <a href="ReadOnlySessionStore.html#findSessions(K,K,long,long)">findSessions</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.kafka.streams.processor.StateStore">Methods inherited from interface&nbsp;org.apache.kafka.streams.processor.<a href="../processor/StateStore.html" title="interface in org.apache.kafka.streams.processor">StateStore</a></h3>
<code><a href="../processor/StateStore.html#close()">close</a>, <a href="../processor/StateStore.html#flush()">flush</a>, <a href="../processor/StateStore.html#getPosition()">getPosition</a>, <a href="../processor/StateStore.html#init(org.apache.kafka.streams.processor.ProcessorContext,org.apache.kafka.streams.processor.StateStore)">init</a>, <a href="../processor/StateStore.html#init(org.apache.kafka.streams.processor.StateStoreContext,org.apache.kafka.streams.processor.StateStore)">init</a>, <a href="../processor/StateStore.html#isOpen()">isOpen</a>, <a href="../processor/StateStore.html#name()">name</a>, <a href="../processor/StateStore.html#persistent()">persistent</a>, <a href="../processor/StateStore.html#query(org.apache.kafka.streams.query.Query,org.apache.kafka.streams.query.PositionBound,org.apache.kafka.streams.query.QueryConfig)">query</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="findSessions(long,long)">
<h3>findSessions</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</span>&nbsp;<span class="element-name">findSessions</span><wbr><span class="parameters">(long&nbsp;earliestSessionEndTime,
long&nbsp;latestSessionEndTime)</span></div>
<div class="block">Return all the session window entries that ends between the specified range (both ends are inclusive).
This function would be used to retrieve all closed and immutable windows.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>earliestSessionEndTime</code> - earliest session end time to search from, inclusive</dd>
<dd><code>latestSessionEndTime</code> - latest session end time to search to, inclusive</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="findSessions(K,java.time.Instant,java.time.Instant)">
<h3 id="findSessions(java.lang.Object,java.time.Instant,java.time.Instant)">findSessions</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</span>&nbsp;<span class="element-name">findSessions</span><wbr><span class="parameters">(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ReadOnlySessionStore.html#findSessions(K,java.time.Instant,java.time.Instant)">ReadOnlySessionStore</a></code></span></div>
<div class="block">Fetch any sessions with the matching key and the sessions end is &ge; earliestSessionEndTime
and the sessions start is &le; latestSessionStartTime iterating from earliest to latest.
I.e., earliestSessionEndTime is the lower bound of the search interval and latestSessionStartTime
is the upper bound of the search interval, and the method returns all sessions that overlap
with the search interval.
Thus, if a session ends before earliestSessionEndTime, or starts after latestSessionStartTime
if won't be contained in the result:
<pre><code>
earliestSessionEndTime: ESET
latestSessionStartTime: LSST
[ESET............LSST]
[not-included] [included] [included] [included] [not-included]
</code></pre>
<p>
This iterator must be closed after use.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="ReadOnlySessionStore.html#findSessions(K,java.time.Instant,java.time.Instant)">findSessions</a></code>&nbsp;in interface&nbsp;<code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>key</code> - the key to return sessions for</dd>
<dd><code>earliestSessionEndTime</code> - the end timestamp of the earliest session to search for, where
iteration starts.</dd>
<dd><code>latestSessionStartTime</code> - the end timestamp of the latest session to search for, where
iteration ends.</dd>
<dt>Returns:</dt>
<dd>iterator of sessions with the matching key and aggregated values, from earliest to
latest session time.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="backwardFindSessions(K,java.time.Instant,java.time.Instant)">
<h3 id="backwardFindSessions(java.lang.Object,java.time.Instant,java.time.Instant)">backwardFindSessions</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</span>&nbsp;<span class="element-name">backwardFindSessions</span><wbr><span class="parameters">(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ReadOnlySessionStore.html#backwardFindSessions(K,java.time.Instant,java.time.Instant)">ReadOnlySessionStore</a></code></span></div>
<div class="block">Fetch any sessions with the matching key and the sessions end is &ge; earliestSessionEndTime
and the sessions start is &le; latestSessionStartTime iterating from latest to earliest.
I.e., earliestSessionEndTime is the lower bound of the search interval and latestSessionStartTime
is the upper bound of the search interval, and the method returns all sessions that overlap
with the search interval.
Thus, if a session ends before earliestSessionEndTime, or starts after latestSessionStartTime
if won't be contained in the result:
<pre><code>
earliestSessionEndTime: ESET
latestSessionStartTime: LSST
[ESET............LSST]
[not-included] [included] [included] [included] [not-included]
</code></pre>
<p>
This iterator must be closed after use.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="ReadOnlySessionStore.html#backwardFindSessions(K,java.time.Instant,java.time.Instant)">backwardFindSessions</a></code>&nbsp;in interface&nbsp;<code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>key</code> - the key to return sessions for</dd>
<dd><code>earliestSessionEndTime</code> - the end timestamp of the earliest session to search for, where
iteration ends.</dd>
<dd><code>latestSessionStartTime</code> - the end timestamp of the latest session to search for, where
iteration starts.</dd>
<dt>Returns:</dt>
<dd>backward iterator of sessions with the matching key and aggregated values, from
latest to earliest session time.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="findSessions(K,K,java.time.Instant,java.time.Instant)">
<h3 id="findSessions(java.lang.Object,java.lang.Object,java.time.Instant,java.time.Instant)">findSessions</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</span>&nbsp;<span class="element-name">findSessions</span><wbr><span class="parameters">(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyFrom,
<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyTo,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ReadOnlySessionStore.html#findSessions(K,K,java.time.Instant,java.time.Instant)">ReadOnlySessionStore</a></code></span></div>
<div class="block">Fetch any sessions in the given range of keys and the sessions end is &ge;
earliestSessionEndTime and the sessions start is &le; latestSessionStartTime iterating from
earliest to latest.
I.e., earliestSessionEndTime is the lower bound of the search interval and latestSessionStartTime
is the upper bound of the search interval, and the method returns all sessions that overlap
with the search interval.
Thus, if a session ends before earliestSessionEndTime, or starts after latestSessionStartTime
if won't be contained in the result:
<pre><code>
earliestSessionEndTime: ESET
latestSessionStartTime: LSST
[ESET............LSST]
[not-included] [included] [included] [included] [not-included]
</code></pre>
<p>
This iterator must be closed after use.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="ReadOnlySessionStore.html#findSessions(K,K,java.time.Instant,java.time.Instant)">findSessions</a></code>&nbsp;in interface&nbsp;<code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>keyFrom</code> - The first key that could be in the range
A null value indicates a starting position from the first element in the store.</dd>
<dd><code>keyTo</code> - The last key that could be in the range
A null value indicates that the range ends with the last element in the store.</dd>
<dd><code>earliestSessionEndTime</code> - the end timestamp of the earliest session to search for, where
iteration starts.</dd>
<dd><code>latestSessionStartTime</code> - the end timestamp of the latest session to search for, where
iteration ends.</dd>
<dt>Returns:</dt>
<dd>iterator of sessions with the matching keys and aggregated values, from earliest to
latest session time.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="backwardFindSessions(K,K,java.time.Instant,java.time.Instant)">
<h3 id="backwardFindSessions(java.lang.Object,java.lang.Object,java.time.Instant,java.time.Instant)">backwardFindSessions</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="KeyValueIterator.html" title="interface in org.apache.kafka.streams.state">KeyValueIterator</a>&lt;<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</span>&nbsp;<span class="element-name">backwardFindSessions</span><wbr><span class="parameters">(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyFrom,
<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;keyTo,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;earliestSessionEndTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;latestSessionStartTime)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ReadOnlySessionStore.html#backwardFindSessions(K,K,java.time.Instant,java.time.Instant)">ReadOnlySessionStore</a></code></span></div>
<div class="block">Fetch any sessions in the given range of keys and the sessions end is &ge;
earliestSessionEndTime and the sessions start is &le; latestSessionStartTime iterating from
latest to earliest.
I.e., earliestSessionEndTime is the lower bound of the search interval and latestSessionStartTime
is the upper bound of the search interval, and the method returns all sessions that overlap
with the search interval.
Thus, if a session ends before earliestSessionEndTime, or starts after latestSessionStartTime
if won't be contained in the result:
<pre><code>
earliestSessionEndTime: ESET
latestSessionStartTime: LSST
[ESET............LSST]
[not-included] [included] [included] [included] [not-included]
</code></pre>
<p>
This iterator must be closed after use.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="ReadOnlySessionStore.html#backwardFindSessions(K,K,java.time.Instant,java.time.Instant)">backwardFindSessions</a></code>&nbsp;in interface&nbsp;<code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>keyFrom</code> - The first key that could be in the range
A null value indicates a starting position from the first element in the store.</dd>
<dd><code>keyTo</code> - The last key that could be in the range
A null value indicates that the range ends with the last element in the store.</dd>
<dd><code>earliestSessionEndTime</code> - the end timestamp of the earliest session to search for, where
iteration ends.</dd>
<dd><code>latestSessionStartTime</code> - the end timestamp of the latest session to search for, where
iteration starts.</dd>
<dt>Returns:</dt>
<dd>backward iterator of sessions with the matching keys and aggregated values, from
latest to earliest session time.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="fetchSession(K,java.time.Instant,java.time.Instant)">
<h3 id="fetchSession(java.lang.Object,java.time.Instant,java.time.Instant)">fetchSession</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a></span>&nbsp;<span class="element-name">fetchSession</span><wbr><span class="parameters">(<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;sessionStartTime,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html" title="class or interface in java.time" class="external-link">Instant</a>&nbsp;sessionEndTime)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ReadOnlySessionStore.html#fetchSession(K,java.time.Instant,java.time.Instant)">ReadOnlySessionStore</a></code></span></div>
<div class="block">Get the value of key from a single session.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="ReadOnlySessionStore.html#fetchSession(K,java.time.Instant,java.time.Instant)">fetchSession</a></code>&nbsp;in interface&nbsp;<code><a href="ReadOnlySessionStore.html" title="interface in org.apache.kafka.streams.state">ReadOnlySessionStore</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>,<wbr><a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>key</code> - the key to fetch</dd>
<dd><code>sessionStartTime</code> - start timestamp of the session</dd>
<dd><code>sessionEndTime</code> - end timestamp of the session</dd>
<dt>Returns:</dt>
<dd>The value or <code>null</code> if no session with the exact start and end timestamp exists
for the given key</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="remove(org.apache.kafka.streams.kstream.Windowed)">
<h3>remove</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">remove</span><wbr><span class="parameters">(<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;&nbsp;sessionKey)</span></div>
<div class="block">Remove the session aggregated with provided <a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream"><code>Windowed</code></a> key from the store</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sessionKey</code> - key of the session to remove</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - If null is used for sessionKey.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="put(org.apache.kafka.streams.kstream.Windowed,AGG)">
<h3 id="put(org.apache.kafka.streams.kstream.Windowed,java.lang.Object)">put</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">put</span><wbr><span class="parameters">(<a href="../kstream/Windowed.html" title="class in org.apache.kafka.streams.kstream">Windowed</a>&lt;<a href="SessionStore.html" title="type parameter in SessionStore">K</a>&gt;&nbsp;sessionKey,
<a href="SessionStore.html" title="type parameter in SessionStore">AGG</a>&nbsp;aggregate)</span></div>
<div class="block">Write the aggregated value for the provided key to the store</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sessionKey</code> - key of the session to write</dd>
<dd><code>aggregate</code> - the aggregated value for the session, it can be null; if the serialized
bytes are also null it is interpreted as deletes</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - If null is used for sessionKey.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>