<!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>SocketSessionConfig xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/io/socket/SocketSessionConfig.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: SocketSessionConfig.java 210062 2005-07-11 03:52:38Z 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/io/socket/package-summary.html">org.apache.mina.io.socket</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> java.net.SocketException;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.mina.common.BaseSessionConfig;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.common.SessionConfig;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.io.IoSession;
<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolSession;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <em>/**<em>*</em></em>
<a name="29" href="#29">29</a>  <em> * A {@link SessionConfig} for socket transport (TCP/IP).</em>
<a name="30" href="#30">30</a>  <em> * You can downcast {@link SessionConfig} instance returned by</em>
<a name="31" href="#31">31</a>  <em> * {@link IoSession#getConfig()} or {@link ProtocolSession#getConfig()}</em>
<a name="32" href="#32">32</a>  <em> * if you've created datagram session using {@link SocketAcceptor} or </em>
<a name="33" href="#33">33</a>  <em> * {@link SocketConnector}.</em>
<a name="34" href="#34">34</a>  <em> * </em>
<a name="35" href="#35">35</a>  <em> * @author Trustin Lee (trustin@apache.org)</em>
<a name="36" href="#36">36</a>  <em> * @version $Rev: 210062 $, $Date: 2005-07-11 12:52:38 +0900 $,</em>
<a name="37" href="#37">37</a>  <em> */</em>
<a name="38" href="#38">38</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../../org/apache/mina/io/socket/SocketSessionConfig.html">SocketSessionConfig</a> <strong>extends</strong> <a href="../../../../../org/apache/mina/common/BaseSessionConfig.html">BaseSessionConfig</a>
<a name="39" href="#39">39</a>  {
<a name="40" href="#40">40</a>      <strong>private</strong> <strong>static</strong> <strong>final</strong> <strong>int</strong> DEFAULT_READ_BUFFER_SIZE = 1024;
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      <strong>private</strong> <strong>final</strong> <a href="../../../../../org/apache/mina/io/socket/SocketSession.html">SocketSession</a> session;
<a name="43" href="#43">43</a>      
<a name="44" href="#44">44</a>      <strong>private</strong> <strong>int</strong> readBufferSize = DEFAULT_READ_BUFFER_SIZE;
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>      <a href="../../../../../org/apache/mina/io/socket/SocketSessionConfig.html">SocketSessionConfig</a>( SocketSession session )
<a name="47" href="#47">47</a>      {
<a name="48" href="#48">48</a>          <strong>this</strong>.session = session;
<a name="49" href="#49">49</a>      }
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>      <strong>public</strong> <strong>boolean</strong> getKeepAlive() throws SocketException
<a name="52" href="#52">52</a>      {
<a name="53" href="#53">53</a>          <strong>return</strong> session.getChannel().socket().getKeepAlive();
<a name="54" href="#54">54</a>      }
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      <strong>public</strong> <strong>void</strong> setKeepAlive( <strong>boolean</strong> on ) throws SocketException
<a name="57" href="#57">57</a>      {
<a name="58" href="#58">58</a>          session.getChannel().socket().setKeepAlive( on );
<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>boolean</strong> getOOBInline() throws SocketException
<a name="62" href="#62">62</a>      {
<a name="63" href="#63">63</a>          <strong>return</strong> session.getChannel().socket().getOOBInline();
<a name="64" href="#64">64</a>      }
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>      <strong>public</strong> <strong>void</strong> setOOBInline( <strong>boolean</strong> on ) throws SocketException
<a name="67" href="#67">67</a>      {
<a name="68" href="#68">68</a>          session.getChannel().socket().setOOBInline( on );
<a name="69" href="#69">69</a>      }
<a name="70" href="#70">70</a>  
<a name="71" href="#71">71</a>      <strong>public</strong> <strong>boolean</strong> getReuseAddress() throws SocketException
<a name="72" href="#72">72</a>      {
<a name="73" href="#73">73</a>          <strong>return</strong> session.getChannel().socket().getReuseAddress();
<a name="74" href="#74">74</a>      }
<a name="75" href="#75">75</a>  
<a name="76" href="#76">76</a>      <strong>public</strong> <strong>void</strong> setReuseAddress( <strong>boolean</strong> on ) throws SocketException
<a name="77" href="#77">77</a>      {
<a name="78" href="#78">78</a>          session.getChannel().socket().setReuseAddress( on );
<a name="79" href="#79">79</a>      }
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      <strong>public</strong> <strong>int</strong> getSoLinger() throws SocketException
<a name="82" href="#82">82</a>      {
<a name="83" href="#83">83</a>          <strong>return</strong> session.getChannel().socket().getSoLinger();
<a name="84" href="#84">84</a>      }
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>      <strong>public</strong> <strong>void</strong> setSoLinger( <strong>boolean</strong> on, <strong>int</strong> linger ) throws SocketException
<a name="87" href="#87">87</a>      {
<a name="88" href="#88">88</a>          session.getChannel().socket().setSoLinger( on, linger );
<a name="89" href="#89">89</a>      }
<a name="90" href="#90">90</a>  
<a name="91" href="#91">91</a>      <strong>public</strong> <strong>boolean</strong> getTcpNoDelay() throws SocketException
<a name="92" href="#92">92</a>      {
<a name="93" href="#93">93</a>          <strong>return</strong> session.getChannel().socket().getTcpNoDelay();
<a name="94" href="#94">94</a>      }
<a name="95" href="#95">95</a>  
<a name="96" href="#96">96</a>      <strong>public</strong> <strong>void</strong> setTcpNoDelay( <strong>boolean</strong> on ) throws SocketException
<a name="97" href="#97">97</a>      {
<a name="98" href="#98">98</a>          session.getChannel().socket().setTcpNoDelay( on );
<a name="99" href="#99">99</a>      }
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>     <strong>public</strong> <strong>int</strong> getTrafficClass() throws SocketException
<a name="102" href="#102">102</a>     {
<a name="103" href="#103">103</a>         <strong>return</strong> session.getChannel().socket().getTrafficClass();
<a name="104" href="#104">104</a>     }
<a name="105" href="#105">105</a> 
<a name="106" href="#106">106</a>     <strong>public</strong> <strong>void</strong> setTrafficClass( <strong>int</strong> tc ) throws SocketException
<a name="107" href="#107">107</a>     {
<a name="108" href="#108">108</a>         session.getChannel().socket().setTrafficClass( tc );
<a name="109" href="#109">109</a>     }
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>     <strong>public</strong> <strong>int</strong> getSendBufferSize() throws SocketException
<a name="112" href="#112">112</a>     {
<a name="113" href="#113">113</a>         <strong>return</strong> session.getChannel().socket().getSendBufferSize();
<a name="114" href="#114">114</a>     }
<a name="115" href="#115">115</a> 
<a name="116" href="#116">116</a>     <strong>public</strong> <strong>void</strong> setSendBufferSize( <strong>int</strong> size ) throws SocketException
<a name="117" href="#117">117</a>     {
<a name="118" href="#118">118</a>         session.getChannel().socket().setSendBufferSize( size );
<a name="119" href="#119">119</a>     }
<a name="120" href="#120">120</a> 
<a name="121" href="#121">121</a>     <strong>public</strong> <strong>int</strong> getReceiveBufferSize() throws SocketException
<a name="122" href="#122">122</a>     {
<a name="123" href="#123">123</a>         <strong>return</strong> session.getChannel().socket().getReceiveBufferSize();
<a name="124" href="#124">124</a>     }
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>     <strong>public</strong> <strong>void</strong> setReceiveBufferSize( <strong>int</strong> size ) throws SocketException
<a name="127" href="#127">127</a>     {
<a name="128" href="#128">128</a>         session.getChannel().socket().setReceiveBufferSize( size );
<a name="129" href="#129">129</a>     }
<a name="130" href="#130">130</a>     
<a name="131" href="#131">131</a>     <strong>public</strong> <strong>int</strong> getSessionReceiveBufferSize()
<a name="132" href="#132">132</a>     {
<a name="133" href="#133">133</a>         <strong>return</strong> readBufferSize;
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a>     
<a name="136" href="#136">136</a>     <strong>public</strong> <strong>void</strong> setSessionReceiveBufferSize( <strong>int</strong> size )
<a name="137" href="#137">137</a>     {
<a name="138" href="#138">138</a>         <strong>if</strong>( size &lt;= 0 )
<a name="139" href="#139">139</a>         {
<a name="140" href="#140">140</a>             <strong>throw</strong> <strong>new</strong> IllegalArgumentException( <span class="string">"Invalid session receive buffer size: "</span> + size );
<a name="141" href="#141">141</a>         }
<a name="142" href="#142">142</a>         
<a name="143" href="#143">143</a>         <strong>this</strong>.readBufferSize = size;
<a name="144" href="#144">144</a>     }
<a name="145" href="#145">145</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

