<!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>PrefixedStringEncoder xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">View Javadoc</a></div><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.filter.codec.prefixedstring;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.ProtocolEncoderAdapter;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.ProtocolEncoderOutput;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.ProtocolEncoder;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.nio.charset.Charset;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * A {@link ProtocolEncoder} which encodes a string</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * using a fixed-length length prefix.</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> *</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> */</em>
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">PrefixedStringEncoder</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/mina/filter/codec/ProtocolEncoderAdapter.html">ProtocolEncoderAdapter</a> {
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DEFAULT_PREFIX_LENGTH = 4;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DEFAULT_MAX_DATA_LENGTH = 2048;
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Charset charset;
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> prefixLength = DEFAULT_PREFIX_LENGTH;
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxDataLength = DEFAULT_MAX_DATA_LENGTH;
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">PrefixedStringEncoder</a>(Charset charset, <strong class="jxr_keyword">int</strong> prefixLength, <strong class="jxr_keyword">int</strong> maxDataLength) {
<a name="49" href="#49">49</a>          <strong class="jxr_keyword">this</strong>.charset = charset;
<a name="50" href="#50">50</a>          <strong class="jxr_keyword">this</strong>.prefixLength = prefixLength;
<a name="51" href="#51">51</a>          <strong class="jxr_keyword">this</strong>.maxDataLength = maxDataLength;
<a name="52" href="#52">52</a>      }
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">PrefixedStringEncoder</a>(Charset charset, <strong class="jxr_keyword">int</strong> prefixLength) {
<a name="55" href="#55">55</a>          <strong class="jxr_keyword">this</strong>(charset, prefixLength, DEFAULT_MAX_DATA_LENGTH);
<a name="56" href="#56">56</a>      }
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">PrefixedStringEncoder</a>(Charset charset) {
<a name="59" href="#59">59</a>          <strong class="jxr_keyword">this</strong>(charset, DEFAULT_PREFIX_LENGTH);
<a name="60" href="#60">60</a>      }
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.html">PrefixedStringEncoder</a>() {
<a name="63" href="#63">63</a>          <strong class="jxr_keyword">this</strong>(Charset.defaultCharset());
<a name="64" href="#64">64</a>      }
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>      <em class="jxr_javadoccomment">/**</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * Sets the number of bytes used by the length prefix</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     *</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * @param prefixLength the length of the length prefix (1, 2, or 4)</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     */</em>
<a name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setPrefixLength(<strong class="jxr_keyword">int</strong> prefixLength) {
<a name="72" href="#72">72</a>          <strong class="jxr_keyword">if</strong> (prefixLength != 1 &amp;&amp; prefixLength != 2 &amp;&amp; prefixLength != 4) {
<a name="73" href="#73">73</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"prefixLength: "</span> + prefixLength);
<a name="74" href="#74">74</a>          }
<a name="75" href="#75">75</a>          <strong class="jxr_keyword">this</strong>.prefixLength = prefixLength;
<a name="76" href="#76">76</a>      }
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>      <em class="jxr_javadoccomment">/**</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     * Gets the length of the length prefix (1, 2, or 4)</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     *</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * @return length of the length prefix</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     */</em>
<a name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getPrefixLength() {
<a name="84" href="#84">84</a>          <strong class="jxr_keyword">return</strong> prefixLength;
<a name="85" href="#85">85</a>      }
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      <em class="jxr_javadoccomment">/**</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * Sets the maximum number of bytes allowed for encoding a single String</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * (including the prefix)</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     * The encoder will throw a {@link IllegalArgumentException} when more bytes</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     * are needed to encode a String value.</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * The default value is {@link PrefixedStringEncoder#DEFAULT_MAX_DATA_LENGTH}.</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     * &lt;/p&gt;</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     *</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * @param maxDataLength maximum number of bytes allowed for encoding a single String</em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     */</em>
<a name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMaxDataLength(<strong class="jxr_keyword">int</strong> maxDataLength) {
<a name="99" href="#99">99</a>          <strong class="jxr_keyword">this</strong>.maxDataLength = maxDataLength;
<a name="100" href="#100">100</a>     }
<a name="101" href="#101">101</a> 
<a name="102" href="#102">102</a>     <em class="jxr_javadoccomment">/**</em>
<a name="103" href="#103">103</a> <em class="jxr_javadoccomment">     * Gets the maximum number of bytes allowed for encoding a single String     *</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     *</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @return maximum number of bytes allowed for encoding a single String (prefix included)</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     */</em>
<a name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getMaxDataLength() {
<a name="108" href="#108">108</a>         <strong class="jxr_keyword">return</strong> maxDataLength;
<a name="109" href="#109">109</a>     }
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a> 
<a name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> encode(<a href="../../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session, Object message, <a href="../../../../../../org/apache/mina/filter/codec/ProtocolEncoderOutput.html">ProtocolEncoderOutput</a> out) <strong class="jxr_keyword">throws</strong> Exception {
<a name="113" href="#113">113</a>         String value = (String) message;
<a name="114" href="#114">114</a>         <a href="../../../../../../org/apache/mina/core/buffer/IoBuffer.html">IoBuffer</a> buffer = IoBuffer.allocate(value.length()).setAutoExpand(<strong class="jxr_keyword">true</strong>);
<a name="115" href="#115">115</a>         buffer.putPrefixedString(value, prefixLength, charset.newEncoder());
<a name="116" href="#116">116</a>         <strong class="jxr_keyword">if</strong> (buffer.position() &gt; maxDataLength) {
<a name="117" href="#117">117</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Data length: "</span> + buffer.position());
<a name="118" href="#118">118</a>         }
<a name="119" href="#119">119</a>         buffer.flip();
<a name="120" href="#120">120</a>         out.write(buffer);
<a name="121" href="#121">121</a>     }
<a name="122" href="#122">122</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

