cassandra-server
Version:
A thin Javascript wrapper around Apache Cassandra to provide out of the box server support
355 lines (352 loc) • 13.5 kB
HTML
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_67) on Sun Sep 07 15:29:30 CEST 2014 -->
<title>WaitQueue.Signal (apache-cassandra API)</title>
<meta name="date" content="2014-09-07">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="WaitQueue.Signal (apache-cassandra API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/WaitQueue.Signal.html">Use</a></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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.AbstractSignal.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html" target="_top">Frames</a></li>
<li><a href="WaitQueue.Signal.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li>Constr | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li>Constr | </li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.cassandra.utils.concurrent</div>
<h2 title="Interface WaitQueue.Signal" class="title">Interface WaitQueue.Signal</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.AbstractSignal.html" title="class in org.apache.cassandra.utils.concurrent">WaitQueue.AbstractSignal</a></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.html" title="class in org.apache.cassandra.utils.concurrent">WaitQueue</a></dd>
</dl>
<hr>
<br>
<pre>public static interface <span class="strong">WaitQueue.Signal</span></pre>
<div class="block">A Signal is a one-time-use mechanism for a thread to wait for notification that some condition
state has transitioned that it may be interested in (and hence should check if it is).
It is potentially transient, i.e. the state can change in the meantime, it only indicates
that it should be checked, not necessarily anything about what the expected state should be.
Signal implementations should never wake up spuriously, they are always woken up by a
signal() or signalAll().
This abstract definition of Signal does not need to be tied to a WaitQueue.
Whilst RegisteredSignal is the main building block of Signals, this abstract
definition allows us to compose Signals in useful ways. The Signal is 'owned' by the
thread that registered itself with WaitQueue(s) to obtain the underlying RegisteredSignal(s);
only the owning thread should use a Signal.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd"> </span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#await()">await</a></strong>()</code>
<div class="block">Wait until signalled, or throw an InterruptedException if interrupted before this happens.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#awaitUninterruptibly()">awaitUninterruptibly</a></strong>()</code>
<div class="block">Wait, without throwing InterruptedException, until signalled.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#awaitUntil(long)">awaitUntil</a></strong>(long nanos)</code>
<div class="block">Wait until signalled, or the provided time is reached, or the thread is interrupted.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#cancel()">cancel</a></strong>()</code>
<div class="block">Should only be called by the owning thread.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#checkAndClear()">checkAndClear</a></strong>()</code>
<div class="block">atomically: cancels the Signal if !isSet(), or returns true if isSignalled()</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#isCancelled()">isCancelled</a></strong>()</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#isSet()">isSet</a></strong>()</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html#isSignalled()">isSignalled</a></strong>()</code> </td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="isSignalled()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSignalled</h4>
<pre>boolean isSignalled()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if signalled; once true, must be discarded by the owning thread.</dd></dl>
</li>
</ul>
<a name="isCancelled()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCancelled</h4>
<pre>boolean isCancelled()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if cancelled; once cancelled, must be discarded by the owning thread.</dd></dl>
</li>
</ul>
<a name="isSet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSet</h4>
<pre>boolean isSet()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>isSignalled() || isCancelled(). Once true, the state is fixed and the Signal should be discarded
by the owning thread.</dd></dl>
</li>
</ul>
<a name="checkAndClear()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkAndClear</h4>
<pre>boolean checkAndClear()</pre>
<div class="block">atomically: cancels the Signal if !isSet(), or returns true if isSignalled()</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if isSignalled()</dd></dl>
</li>
</ul>
<a name="cancel()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancel</h4>
<pre>void cancel()</pre>
<div class="block">Should only be called by the owning thread. Indicates the signal can be retired,
and if signalled propagates the signal to another waiting thread</div>
</li>
</ul>
<a name="awaitUninterruptibly()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>awaitUninterruptibly</h4>
<pre>void awaitUninterruptibly()</pre>
<div class="block">Wait, without throwing InterruptedException, until signalled. On exit isSignalled() must be true.
If the thread is interrupted in the meantime, the interrupted flag will be set.</div>
</li>
</ul>
<a name="await()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>await</h4>
<pre>void await()
throws java.lang.InterruptedException</pre>
<div class="block">Wait until signalled, or throw an InterruptedException if interrupted before this happens.
On normal exit isSignalled() must be true; however if InterruptedException is thrown isCancelled()
will be true.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd></dl>
</li>
</ul>
<a name="awaitUntil(long)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>awaitUntil</h4>
<pre>boolean awaitUntil(long nanos)
throws java.lang.InterruptedException</pre>
<div class="block">Wait until signalled, or the provided time is reached, or the thread is interrupted. If signalled,
isSignalled() will be true on exit, and the method will return true; if timedout, the method will return
false and isCancelled() will be true; if interrupted an InterruptedException will be thrown and isCancelled()
will be true.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>nanos</code> - System.nanoTime() to wait until</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if signalled, false if timed out</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/WaitQueue.Signal.html">Use</a></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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.AbstractSignal.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html" target="_top">Frames</a></li>
<li><a href="WaitQueue.Signal.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li>Constr | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li>Constr | </li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright © 2014 The Apache Software Foundation</small></p>
</body>
</html>