<!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>ServerSessionHandler xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/examples/sumup/ServerSessionHandler.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: ServerSessionHandler.java 327113 2005-10-21 06:59:15Z 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/sumup/package-summary.html">org.apache.mina.examples.sumup</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.mina.common.IdleStatus;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.mina.examples.sumup.message.AddMessage;
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.mina.examples.sumup.message.ResultMessage;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolHandler;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolSession;
<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.mina.protocol.filter.ProtocolLoggingFilter;
<a name="27" href="#27">27</a>  <strong>import</strong> org.apache.mina.util.SessionLog;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  <em>/**<em>*</em></em>
<a name="30" href="#30">30</a>  <em> * {@link ProtocolHandler} for SumUp server.</em>
<a name="31" href="#31">31</a>  <em> * </em>
<a name="32" href="#32">32</a>  <em> * @author The Apache Directory Project</em>
<a name="33" href="#33">33</a>  <em> * @version $Rev: 327113 $, $Date: 2005-10-21 15:59:15 +0900 $</em>
<a name="34" href="#34">34</a>  <em> */</em>
<a name="35" href="#35">35</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../../org/apache/mina/examples/sumup/ServerSessionHandler.html">ServerSessionHandler</a> implements ProtocolHandler
<a name="36" href="#36">36</a>  {
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>      <strong>public</strong> <a href="../../../../../org/apache/mina/examples/sumup/ServerSessionHandler.html">ServerSessionHandler</a>()
<a name="39" href="#39">39</a>      {
<a name="40" href="#40">40</a>      }
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      <strong>public</strong> <strong>void</strong> sessionCreated( ProtocolSession session ) throws Exception
<a name="43" href="#43">43</a>      {
<a name="44" href="#44">44</a>          session.getFilterChain().addLast(
<a name="45" href="#45">45</a>                  <span class="string">"logger"</span>, <strong>new</strong> ProtocolLoggingFilter() );
<a name="46" href="#46">46</a>      }
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>      <strong>public</strong> <strong>void</strong> sessionOpened( ProtocolSession session )
<a name="49" href="#49">49</a>      {
<a name="50" href="#50">50</a>          <em class="comment">// set idle time to 60 seconds</em>
<a name="51" href="#51">51</a>          session.getConfig().setIdleTime( IdleStatus.BOTH_IDLE, 60 );
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>          <em class="comment">// initial sum is zero</em>
<a name="54" href="#54">54</a>          session.setAttachment( <strong>new</strong> Integer( 0 ) );
<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> sessionClosed( ProtocolSession session )
<a name="58" href="#58">58</a>      {
<a name="59" href="#59">59</a>      }
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <strong>public</strong> <strong>void</strong> messageReceived( ProtocolSession session, Object message )
<a name="62" href="#62">62</a>      {
<a name="63" href="#63">63</a>          <em class="comment">// client only sends AddMessage. otherwise, we will have to identify</em>
<a name="64" href="#64">64</a>          <em class="comment">// its type using instanceof operator.</em>
<a name="65" href="#65">65</a>          <a href="../../../../../org/apache/mina/examples/sumup/message/AddMessage.html">AddMessage</a> am = ( AddMessage ) message;
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>          <em class="comment">// add the value to the current sum.</em>
<a name="68" href="#68">68</a>          <strong>int</strong> sum = ( ( Integer ) session.getAttachment() ).<strong>int</strong>Value();
<a name="69" href="#69">69</a>          <strong>int</strong> value = am.getValue();
<a name="70" href="#70">70</a>          <strong>long</strong> expectedSum = ( <strong>long</strong> ) sum + value;
<a name="71" href="#71">71</a>          <strong>if</strong>( expectedSum > Integer.MAX_VALUE || expectedSum &lt; Integer.MIN_VALUE )
<a name="72" href="#72">72</a>          {
<a name="73" href="#73">73</a>              <em class="comment">// if the sum overflows or underflows, return error message</em>
<a name="74" href="#74">74</a>              <a href="../../../../../org/apache/mina/examples/sumup/message/ResultMessage.html">ResultMessage</a> rm = <strong>new</strong> <a href="../../../../../org/apache/mina/examples/sumup/message/ResultMessage.html">ResultMessage</a>();
<a name="75" href="#75">75</a>              rm.setSequence( am.getSequence() ); <em class="comment">// copy sequence</em>
<a name="76" href="#76">76</a>              rm.setOk( false );
<a name="77" href="#77">77</a>              session.write( rm );
<a name="78" href="#78">78</a>          }
<a name="79" href="#79">79</a>          <strong>else</strong>
<a name="80" href="#80">80</a>          {
<a name="81" href="#81">81</a>              <em class="comment">// sum up</em>
<a name="82" href="#82">82</a>              sum = ( <strong>int</strong> ) expectedSum;
<a name="83" href="#83">83</a>              session.setAttachment( <strong>new</strong> Integer( sum ) );
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>              <em class="comment">// return the result message</em>
<a name="86" href="#86">86</a>              <a href="../../../../../org/apache/mina/examples/sumup/message/ResultMessage.html">ResultMessage</a> rm = <strong>new</strong> <a href="../../../../../org/apache/mina/examples/sumup/message/ResultMessage.html">ResultMessage</a>();
<a name="87" href="#87">87</a>              rm.setSequence( am.getSequence() ); <em class="comment">// copy sequence</em>
<a name="88" href="#88">88</a>              rm.setOk( <strong>true</strong> );
<a name="89" href="#89">89</a>              rm.setValue( sum );
<a name="90" href="#90">90</a>              session.write( rm );
<a name="91" href="#91">91</a>          }
<a name="92" href="#92">92</a>      }
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>      <strong>public</strong> <strong>void</strong> messageSent( ProtocolSession session, Object message )
<a name="95" href="#95">95</a>      {
<a name="96" href="#96">96</a>      }
<a name="97" href="#97">97</a>  
<a name="98" href="#98">98</a>      <strong>public</strong> <strong>void</strong> sessionIdle( ProtocolSession session, IdleStatus status )
<a name="99" href="#99">99</a>      {
<a name="100" href="#100">100</a>         SessionLog.warn( session, <span class="string">"Disconnecting the idle."</span> );
<a name="101" href="#101">101</a>         <em class="comment">// disconnect an idle client</em>
<a name="102" href="#102">102</a>         session.close();
<a name="103" href="#103">103</a>     }
<a name="104" href="#104">104</a> 
<a name="105" href="#105">105</a>     <strong>public</strong> <strong>void</strong> exceptionCaught( ProtocolSession session, Throwable cause )
<a name="106" href="#106">106</a>     {
<a name="107" href="#107">107</a>         <em class="comment">// close the connection on exceptional situation</em>
<a name="108" href="#108">108</a>         session.close();
<a name="109" href="#109">109</a>     }
<a name="110" href="#110">110</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

