<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>AbstractBindTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> *  Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> *  or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> *  distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> *  regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> *  to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> *  "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *  with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *    <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *  Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *  software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> *  KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> *  specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> *  under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.transport;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.SocketAddress;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.future.ConnectFuture;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoAcceptor;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoConnector;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoHandlerAdapter;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IdleStatus;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.DatagramAcceptor;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.DatagramSessionConfig;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.SocketAcceptor;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.SocketSessionConfig;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment">/**</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * Tests {@link IoAcceptor} resource leakage by repeating bind and unbind.</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> *</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> */</em>
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">AbstractBindTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="48" href="#48">48</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> IoAcceptor acceptor;
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> port;
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">AbstractBindTest</a>(IoAcceptor acceptor) {
<a name="53" href="#53">53</a>          <strong class="jxr_keyword">this</strong>.acceptor = acceptor;
<a name="54" href="#54">54</a>      }
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> SocketAddress createSocketAddress(<strong class="jxr_keyword">int</strong> port);
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">int</strong> getPort(SocketAddress address);
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> IoConnector newConnector();
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> bind(<strong class="jxr_keyword">boolean</strong> reuseAddress) <strong class="jxr_keyword">throws</strong> IOException {
<a name="63" href="#63">63</a>          acceptor.setHandler(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">EchoProtocolHandler</a>());
<a name="64" href="#64">64</a>  
<a name="65" href="#65">65</a>          setReuseAddress(reuseAddress);
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>          <em class="jxr_comment">// Find an available test port and bind to it.</em>
<a name="68" href="#68">68</a>          <strong class="jxr_keyword">boolean</strong> socketBound = false;
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>          <em class="jxr_comment">// Let's start from port #1 to detect possible resource leak</em>
<a name="71" href="#71">71</a>          <em class="jxr_comment">// because test will fail in port 1-1023 if user run this test</em>
<a name="72" href="#72">72</a>          <em class="jxr_comment">// as a normal user.</em>
<a name="73" href="#73">73</a>          <strong class="jxr_keyword">for</strong> (port = 1; port &lt;= 65535; port++) {
<a name="74" href="#74">74</a>              socketBound = false;
<a name="75" href="#75">75</a>              <strong class="jxr_keyword">try</strong> {
<a name="76" href="#76">76</a>                  acceptor.setDefaultLocalAddress(createSocketAddress(port));
<a name="77" href="#77">77</a>                  acceptor.bind();
<a name="78" href="#78">78</a>                  socketBound = <strong class="jxr_keyword">true</strong>;
<a name="79" href="#79">79</a>                  <strong class="jxr_keyword">break</strong>;
<a name="80" href="#80">80</a>              } <strong class="jxr_keyword">catch</strong> (IOException e) {
<a name="81" href="#81">81</a>                  <em class="jxr_comment">//System.out.println(e.getMessage());</em>
<a name="82" href="#82">82</a>              }
<a name="83" href="#83">83</a>          }
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>          <em class="jxr_comment">// If there is no port available, test fails.</em>
<a name="86" href="#86">86</a>          <strong class="jxr_keyword">if</strong> (!socketBound) {
<a name="87" href="#87">87</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Cannot bind any test port."</span>);
<a name="88" href="#88">88</a>          }
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>          <em class="jxr_comment">//System.out.println( "Using port " + port + " for testing." );</em>
<a name="91" href="#91">91</a>      }
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setReuseAddress(<strong class="jxr_keyword">boolean</strong> reuseAddress) {
<a name="94" href="#94">94</a>          <strong class="jxr_keyword">if</strong> (acceptor instanceof DatagramAcceptor) {
<a name="95" href="#95">95</a>              ((DatagramSessionConfig) acceptor.getSessionConfig())
<a name="96" href="#96">96</a>                      .setReuseAddress(reuseAddress);
<a name="97" href="#97">97</a>          } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (acceptor instanceof SocketAcceptor) {
<a name="98" href="#98">98</a>              ((SocketAcceptor) acceptor).setReuseAddress(reuseAddress);
<a name="99" href="#99">99</a>          }
<a name="100" href="#100">100</a>     }
<a name="101" href="#101">101</a> 
<a name="102" href="#102">102</a>     @Override
<a name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a name="104" href="#104">104</a>         <strong class="jxr_keyword">try</strong> {
<a name="105" href="#105">105</a>             acceptor.dispose();
<a name="106" href="#106">106</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="107" href="#107">107</a>             <em class="jxr_comment">// ignore</em>
<a name="108" href="#108">108</a>         }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>         acceptor.setDefaultLocalAddress(<strong class="jxr_keyword">null</strong>);
<a name="111" href="#111">111</a>     }
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAnonymousBind() <strong class="jxr_keyword">throws</strong> Exception {
<a name="114" href="#114">114</a>         acceptor.setHandler(<strong class="jxr_keyword">new</strong> IoHandlerAdapter());
<a name="115" href="#115">115</a>         acceptor.setDefaultLocalAddress(<strong class="jxr_keyword">null</strong>);
<a name="116" href="#116">116</a>         acceptor.bind();
<a name="117" href="#117">117</a>         assertNotNull(acceptor.getLocalAddress());
<a name="118" href="#118">118</a>         acceptor.unbind(acceptor.getLocalAddress());
<a name="119" href="#119">119</a>         assertNull(acceptor.getLocalAddress());
<a name="120" href="#120">120</a>         acceptor.setDefaultLocalAddress(createSocketAddress(0));
<a name="121" href="#121">121</a>         acceptor.bind();
<a name="122" href="#122">122</a>         assertNotNull(acceptor.getLocalAddress());
<a name="123" href="#123">123</a>         assertTrue(getPort(acceptor.getLocalAddress()) != 0);
<a name="124" href="#124">124</a>         acceptor.unbind(acceptor.getLocalAddress());
<a name="125" href="#125">125</a>     }
<a name="126" href="#126">126</a> 
<a name="127" href="#127">127</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateBind() <strong class="jxr_keyword">throws</strong> IOException {
<a name="128" href="#128">128</a>         bind(false);
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>         <strong class="jxr_keyword">try</strong> {
<a name="131" href="#131">131</a>             acceptor.bind();
<a name="132" href="#132">132</a>             fail(<span class="jxr_string">"Exception is not thrown"</span>);
<a name="133" href="#133">133</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="134" href="#134">134</a>             <em class="jxr_comment">// Signifies a successfull test case execution</em>
<a name="135" href="#135">135</a>             assertTrue(<strong class="jxr_keyword">true</strong>);
<a name="136" href="#136">136</a>         }
<a name="137" href="#137">137</a>     }
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateUnbind() <strong class="jxr_keyword">throws</strong> IOException {
<a name="140" href="#140">140</a>         bind(false);
<a name="141" href="#141">141</a> 
<a name="142" href="#142">142</a>         <em class="jxr_comment">// this should succeed</em>
<a name="143" href="#143">143</a>         acceptor.unbind();
<a name="144" href="#144">144</a> 
<a name="145" href="#145">145</a>         <em class="jxr_comment">// this shouldn't fail</em>
<a name="146" href="#146">146</a>         acceptor.unbind();
<a name="147" href="#147">147</a>     }
<a name="148" href="#148">148</a> 
<a name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testManyTimes() <strong class="jxr_keyword">throws</strong> IOException {
<a name="150" href="#150">150</a>         bind(<strong class="jxr_keyword">true</strong>);
<a name="151" href="#151">151</a> 
<a name="152" href="#152">152</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1024; i++) {
<a name="153" href="#153">153</a>             acceptor.unbind();
<a name="154" href="#154">154</a>             acceptor.bind();
<a name="155" href="#155">155</a>         }
<a name="156" href="#156">156</a>     }
<a name="157" href="#157">157</a> 
<a name="158" href="#158">158</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUnbindDisconnectsClients() <strong class="jxr_keyword">throws</strong> Exception {
<a name="159" href="#159">159</a>         bind(<strong class="jxr_keyword">true</strong>);
<a name="160" href="#160">160</a>         IoConnector connector = newConnector();
<a name="161" href="#161">161</a>         IoSession[] sessions = <strong class="jxr_keyword">new</strong> IoSession[5];
<a name="162" href="#162">162</a>         connector.setHandler(<strong class="jxr_keyword">new</strong> IoHandlerAdapter());
<a name="163" href="#163">163</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; sessions.length; i++) {
<a name="164" href="#164">164</a>             ConnectFuture future = connector.connect(createSocketAddress(port));
<a name="165" href="#165">165</a>             future.awaitUninterruptibly();
<a name="166" href="#166">166</a>             sessions[i] = future.getSession();
<a name="167" href="#167">167</a>             assertTrue(sessions[i].isConnected());
<a name="168" href="#168">168</a>             assertTrue(sessions[i].write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());
<a name="169" href="#169">169</a>         }
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>         <em class="jxr_comment">// Wait for the server side sessions to be created.</em>
<a name="172" href="#172">172</a>         Thread.sleep(500);
<a name="173" href="#173">173</a> 
<a name="174" href="#174">174</a>         Collection&lt;IoSession&gt; managedSessions = acceptor.getManagedSessions().values();
<a name="175" href="#175">175</a>         assertEquals(5, managedSessions.size());
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>         acceptor.unbind();
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>         <em class="jxr_comment">// Wait for the client side sessions to close.</em>
<a name="180" href="#180">180</a>         Thread.sleep(500);
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>         assertEquals(0, managedSessions.size());
<a name="183" href="#183">183</a>         <strong class="jxr_keyword">for</strong> (IoSession element : managedSessions) {
<a name="184" href="#184">184</a>             assertFalse(element.isConnected());
<a name="185" href="#185">185</a>         }
<a name="186" href="#186">186</a>     }
<a name="187" href="#187">187</a> 
<a name="188" href="#188">188</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUnbindResume() <strong class="jxr_keyword">throws</strong> Exception {
<a name="189" href="#189">189</a>         bind(<strong class="jxr_keyword">true</strong>);
<a name="190" href="#190">190</a>         IoConnector connector = newConnector();
<a name="191" href="#191">191</a>         IoSession session = <strong class="jxr_keyword">null</strong>;
<a name="192" href="#192">192</a>         connector.setHandler(<strong class="jxr_keyword">new</strong> IoHandlerAdapter());
<a name="193" href="#193">193</a>         
<a name="194" href="#194">194</a>         ConnectFuture future = connector.connect(createSocketAddress(port));
<a name="195" href="#195">195</a>         future.awaitUninterruptibly();
<a name="196" href="#196">196</a>         session = future.getSession();
<a name="197" href="#197">197</a>         assertTrue(session.isConnected());
<a name="198" href="#198">198</a>         assertTrue(session.write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());
<a name="199" href="#199">199</a> 
<a name="200" href="#200">200</a>         <em class="jxr_comment">// Wait for the server side session to be created.</em>
<a name="201" href="#201">201</a>         Thread.sleep(500);
<a name="202" href="#202">202</a> 
<a name="203" href="#203">203</a>         Collection&lt;IoSession&gt; managedSession = acceptor.getManagedSessions().values();
<a name="204" href="#204">204</a>         assertEquals(1, managedSession.size());
<a name="205" href="#205">205</a> 
<a name="206" href="#206">206</a>         acceptor.unbind();
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>         <em class="jxr_comment">// Wait for the client side sessions to close.</em>
<a name="209" href="#209">209</a>         Thread.sleep(500);
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a>         assertEquals(0, managedSession.size());
<a name="212" href="#212">212</a>         <strong class="jxr_keyword">for</strong> (IoSession element : managedSession) {
<a name="213" href="#213">213</a>             assertFalse(element.isConnected());
<a name="214" href="#214">214</a>         }
<a name="215" href="#215">215</a>         
<a name="216" href="#216">216</a>         <em class="jxr_comment">// Rebind</em>
<a name="217" href="#217">217</a>         bind(<strong class="jxr_keyword">true</strong>);
<a name="218" href="#218">218</a>         
<a name="219" href="#219">219</a>         <em class="jxr_comment">// Check again the connection</em>
<a name="220" href="#220">220</a>         future = connector.connect(createSocketAddress(port));
<a name="221" href="#221">221</a>         future.awaitUninterruptibly();
<a name="222" href="#222">222</a>         session = future.getSession();
<a name="223" href="#223">223</a>         assertTrue(session.isConnected());
<a name="224" href="#224">224</a>         assertTrue(session.write(IoBuffer.allocate(1)).awaitUninterruptibly().isWritten());
<a name="225" href="#225">225</a> 
<a name="226" href="#226">226</a>         <em class="jxr_comment">// Wait for the server side session to be created.</em>
<a name="227" href="#227">227</a>         Thread.sleep(500);
<a name="228" href="#228">228</a> 
<a name="229" href="#229">229</a>         managedSession = acceptor.getManagedSessions().values();
<a name="230" href="#230">230</a>         assertEquals(1, managedSession.size());
<a name="231" href="#231">231</a>     }
<a name="232" href="#232">232</a> 
<a name="233" href="#233">233</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> _testRegressively() <strong class="jxr_keyword">throws</strong> IOException {
<a name="234" href="#234">234</a>         setReuseAddress(<strong class="jxr_keyword">true</strong>);
<a name="235" href="#235">235</a> 
<a name="236" href="#236">236</a>         SocketAddress addr = createSocketAddress(port);
<a name="237" href="#237">237</a>         <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">EchoProtocolHandler</a> handler = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">EchoProtocolHandler</a>();
<a name="238" href="#238">238</a>         acceptor.setDefaultLocalAddress(addr);
<a name="239" href="#239">239</a>         acceptor.setHandler(handler);
<a name="240" href="#240">240</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1048576; i++) {
<a name="241" href="#241">241</a>             acceptor.bind();
<a name="242" href="#242">242</a>             acceptor.unbind();
<a name="243" href="#243">243</a>             <em class="jxr_comment">//if (i % 100 == 0) {</em>
<a name="244" href="#244">244</a>                 <em class="jxr_comment">//System.out.println(i + " (" + new Date() + ")");</em>
<a name="245" href="#245">245</a>             <em class="jxr_comment">//}</em>
<a name="246" href="#246">246</a>         }
<a name="247" href="#247">247</a>         bind(false);
<a name="248" href="#248">248</a>     }
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">EchoProtocolHandler</a> <strong class="jxr_keyword">extends</strong> IoHandlerAdapter {
<a name="251" href="#251">251</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory
<a name="252" href="#252">252</a>                 .getLogger(EchoProtocolHandler.<strong class="jxr_keyword">class</strong>);
<a name="253" href="#253">253</a> 
<a name="254" href="#254">254</a>         <em class="jxr_javadoccomment">/**</em>
<a name="255" href="#255">255</a> <em class="jxr_javadoccomment">         * Default constructor</em>
<a name="256" href="#256">256</a> <em class="jxr_javadoccomment">         */</em>
<a name="257" href="#257">257</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/transport/AbstractBindTest.html">EchoProtocolHandler</a>() {
<a name="258" href="#258">258</a>             <strong class="jxr_keyword">super</strong>();
<a name="259" href="#259">259</a>         }
<a name="260" href="#260">260</a>         
<a name="261" href="#261">261</a>         @Override
<a name="262" href="#262">262</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionCreated(IoSession session) {
<a name="263" href="#263">263</a>             <strong class="jxr_keyword">if</strong> (session.getConfig() instanceof SocketSessionConfig) {
<a name="264" href="#264">264</a>                 ((SocketSessionConfig) session.getConfig())
<a name="265" href="#265">265</a>                         .setReceiveBufferSize(2048);
<a name="266" href="#266">266</a>             }
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>             session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
<a name="269" href="#269">269</a>         }
<a name="270" href="#270">270</a> 
<a name="271" href="#271">271</a>         @Override
<a name="272" href="#272">272</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionIdle(IoSession session, IdleStatus status) {
<a name="273" href="#273">273</a>             LOG.info(<span class="jxr_string">"*** IDLE #"</span> + session.getIdleCount(IdleStatus.BOTH_IDLE)
<a name="274" href="#274">274</a>                     + <span class="jxr_string">" ***"</span>);
<a name="275" href="#275">275</a>         }
<a name="276" href="#276">276</a> 
<a name="277" href="#277">277</a>         @Override
<a name="278" href="#278">278</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> exceptionCaught(IoSession session, Throwable cause) {
<a name="279" href="#279">279</a>             <em class="jxr_comment">//cause.printStackTrace();</em>
<a name="280" href="#280">280</a>             session.close(<strong class="jxr_keyword">true</strong>);
<a name="281" href="#281">281</a>         }
<a name="282" href="#282">282</a> 
<a name="283" href="#283">283</a>         @Override
<a name="284" href="#284">284</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> messageReceived(IoSession session, Object message)
<a name="285" href="#285">285</a>                 <strong class="jxr_keyword">throws</strong> Exception {
<a name="286" href="#286">286</a>             <strong class="jxr_keyword">if</strong> (!(message instanceof IoBuffer)) {
<a name="287" href="#287">287</a>                 <strong class="jxr_keyword">return</strong>;
<a name="288" href="#288">288</a>             }
<a name="289" href="#289">289</a> 
<a name="290" href="#290">290</a>             IoBuffer rb = (IoBuffer) message;
<a name="291" href="#291">291</a>             <em class="jxr_comment">// Write the received data back to remote peer</em>
<a name="292" href="#292">292</a>             IoBuffer wb = IoBuffer.allocate(rb.remaining());
<a name="293" href="#293">293</a>             wb.put(rb);
<a name="294" href="#294">294</a>             wb.flip();
<a name="295" href="#295">295</a>             session.write(wb);
<a name="296" href="#296">296</a>         }
<a name="297" href="#297">297</a>     }
<a name="298" href="#298">298</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

