<!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>CumulativeProtocolDecoder xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/protocol/codec/CumulativeProtocolDecoder.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: CumulativeProtocolDecoder.java 357871 2005-12-20 01:56:40Z 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/protocol/codec/package-summary.html">org.apache.mina.protocol.codec</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.protocol.ProtocolDecoder;
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolDecoderOutput;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolSession;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolViolationException;
<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> * A {@link ProtocolDecoder} that cumulates the content of received</em>
<a name="29" href="#29">29</a>  <em> * buffers to a &lt;em>cumulative buffer&lt;/em> to help users implement decoders.</em>
<a name="30" href="#30">30</a>  <em> * &lt;p></em>
<a name="31" href="#31">31</a>  <em> * If the received {@link ByteBuffer} is only a part of a message.</em>
<a name="32" href="#32">32</a>  <em> * decoders should cumulate received buffers to make a message complete or</em>
<a name="33" href="#33">33</a>  <em> * to postpone decoding until more buffers arrive.</em>
<a name="34" href="#34">34</a>  <em> * &lt;p></em>
<a name="35" href="#35">35</a>  <em> * Here is an example decoder that decodes a list of integers:</em>
<a name="36" href="#36">36</a>  <em> * &lt;pre></em>
<a name="37" href="#37">37</a>  <em> * public class IntegerDecoder extends CumulativeProtocolDecoder {</em>
<a name="38" href="#38">38</a>  <em> * </em>
<a name="39" href="#39">39</a>  <em> *     public IntegerDecoder() {</em>
<a name="40" href="#40">40</a>  <em> *         super(4);</em>
<a name="41" href="#41">41</a>  <em> *     }</em>
<a name="42" href="#42">42</a>  <em> * </em>
<a name="43" href="#43">43</a>  <em> *     protected boolean doDecode(ProtocolSession session, ByteBuffer in,</em>
<a name="44" href="#44">44</a>  <em> *                                ProtocolDecoderOutput out) throws ProtocolViolationException {</em>
<a name="45" href="#45">45</a>  <em> *         if (in.remaining() &lt; 4) {</em>
<a name="46" href="#46">46</a>  <em> *             return false; // Cumulate remainder to decode later.</em>
<a name="47" href="#47">47</a>  <em> *         }</em>
<a name="48" href="#48">48</a>  <em> *         </em>
<a name="49" href="#49">49</a>  <em> *         out.write(new Integer(in.getInt()));</em>
<a name="50" href="#50">50</a>  <em> * </em>
<a name="51" href="#51">51</a>  <em> *         // Decoded one integer; CumulativeProtocolDecoder will call me again,</em>
<a name="52" href="#52">52</a>  <em> *         // so I can decode as many integers as possible.</em>
<a name="53" href="#53">53</a>  <em> *         return true;</em>
<a name="54" href="#54">54</a>  <em> *     }</em>
<a name="55" href="#55">55</a>  <em> * }</em>
<a name="56" href="#56">56</a>  <em> * &lt;/pre></em>
<a name="57" href="#57">57</a>  <em> * </em>
<a name="58" href="#58">58</a>  <em> * @author The Apache Directory Project (dev@directory.apache.org)</em>
<a name="59" href="#59">59</a>  <em> * @version $Rev: 357871 $, $Date: 2005-12-20 10:56:40 +0900 (Tue, 20 Dec 2005) $</em>
<a name="60" href="#60">60</a>  <em> */</em>
<a name="61" href="#61">61</a>  <strong>public</strong> <strong>abstract</strong> <strong>class</strong> <a href="../../../../../org/apache/mina/protocol/codec/CumulativeProtocolDecoder.html">CumulativeProtocolDecoder</a> implements <a href="../../../../../org/apache/mina/protocol/ProtocolDecoder.html">ProtocolDecoder</a> {
<a name="62" href="#62">62</a>      
<a name="63" href="#63">63</a>      <em>/**<em>* Cumulation buffer */</em></em>
<a name="64" href="#64">64</a>      <strong>private</strong> <a href="../../../../../org/apache/mina/common/ByteBuffer.html">ByteBuffer</a> buf;
<a name="65" href="#65">65</a>      
<a name="66" href="#66">66</a>      <em>/**<em>*</em></em>
<a name="67" href="#67">67</a>  <em>     * Creates a new instance with the specified default capacity of</em>
<a name="68" href="#68">68</a>  <em>     * cumulative buffer.  Please note that the capacity increases</em>
<a name="69" href="#69">69</a>  <em>     * automatically.</em>
<a name="70" href="#70">70</a>  <em>     */</em>
<a name="71" href="#71">71</a>      <strong>protected</strong> <a href="../../../../../org/apache/mina/protocol/codec/CumulativeProtocolDecoder.html">CumulativeProtocolDecoder</a>( <strong>int</strong> defaultCapacity )
<a name="72" href="#72">72</a>      {
<a name="73" href="#73">73</a>          buf = ByteBuffer.allocate( defaultCapacity );
<a name="74" href="#74">74</a>          buf.setAutoExpand( <strong>true</strong> );
<a name="75" href="#75">75</a>      }
<a name="76" href="#76">76</a>      
<a name="77" href="#77">77</a>      <em>/**<em>*</em></em>
<a name="78" href="#78">78</a>  <em>     * Cumulates content of &lt;tt>in&lt;/tt> into internal buffer and forwards</em>
<a name="79" href="#79">79</a>  <em>     * decoding request to {@link #doDecode(ProtocolSession, ByteBuffer, ProtocolDecoderOutput)}.</em>
<a name="80" href="#80">80</a>  <em>     * &lt;tt>doDecode()&lt;/tt> is invoked repeatedly until it returns &lt;tt>false&lt;/tt></em>
<a name="81" href="#81">81</a>  <em>     * and the cumulative buffer is compacted after decoding ends.</em>
<a name="82" href="#82">82</a>  <em>     * </em>
<a name="83" href="#83">83</a>  <em>     * @throws IllegalStateException if your &lt;tt>doDecode()&lt;/tt> returned</em>
<a name="84" href="#84">84</a>  <em>     *                               &lt;tt>true&lt;/tt> not consuming the cumulative buffer.</em>
<a name="85" href="#85">85</a>  <em>     */</em>
<a name="86" href="#86">86</a>      <strong>public</strong> <strong>void</strong> decode( ProtocolSession session, ByteBuffer in,
<a name="87" href="#87">87</a>                          <a href="../../../../../org/apache/mina/protocol/ProtocolDecoderOutput.html">ProtocolDecoderOutput</a> out ) throws ProtocolViolationException
<a name="88" href="#88">88</a>      {
<a name="89" href="#89">89</a>          <strong>if</strong>( session.getTransportType().isConnectionless() )
<a name="90" href="#90">90</a>          {
<a name="91" href="#91">91</a>              <strong>throw</strong> <strong>new</strong> IllegalStateException(
<a name="92" href="#92">92</a>                      <span class="string">"This decoder doesn't work for connectionless transport types."</span> );
<a name="93" href="#93">93</a>          }
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</a>          <a href="../../../../../org/apache/mina/common/ByteBuffer.html">ByteBuffer</a> buf = <strong>this</strong>.buf;
<a name="96" href="#96">96</a>          buf.put( in );
<a name="97" href="#97">97</a>          buf.flip();
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>          <strong>try</strong>
<a name="100" href="#100">100</a>         {
<a name="101" href="#101">101</a>             <strong>for</strong>( ;; )
<a name="102" href="#102">102</a>             {
<a name="103" href="#103">103</a>                 <strong>int</strong> oldPos = buf.position();
<a name="104" href="#104">104</a>                 <strong>boolean</strong> decoded = doDecode( session, buf, out );
<a name="105" href="#105">105</a>                 <strong>if</strong>( decoded )
<a name="106" href="#106">106</a>                 {
<a name="107" href="#107">107</a>                     <strong>if</strong>( buf.position() == oldPos )
<a name="108" href="#108">108</a>                     {
<a name="109" href="#109">109</a>                         <strong>throw</strong> <strong>new</strong> IllegalStateException(
<a name="110" href="#110">110</a>                                 <span class="string">"doDecode() can't return true when buffer is not consumed."</span> );
<a name="111" href="#111">111</a>                     }
<a name="112" href="#112">112</a>                     
<a name="113" href="#113">113</a>                     <strong>if</strong>( !buf.hasRemaining() )
<a name="114" href="#114">114</a>                     {
<a name="115" href="#115">115</a>                         <strong>break</strong>;
<a name="116" href="#116">116</a>                     }
<a name="117" href="#117">117</a>                 }
<a name="118" href="#118">118</a>                 <strong>else</strong>
<a name="119" href="#119">119</a>                 {
<a name="120" href="#120">120</a>                     <strong>break</strong>;
<a name="121" href="#121">121</a>                 }
<a name="122" href="#122">122</a>             }
<a name="123" href="#123">123</a>         }
<a name="124" href="#124">124</a>         <strong>finally</strong>
<a name="125" href="#125">125</a>         {
<a name="126" href="#126">126</a>             buf.compact();
<a name="127" href="#127">127</a>         }
<a name="128" href="#128">128</a>     }
<a name="129" href="#129">129</a>     
<a name="130" href="#130">130</a>     <em>/**<em>*</em></em>
<a name="131" href="#131">131</a> <em>     * Implement this method to consume the specified cumulative buffer and</em>
<a name="132" href="#132">132</a> <em>     * decode its content into message(s). </em>
<a name="133" href="#133">133</a> <em>     *  </em>
<a name="134" href="#134">134</a> <em>     * @param in the cumulative buffer</em>
<a name="135" href="#135">135</a> <em>     * @return &lt;tt>true&lt;/tt> if and only if there's more to decode in the buffer</em>
<a name="136" href="#136">136</a> <em>     *         and you want to have &lt;tt>doDecode&lt;/tt> method invoked again.</em>
<a name="137" href="#137">137</a> <em>     *         Return &lt;tt>false&lt;/tt> if remaining data is not enough to decode,</em>
<a name="138" href="#138">138</a> <em>     *         then this method will be invoked again when more data is cumulated.</em>
<a name="139" href="#139">139</a> <em>     * @throws ProtocolViolationException if cannot decode &lt;tt>in&lt;/tt>.</em>
<a name="140" href="#140">140</a> <em>     */</em>
<a name="141" href="#141">141</a>     <strong>protected</strong> <strong>abstract</strong> <strong>boolean</strong> doDecode( ProtocolSession session, ByteBuffer in,
<a name="142" href="#142">142</a>                                          <a href="../../../../../org/apache/mina/protocol/ProtocolDecoderOutput.html">ProtocolDecoderOutput</a> out ) throws ProtocolViolationException;
<a name="143" href="#143">143</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

