<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (1.8.0_191) on Fri Oct 26 16:07:40 CEST 2018 -->
<title>ChannelId (coroutines 0.9.0 API)</title>
<meta name="date" content="2018-10-26">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ChannelId (coroutines 0.9.0 API)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":17,"i1":17,"i2":17,"i3":17};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<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="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="../../../de/esoco/coroutine/ChannelClosedException.html" title="class in de.esoco.coroutine"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../de/esoco/coroutine/ChannelId.StringId.html" title="class in de.esoco.coroutine"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?de/esoco/coroutine/ChannelId.html" target="_top">Frames</a></li>
<li><a href="ChannelId.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;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:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</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">de.esoco.coroutine</div>
<h2 title="Interface ChannelId" class="title">Interface ChannelId&lt;T&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../de/esoco/coroutine/ChannelId.StringId.html" title="class in de.esoco.coroutine">ChannelId.StringId</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ChannelId&lt;T&gt;</span></pre>
<div class="block">This is a marker interface for identifiers of <a href="../../../de/esoco/coroutine/Channel.html" title="class in de.esoco.coroutine"><code>channels</code></a> which
 are used for communication between <a href="../../../de/esoco/coroutine/Coroutine.html" title="class in de.esoco.coroutine"><code>coroutines</code></a>. One possible
 usage would be to implement it on enums or similar constants that are to be
 used as channel IDs. To simplify typed lookup of channels IDs are generically
 typed with the datatype of the target channel. Either implementations or
 application are responsible that their channel IDs are unique also with
 respect to the datatype.

 <p>Instances of a default implementation of string-based IDs can be created
 through the generic factory method <a href="../../../de/esoco/coroutine/ChannelId.html#channel-java.lang.String-java.lang.Class-"><code>channel(String, Class)</code></a>. Please
 check the method comment for informations about the constraints imposed by
 that implementation. There are also some derived factory methods for common
 datatypes like <a href="../../../de/esoco/coroutine/ChannelId.html#stringChannel-java.lang.String-"><code>stringChannel(String)</code></a>.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/esoco/coroutine/ChannelId.StringId.html" title="class in de.esoco.coroutine">ChannelId.StringId</a>&lt;<a href="../../../de/esoco/coroutine/ChannelId.StringId.html" title="type parameter in ChannelId.StringId">T</a>&gt;</span></code>
<div class="block">Internal implementation of string-based channel IDs.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.Boolean&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/esoco/coroutine/ChannelId.html#booleanChannel-java.lang.String-">booleanChannel</a></span>(java.lang.String&nbsp;sId)</code>
<div class="block">Creates a channel ID with a boolean datatype.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/esoco/coroutine/ChannelId.html#channel-java.lang.String-java.lang.Class-">channel</a></span>(java.lang.String&nbsp;sId,
       java.lang.Class&lt;T&gt;&nbsp;rDatatype)</code>
<div class="block">Creates a new channel ID from an identifier string.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.Integer&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/esoco/coroutine/ChannelId.html#intChannel-java.lang.String-">intChannel</a></span>(java.lang.String&nbsp;sId)</code>
<div class="block">Creates a channel ID with an integer datatype.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/esoco/coroutine/ChannelId.html#stringChannel-java.lang.String-">stringChannel</a></span>(java.lang.String&nbsp;sId)</code>
<div class="block">Creates a channel ID with a string datatype.</div>
</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="booleanChannel-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>booleanChannel</h4>
<pre>static&nbsp;<a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.Boolean&gt;&nbsp;booleanChannel(java.lang.String&nbsp;sId)</pre>
<div class="block">Creates a channel ID with a boolean datatype.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sId</code> - The ID string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The new boolean ID</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../de/esoco/coroutine/ChannelId.html#channel-java.lang.String-java.lang.Class-"><code>channel(String, Class)</code></a></dd>
</dl>
</li>
</ul>
<a name="channel-java.lang.String-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>channel</h4>
<pre>static&nbsp;&lt;T&gt;&nbsp;<a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;T&gt;&nbsp;channel(java.lang.String&nbsp;sId,
                                java.lang.Class&lt;T&gt;&nbsp;rDatatype)</pre>
<div class="block">Creates a new channel ID from an identifier string. Channel IDs with the
 same identifier string are considered equal and will therefore give
 access to the same channel in a <a href="../../../de/esoco/coroutine/CoroutineContext.html" title="class in de.esoco.coroutine"><code>CoroutineContext</code></a>. IDs aren't
 cached so that invocations with the the same string and datatyoe will
 return different instances which are considered equal (see below). To
 avoid name clashes in complex scenarios the ID names should be selected
 appropriately, e.g. by using namespaces. The implementation doesn't
 impose any restrictions on the strings used to define IDs.

 <p>Equality of string-based IDs is also based on the datatype. That means
 that it is possible to create equal-named channel IDs for different
 datatypes. Accessing channels through such IDs would yield different
 channel instances but that usage is not recommended. It lies in the
 responsibility of the application to name channel IDs appropriately for
 the respective context (or provide it's own <a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine"><code>ChannelId</code></a>
 implementations).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sId</code> - The channel ID string</dd>
<dd><code>rDatatype</code> - The class of the channel datatype to ensure</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A new channel ID</dd>
</dl>
</li>
</ul>
<a name="intChannel-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intChannel</h4>
<pre>static&nbsp;<a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.Integer&gt;&nbsp;intChannel(java.lang.String&nbsp;sId)</pre>
<div class="block">Creates a channel ID with an integer datatype.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sId</code> - The ID string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The new integer ID</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../de/esoco/coroutine/ChannelId.html#channel-java.lang.String-java.lang.Class-"><code>channel(String, Class)</code></a></dd>
</dl>
</li>
</ul>
<a name="stringChannel-java.lang.String-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>stringChannel</h4>
<pre>static&nbsp;<a href="../../../de/esoco/coroutine/ChannelId.html" title="interface in de.esoco.coroutine">ChannelId</a>&lt;java.lang.String&gt;&nbsp;stringChannel(java.lang.String&nbsp;sId)</pre>
<div class="block">Creates a channel ID with a string datatype.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sId</code> - The ID string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The new string ID</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../de/esoco/coroutine/ChannelId.html#channel-java.lang.String-java.lang.Class-"><code>channel(String, Class)</code></a></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>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<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="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="../../../de/esoco/coroutine/ChannelClosedException.html" title="class in de.esoco.coroutine"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../de/esoco/coroutine/ChannelId.StringId.html" title="class in de.esoco.coroutine"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?de/esoco/coroutine/ChannelId.html" target="_top">Frames</a></li>
<li><a href="ChannelId.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;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:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
