<!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=ISO-8859-1" /><title>NetCatProtocolHandler xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/examples/netcat/NetCatProtocolHandler.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> *   @(#) $Id: NetCatProtocolHandler.java 264677 2005-08-30 02:44:35Z trustin $</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> *   Copyright 2004 The Apache Software Foundation</em>
<a name="5" href="#5">5</a>   <em class="comment"> *</em>
<a name="6" href="#6">6</a>   <em class="comment"> *   Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="7" href="#7">7</a>   <em class="comment"> *   you may not use this file except in compliance with the License.</em>
<a name="8" href="#8">8</a>   <em class="comment"> *   You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="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="comment"> *</em>
<a name="12" href="#12">12</a>  <em class="comment"> *   Unless required by applicable law or agreed to in writing, software</em>
<a name="13" href="#13">13</a>  <em class="comment"> *   distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="14" href="#14">14</a>  <em class="comment"> *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="15" href="#15">15</a>  <em class="comment"> *   See the License for the specific language governing permissions and</em>
<a name="16" href="#16">16</a>  <em class="comment"> *   limitations under the License.</em>
<a name="17" href="#17">17</a>  <em class="comment"> *</em>
<a name="18" href="#18">18</a>  <em class="comment"> */</em>
<a name="19" href="#19">19</a>  <strong>package</strong> <a href="../../../../../org/apache/mina/examples/netcat/package-summary.html">org.apache.mina.examples.netcat</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.mina.common.ByteBuffer;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.mina.common.IdleStatus;
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.mina.io.IoHandler;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.io.IoHandlerAdapter;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.io.IoSession;
<a name="26" href="#26">26</a>  
<a name="27" href="#27">27</a>  <em>/**<em>*</em></em>
<a name="28" href="#28">28</a>  <em> * {@link IoHandler} implementation for NetCat client.  This class extended</em>
<a name="29" href="#29">29</a>  <em> * {@link IoHandlerAdapter} for convenience. </em>
<a name="30" href="#30">30</a>  <em> * </em>
<a name="31" href="#31">31</a>  <em> * @author Trustin Lee (trustin@apache.org)</em>
<a name="32" href="#32">32</a>  <em> * @version $Rev: 264677 $, $Date: 2005-08-30 11:44:35 +0900 $,</em>
<a name="33" href="#33">33</a>  <em> */</em>
<a name="34" href="#34">34</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../../org/apache/mina/examples/netcat/NetCatProtocolHandler.html">NetCatProtocolHandler</a> <strong>extends</strong> IoHandlerAdapter
<a name="35" href="#35">35</a>  {
<a name="36" href="#36">36</a>      <strong>public</strong> <strong>void</strong> sessionOpened( IoSession session )
<a name="37" href="#37">37</a>      {
<a name="38" href="#38">38</a>          <em class="comment">// Set reader idle time to 10 seconds.</em>
<a name="39" href="#39">39</a>          <em class="comment">// sessionIdle(...) method will be invoked when no data is read</em>
<a name="40" href="#40">40</a>          <em class="comment">// for 10 seconds.</em>
<a name="41" href="#41">41</a>          session.getConfig().setIdleTime( IdleStatus.READER_IDLE, 10 );
<a name="42" href="#42">42</a>      }
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong>public</strong> <strong>void</strong> sessionClosed( IoSession session )
<a name="45" href="#45">45</a>      {
<a name="46" href="#46">46</a>          <em class="comment">// Print out total number of bytes read from the remote peer.</em>
<a name="47" href="#47">47</a>          System.err.println( <span class="string">"Total "</span> + session.getReadBytes() + <span class="string">" byte(s)"</span> );
<a name="48" href="#48">48</a>      }
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong>public</strong> <strong>void</strong> sessionIdle( IoSession session, IdleStatus status )
<a name="51" href="#51">51</a>      {
<a name="52" href="#52">52</a>          <em class="comment">// Close the connection if reader is idle.</em>
<a name="53" href="#53">53</a>          <strong>if</strong>( status == IdleStatus.READER_IDLE )
<a name="54" href="#54">54</a>              session.close();
<a name="55" href="#55">55</a>      }
<a name="56" href="#56">56</a>  
<a name="57" href="#57">57</a>      <strong>public</strong> <strong>void</strong> dataRead( IoSession session, ByteBuffer buf )
<a name="58" href="#58">58</a>      {
<a name="59" href="#59">59</a>          <em class="comment">// Print out read buffer content.</em>
<a name="60" href="#60">60</a>          <strong>while</strong>( buf.hasRemaining() )
<a name="61" href="#61">61</a>          {
<a name="62" href="#62">62</a>              System.out.print( ( <strong>char</strong> ) buf.get() );
<a name="63" href="#63">63</a>          }
<a name="64" href="#64">64</a>          System.out.flush();
<a name="65" href="#65">65</a>      }
<a name="66" href="#66">66</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

