<!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>AprIoProcessor xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/mina/transport/socket/apr/AprIoProcessor.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.transport.socket.apr;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.nio.ByteBuffer;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executor;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.RuntimeIoException;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.file.FileRegion;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.polling.AbstractPollingIoProcessor;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.util.CircularQueue;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.tomcat.jni.Poll;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.tomcat.jni.Pool;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.tomcat.jni.Socket;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.tomcat.jni.Status;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment">/**</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * The class in charge of processing socket level IO events for the {@link AprSocketConnector}</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * @version $Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (jeu, 26 jun 2008) $</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> */</em>
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/mina/transport/socket/apr/AprIoProcessor.html">AprIoProcessor</a> <strong class="jxr_keyword">extends</strong> AbstractPollingIoProcessor&lt;AprSession&gt; {
<a name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> POLLSET_SIZE = 1024;
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long, AprSession&gt; allSessions =
<a name="50" href="#50">50</a>          <strong class="jxr_keyword">new</strong> HashMap&lt;Long, AprSession&gt;(POLLSET_SIZE);
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Object wakeupLock = <strong class="jxr_keyword">new</strong> Object();
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> wakeupSocket;
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">boolean</strong> toBeWakenUp;
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> pool;
<a name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> bufferPool; <em class="jxr_comment">// memory pool</em>
<a name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> pollset; <em class="jxr_comment">// socket poller</em>
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong>[] polledSockets = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[POLLSET_SIZE &lt;&lt; 1];
<a name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;AprSession&gt; polledSessions =
<a name="61" href="#61">61</a>          <strong class="jxr_keyword">new</strong> CircularQueue&lt;AprSession&gt;(POLLSET_SIZE);
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/mina/transport/socket/apr/AprIoProcessor.html">AprIoProcessor</a>(Executor executor) {
<a name="64" href="#64">64</a>          <strong class="jxr_keyword">super</strong>(executor);
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>          <em class="jxr_comment">// initialize a memory pool for APR functions</em>
<a name="67" href="#67">67</a>          pool = Pool.create(AprLibrary.getInstance().getRootPool());
<a name="68" href="#68">68</a>          bufferPool = Pool.create(AprLibrary.getInstance().getRootPool());
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>          <strong class="jxr_keyword">try</strong> {
<a name="71" href="#71">71</a>              wakeupSocket = Socket.create(
<a name="72" href="#72">72</a>                      Socket.APR_INET, Socket.SOCK_DGRAM, Socket.APR_PROTO_UDP, pool);
<a name="73" href="#73">73</a>          } <strong class="jxr_keyword">catch</strong> (RuntimeException e) {
<a name="74" href="#74">74</a>              <strong class="jxr_keyword">throw</strong> e;
<a name="75" href="#75">75</a>          } <strong class="jxr_keyword">catch</strong> (Error e) {
<a name="76" href="#76">76</a>              <strong class="jxr_keyword">throw</strong> e;
<a name="77" href="#77">77</a>          } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="78" href="#78">78</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/mina/core/RuntimeIoException.html">RuntimeIoException</a>(<span class="jxr_string">"Failed to create a wakeup socket."</span>, e);
<a name="79" href="#79">79</a>          }
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>          <strong class="jxr_keyword">boolean</strong> success = false;
<a name="82" href="#82">82</a>          <strong class="jxr_keyword">long</strong> newPollset;
<a name="83" href="#83">83</a>          <strong class="jxr_keyword">try</strong> {
<a name="84" href="#84">84</a>              newPollset = Poll.create(
<a name="85" href="#85">85</a>                      POLLSET_SIZE,
<a name="86" href="#86">86</a>                      pool,
<a name="87" href="#87">87</a>                      Poll.APR_POLLSET_THREADSAFE,
<a name="88" href="#88">88</a>                      Long.MAX_VALUE);
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>              <strong class="jxr_keyword">if</strong> (newPollset == 0) {
<a name="91" href="#91">91</a>                  newPollset = Poll.create(
<a name="92" href="#92">92</a>                          62,
<a name="93" href="#93">93</a>                          pool,
<a name="94" href="#94">94</a>                          Poll.APR_POLLSET_THREADSAFE,
<a name="95" href="#95">95</a>                          Long.MAX_VALUE);
<a name="96" href="#96">96</a>              }
<a name="97" href="#97">97</a>  
<a name="98" href="#98">98</a>              pollset = newPollset;
<a name="99" href="#99">99</a>              <strong class="jxr_keyword">if</strong> (pollset &lt; 0) {
<a name="100" href="#100">100</a>                 <strong class="jxr_keyword">if</strong> (Status.APR_STATUS_IS_ENOTIMPL(- (<strong class="jxr_keyword">int</strong>) pollset)) {
<a name="101" href="#101">101</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/mina/core/RuntimeIoException.html">RuntimeIoException</a>(
<a name="102" href="#102">102</a>                             <span class="jxr_string">"Thread-safe pollset is not supported in this platform."</span>);
<a name="103" href="#103">103</a>                 }
<a name="104" href="#104">104</a>             }
<a name="105" href="#105">105</a>             success = <strong class="jxr_keyword">true</strong>;
<a name="106" href="#106">106</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException e) {
<a name="107" href="#107">107</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="108" href="#108">108</a>         } <strong class="jxr_keyword">catch</strong> (Error e) {
<a name="109" href="#109">109</a>             <strong class="jxr_keyword">throw</strong> e;
<a name="110" href="#110">110</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="111" href="#111">111</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/mina/core/RuntimeIoException.html">RuntimeIoException</a>(<span class="jxr_string">"Failed to create a pollset."</span>, e);
<a name="112" href="#112">112</a>         } <strong class="jxr_keyword">finally</strong> {
<a name="113" href="#113">113</a>             <strong class="jxr_keyword">if</strong> (!success) {
<a name="114" href="#114">114</a>                 dispose();
<a name="115" href="#115">115</a>             }
<a name="116" href="#116">116</a>         }
<a name="117" href="#117">117</a>     }
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>     @Override
<a name="120" href="#120">120</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> dispose0() {
<a name="121" href="#121">121</a>         Poll.destroy(pollset);
<a name="122" href="#122">122</a>         Socket.close(wakeupSocket);
<a name="123" href="#123">123</a>         Pool.destroy(bufferPool);
<a name="124" href="#124">124</a>         Pool.destroy(pool);
<a name="125" href="#125">125</a>     }
<a name="126" href="#126">126</a> 
<a name="127" href="#127">127</a>     @Override
<a name="128" href="#128">128</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> select(<strong class="jxr_keyword">int</strong> timeout) <strong class="jxr_keyword">throws</strong> Exception {
<a name="129" href="#129">129</a>         <strong class="jxr_keyword">int</strong> rv = Poll.poll(pollset, 1000 * timeout, polledSockets, false);
<a name="130" href="#130">130</a>         <strong class="jxr_keyword">if</strong> (rv &lt;= 0) {
<a name="131" href="#131">131</a>             <strong class="jxr_keyword">if</strong> (rv != -120001) {
<a name="132" href="#132">132</a>                 throwException(rv);
<a name="133" href="#133">133</a>             }
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a>             rv = Poll.maintain(pollset, polledSockets, <strong class="jxr_keyword">true</strong>);
<a name="136" href="#136">136</a>             <strong class="jxr_keyword">if</strong> (rv &gt; 0) {
<a name="137" href="#137">137</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rv; i ++) {
<a name="138" href="#138">138</a>                     <strong class="jxr_keyword">long</strong> socket = polledSockets[i];
<a name="139" href="#139">139</a>                     <a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session = allSessions.get(socket);
<a name="140" href="#140">140</a>                     <strong class="jxr_keyword">if</strong> (session == <strong class="jxr_keyword">null</strong>) {
<a name="141" href="#141">141</a>                         <strong class="jxr_keyword">continue</strong>;
<a name="142" href="#142">142</a>                     }
<a name="143" href="#143">143</a> 
<a name="144" href="#144">144</a>                     <strong class="jxr_keyword">int</strong> flag = (session.isInterestedInRead()? Poll.APR_POLLIN : 0) |
<a name="145" href="#145">145</a>                                (session.isInterestedInWrite()? Poll.APR_POLLOUT : 0);
<a name="146" href="#146">146</a> 
<a name="147" href="#147">147</a>                     Poll.add(pollset, socket, flag);
<a name="148" href="#148">148</a>                 }
<a name="149" href="#149">149</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rv &lt; 0) {
<a name="150" href="#150">150</a>                 throwException(rv);
<a name="151" href="#151">151</a>             }
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a>             <strong class="jxr_keyword">return</strong> false;
<a name="154" href="#154">154</a>         } <strong class="jxr_keyword">else</strong> {
<a name="155" href="#155">155</a>             rv &lt;&lt;= 1;
<a name="156" href="#156">156</a>             <strong class="jxr_keyword">if</strong> (!polledSessions.isEmpty()) {
<a name="157" href="#157">157</a>                 polledSessions.clear();
<a name="158" href="#158">158</a>             }
<a name="159" href="#159">159</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rv; i ++) {
<a name="160" href="#160">160</a>                 <strong class="jxr_keyword">long</strong> flag = polledSockets[i];
<a name="161" href="#161">161</a>                 <strong class="jxr_keyword">long</strong> socket = polledSockets[++i];
<a name="162" href="#162">162</a>                 <strong class="jxr_keyword">if</strong> (socket == wakeupSocket) {
<a name="163" href="#163">163</a>                     <strong class="jxr_keyword">synchronized</strong> (wakeupLock) {
<a name="164" href="#164">164</a>                         Poll.remove(pollset, wakeupSocket);
<a name="165" href="#165">165</a>                         toBeWakenUp = false;
<a name="166" href="#166">166</a>                     }
<a name="167" href="#167">167</a>                     <strong class="jxr_keyword">continue</strong>;
<a name="168" href="#168">168</a>                 }
<a name="169" href="#169">169</a>                 <a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session = allSessions.get(socket);
<a name="170" href="#170">170</a>                 <strong class="jxr_keyword">if</strong> (session == <strong class="jxr_keyword">null</strong>) {
<a name="171" href="#171">171</a>                     <strong class="jxr_keyword">continue</strong>;
<a name="172" href="#172">172</a>                 }
<a name="173" href="#173">173</a> 
<a name="174" href="#174">174</a>                 session.setReadable((flag &amp; Poll.APR_POLLIN) != 0);
<a name="175" href="#175">175</a>                 session.setWritable((flag &amp; Poll.APR_POLLOUT) != 0);
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>                 polledSessions.add(session);
<a name="178" href="#178">178</a>             }
<a name="179" href="#179">179</a> 
<a name="180" href="#180">180</a>             <strong class="jxr_keyword">return</strong> !polledSessions.isEmpty();
<a name="181" href="#181">181</a>         }
<a name="182" href="#182">182</a>     }
<a name="183" href="#183">183</a> 
<a name="184" href="#184">184</a>     @Override
<a name="185" href="#185">185</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSelectorEmpty() {
<a name="186" href="#186">186</a>         <strong class="jxr_keyword">return</strong> allSessions.isEmpty();
<a name="187" href="#187">187</a>     }
<a name="188" href="#188">188</a> 
<a name="189" href="#189">189</a>     @Override
<a name="190" href="#190">190</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> wakeup() {
<a name="191" href="#191">191</a>         <strong class="jxr_keyword">if</strong> (toBeWakenUp) {
<a name="192" href="#192">192</a>             <strong class="jxr_keyword">return</strong>;
<a name="193" href="#193">193</a>         }
<a name="194" href="#194">194</a> 
<a name="195" href="#195">195</a>         <em class="jxr_comment">// Add a dummy socket to the pollset.</em>
<a name="196" href="#196">196</a>         <strong class="jxr_keyword">synchronized</strong> (wakeupLock) {
<a name="197" href="#197">197</a>             toBeWakenUp = <strong class="jxr_keyword">true</strong>;
<a name="198" href="#198">198</a>             Poll.add(pollset, wakeupSocket, Poll.APR_POLLOUT);
<a name="199" href="#199">199</a>         }
<a name="200" href="#200">200</a>     }
<a name="201" href="#201">201</a> 
<a name="202" href="#202">202</a>     @Override
<a name="203" href="#203">203</a>     <strong class="jxr_keyword">protected</strong> Iterator&lt;AprSession&gt; allSessions() {
<a name="204" href="#204">204</a>         <strong class="jxr_keyword">return</strong> allSessions.values().iterator();
<a name="205" href="#205">205</a>     }
<a name="206" href="#206">206</a> 
<a name="207" href="#207">207</a>     @Override
<a name="208" href="#208">208</a>     <strong class="jxr_keyword">protected</strong> Iterator&lt;AprSession&gt; selectedSessions() {
<a name="209" href="#209">209</a>         <strong class="jxr_keyword">return</strong> polledSessions.iterator();
<a name="210" href="#210">210</a>     }
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>     @Override
<a name="213" href="#213">213</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> init(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) <strong class="jxr_keyword">throws</strong> Exception {
<a name="214" href="#214">214</a>         <strong class="jxr_keyword">long</strong> s = session.getDescriptor();
<a name="215" href="#215">215</a>         Socket.optSet(s, Socket.APR_SO_NONBLOCK, 1);
<a name="216" href="#216">216</a>         Socket.timeoutSet(s, 0);
<a name="217" href="#217">217</a> 
<a name="218" href="#218">218</a>         <strong class="jxr_keyword">int</strong> rv = Poll.add(pollset, s, Poll.APR_POLLIN);
<a name="219" href="#219">219</a>         <strong class="jxr_keyword">if</strong> (rv != Status.APR_SUCCESS) {
<a name="220" href="#220">220</a>             throwException(rv);
<a name="221" href="#221">221</a>         }
<a name="222" href="#222">222</a> 
<a name="223" href="#223">223</a>         session.setInterestedInRead(<strong class="jxr_keyword">true</strong>);
<a name="224" href="#224">224</a>         allSessions.put(s, session);
<a name="225" href="#225">225</a>     }
<a name="226" href="#226">226</a> 
<a name="227" href="#227">227</a>     @Override
<a name="228" href="#228">228</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> destroy(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) <strong class="jxr_keyword">throws</strong> Exception {
<a name="229" href="#229">229</a>         <strong class="jxr_keyword">if</strong> (allSessions.remove(session.getDescriptor()) == <strong class="jxr_keyword">null</strong>) {
<a name="230" href="#230">230</a>             <em class="jxr_comment">// Already destroyed.</em>
<a name="231" href="#231">231</a>             <strong class="jxr_keyword">return</strong>;
<a name="232" href="#232">232</a>         }
<a name="233" href="#233">233</a> 
<a name="234" href="#234">234</a>         <strong class="jxr_keyword">int</strong> ret = Poll.remove(pollset, session.getDescriptor());
<a name="235" href="#235">235</a>         <strong class="jxr_keyword">try</strong> {
<a name="236" href="#236">236</a>             <strong class="jxr_keyword">if</strong> (ret != Status.APR_SUCCESS) {
<a name="237" href="#237">237</a>                 throwException(ret);
<a name="238" href="#238">238</a>             }
<a name="239" href="#239">239</a>         } <strong class="jxr_keyword">finally</strong> {
<a name="240" href="#240">240</a>             ret = Socket.close(session.getDescriptor());
<a name="241" href="#241">241</a>             
<a name="242" href="#242">242</a>         	<em class="jxr_comment">// destroying the session because it won't be reused </em>
<a name="243" href="#243">243</a>             <em class="jxr_comment">// after this point</em>
<a name="244" href="#244">244</a>             Socket.destroy(session.getDescriptor());
<a name="245" href="#245">245</a>             session.setDescriptor(0);
<a name="246" href="#246">246</a>             
<a name="247" href="#247">247</a>             <strong class="jxr_keyword">if</strong> (ret != Status.APR_SUCCESS) {
<a name="248" href="#248">248</a>                 throwException(ret);
<a name="249" href="#249">249</a>             }
<a name="250" href="#250">250</a>         }
<a name="251" href="#251">251</a>     }
<a name="252" href="#252">252</a> 
<a name="253" href="#253">253</a>     @Override
<a name="254" href="#254">254</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/mina/core/polling/AbstractPollingIoProcessor.html">SessionState</a> state(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) {
<a name="255" href="#255">255</a>         <strong class="jxr_keyword">long</strong> socket = session.getDescriptor();
<a name="256" href="#256">256</a>         <strong class="jxr_keyword">if</strong> (socket != 0) {
<a name="257" href="#257">257</a>             <strong class="jxr_keyword">return</strong> SessionState.OPEN;
<a name="258" href="#258">258</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (allSessions.get(socket) != <strong class="jxr_keyword">null</strong>) {
<a name="259" href="#259">259</a>             <strong class="jxr_keyword">return</strong> SessionState.PREPARING; <em class="jxr_comment">// will occur ?</em>
<a name="260" href="#260">260</a>         } <strong class="jxr_keyword">else</strong> {
<a name="261" href="#261">261</a>             <strong class="jxr_keyword">return</strong> SessionState.CLOSED;
<a name="262" href="#262">262</a>         }
<a name="263" href="#263">263</a>     }
<a name="264" href="#264">264</a> 
<a name="265" href="#265">265</a>     @Override
<a name="266" href="#266">266</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isReadable(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) {
<a name="267" href="#267">267</a>         <strong class="jxr_keyword">return</strong> session.isReadable();
<a name="268" href="#268">268</a>     }
<a name="269" href="#269">269</a> 
<a name="270" href="#270">270</a>     @Override
<a name="271" href="#271">271</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isWritable(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) {
<a name="272" href="#272">272</a>         <strong class="jxr_keyword">return</strong> session.isWritable();
<a name="273" href="#273">273</a>     }
<a name="274" href="#274">274</a> 
<a name="275" href="#275">275</a>     @Override
<a name="276" href="#276">276</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isInterestedInRead(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) {
<a name="277" href="#277">277</a>         <strong class="jxr_keyword">return</strong> session.isInterestedInRead();
<a name="278" href="#278">278</a>     }
<a name="279" href="#279">279</a> 
<a name="280" href="#280">280</a>     @Override
<a name="281" href="#281">281</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isInterestedInWrite(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session) {
<a name="282" href="#282">282</a>         <strong class="jxr_keyword">return</strong> session.isInterestedInWrite();
<a name="283" href="#283">283</a>     }
<a name="284" href="#284">284</a> 
<a name="285" href="#285">285</a>     @Override
<a name="286" href="#286">286</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setInterestedInRead(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session, <strong class="jxr_keyword">boolean</strong> value) <strong class="jxr_keyword">throws</strong> Exception {
<a name="287" href="#287">287</a>         <strong class="jxr_keyword">if</strong> (session.isInterestedInRead() == value) {
<a name="288" href="#288">288</a>             <strong class="jxr_keyword">return</strong>;
<a name="289" href="#289">289</a>         }
<a name="290" href="#290">290</a> 
<a name="291" href="#291">291</a>         <strong class="jxr_keyword">int</strong> rv = Poll.remove(pollset, session.getDescriptor());
<a name="292" href="#292">292</a>         <strong class="jxr_keyword">if</strong> (rv != Status.APR_SUCCESS) {
<a name="293" href="#293">293</a>             throwException(rv);
<a name="294" href="#294">294</a>         }
<a name="295" href="#295">295</a> 
<a name="296" href="#296">296</a>         <strong class="jxr_keyword">int</strong> flags = (value ? Poll.APR_POLLIN : 0)
<a name="297" href="#297">297</a>                 | (session.isInterestedInWrite() ? Poll.APR_POLLOUT : 0);
<a name="298" href="#298">298</a> 
<a name="299" href="#299">299</a>         rv = Poll.add(pollset, session.getDescriptor(), flags);
<a name="300" href="#300">300</a>         <strong class="jxr_keyword">if</strong> (rv == Status.APR_SUCCESS) {
<a name="301" href="#301">301</a>             session.setInterestedInRead(value);
<a name="302" href="#302">302</a>         } <strong class="jxr_keyword">else</strong> {
<a name="303" href="#303">303</a>             throwException(rv);
<a name="304" href="#304">304</a>         }
<a name="305" href="#305">305</a>     }
<a name="306" href="#306">306</a> 
<a name="307" href="#307">307</a>     @Override
<a name="308" href="#308">308</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setInterestedInWrite(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session, <strong class="jxr_keyword">boolean</strong> value) <strong class="jxr_keyword">throws</strong> Exception {
<a name="309" href="#309">309</a>         <strong class="jxr_keyword">if</strong> (session.isInterestedInWrite() == value) {
<a name="310" href="#310">310</a>             <strong class="jxr_keyword">return</strong>;
<a name="311" href="#311">311</a>         }
<a name="312" href="#312">312</a> 
<a name="313" href="#313">313</a>         <strong class="jxr_keyword">int</strong> rv = Poll.remove(pollset, session.getDescriptor());
<a name="314" href="#314">314</a>         <strong class="jxr_keyword">if</strong> (rv != Status.APR_SUCCESS) {
<a name="315" href="#315">315</a>             throwException(rv);
<a name="316" href="#316">316</a>         }
<a name="317" href="#317">317</a> 
<a name="318" href="#318">318</a>         <strong class="jxr_keyword">int</strong> flags = (session.isInterestedInRead() ? Poll.APR_POLLIN : 0)
<a name="319" href="#319">319</a>                 | (value ? Poll.APR_POLLOUT : 0);
<a name="320" href="#320">320</a> 
<a name="321" href="#321">321</a>         rv = Poll.add(pollset, session.getDescriptor(), flags);
<a name="322" href="#322">322</a>         <strong class="jxr_keyword">if</strong> (rv == Status.APR_SUCCESS) {
<a name="323" href="#323">323</a>             session.setInterestedInWrite(value);
<a name="324" href="#324">324</a>         } <strong class="jxr_keyword">else</strong> {
<a name="325" href="#325">325</a>             throwException(rv);
<a name="326" href="#326">326</a>         }
<a name="327" href="#327">327</a>     }
<a name="328" href="#328">328</a> 
<a name="329" href="#329">329</a>     @Override
<a name="330" href="#330">330</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> read(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session, <a href="../../../../../../org/apache/mina/core/buffer/IoBuffer.html">IoBuffer</a> buffer) <strong class="jxr_keyword">throws</strong> Exception {
<a name="331" href="#331">331</a>         <strong class="jxr_keyword">int</strong> bytes;
<a name="332" href="#332">332</a>         <strong class="jxr_keyword">int</strong> capacity = buffer.remaining();
<a name="333" href="#333">333</a>         <em class="jxr_comment">// Using Socket.recv() directly causes memory leak. :-(</em>
<a name="334" href="#334">334</a>         ByteBuffer b = Pool.alloc(bufferPool, capacity);
<a name="335" href="#335">335</a>         <strong class="jxr_keyword">try</strong> {
<a name="336" href="#336">336</a>             bytes = Socket.recvb(
<a name="337" href="#337">337</a>                     session.getDescriptor(), b, 0, capacity);
<a name="338" href="#338">338</a>             <strong class="jxr_keyword">if</strong> (bytes &gt; 0) {
<a name="339" href="#339">339</a>                 b.position(0);
<a name="340" href="#340">340</a>                 b.limit(bytes);
<a name="341" href="#341">341</a>                 buffer.put(b);
<a name="342" href="#342">342</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (bytes &lt; 0) {
<a name="343" href="#343">343</a>                 <strong class="jxr_keyword">if</strong> (Status.APR_STATUS_IS_EOF(-bytes)) {
<a name="344" href="#344">344</a>                     bytes = -1;
<a name="345" href="#345">345</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (Status.APR_STATUS_IS_EAGAIN(-bytes)) {
<a name="346" href="#346">346</a>                     bytes = 0;
<a name="347" href="#347">347</a>                 } <strong class="jxr_keyword">else</strong> {
<a name="348" href="#348">348</a>                     throwException(bytes);
<a name="349" href="#349">349</a>                 }
<a name="350" href="#350">350</a>             }
<a name="351" href="#351">351</a>         } <strong class="jxr_keyword">finally</strong> {
<a name="352" href="#352">352</a>             Pool.clear(bufferPool);
<a name="353" href="#353">353</a>         }
<a name="354" href="#354">354</a>         <strong class="jxr_keyword">return</strong> bytes;
<a name="355" href="#355">355</a>     }
<a name="356" href="#356">356</a> 
<a name="357" href="#357">357</a>     @Override
<a name="358" href="#358">358</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> write(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session, <a href="../../../../../../org/apache/mina/core/buffer/IoBuffer.html">IoBuffer</a> buf, <strong class="jxr_keyword">int</strong> length) <strong class="jxr_keyword">throws</strong> Exception {
<a name="359" href="#359">359</a>         <strong class="jxr_keyword">int</strong> writtenBytes;
<a name="360" href="#360">360</a>         <strong class="jxr_keyword">if</strong> (buf.isDirect()) {
<a name="361" href="#361">361</a>             writtenBytes = Socket.sendb(
<a name="362" href="#362">362</a>                     session.getDescriptor(), buf.buf(), buf.position(), length);
<a name="363" href="#363">363</a>         } <strong class="jxr_keyword">else</strong> {
<a name="364" href="#364">364</a>             writtenBytes = Socket.send(
<a name="365" href="#365">365</a>                     session.getDescriptor(), buf.array(), buf.position(), length);
<a name="366" href="#366">366</a>             <strong class="jxr_keyword">if</strong> (writtenBytes &gt; 0) {
<a name="367" href="#367">367</a>                 buf.skip(writtenBytes);
<a name="368" href="#368">368</a>             }
<a name="369" href="#369">369</a>         }
<a name="370" href="#370">370</a> 
<a name="371" href="#371">371</a>         <strong class="jxr_keyword">if</strong> (writtenBytes &lt; 0) {
<a name="372" href="#372">372</a>             <strong class="jxr_keyword">if</strong> (Status.APR_STATUS_IS_EAGAIN(-writtenBytes)) {
<a name="373" href="#373">373</a>                 writtenBytes = 0;
<a name="374" href="#374">374</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (Status.APR_STATUS_IS_EOF(-writtenBytes)) {
<a name="375" href="#375">375</a>                 writtenBytes = 0;
<a name="376" href="#376">376</a>             } <strong class="jxr_keyword">else</strong> {
<a name="377" href="#377">377</a>                 throwException(writtenBytes);
<a name="378" href="#378">378</a>             }
<a name="379" href="#379">379</a>         }
<a name="380" href="#380">380</a>         <strong class="jxr_keyword">return</strong> writtenBytes;
<a name="381" href="#381">381</a>     }
<a name="382" href="#382">382</a> 
<a name="383" href="#383">383</a>     @Override
<a name="384" href="#384">384</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> transferFile(<a href="../../../../../../org/apache/mina/transport/socket/apr/AprSession.html">AprSession</a> session, <a href="../../../../../../org/apache/mina/core/file/FileRegion.html">FileRegion</a> region, <strong class="jxr_keyword">int</strong> length)
<a name="385" href="#385">385</a>             <strong class="jxr_keyword">throws</strong> Exception {
<a name="386" href="#386">386</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
<a name="387" href="#387">387</a>     }
<a name="388" href="#388">388</a> 
<a name="389" href="#389">389</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> throwException(<strong class="jxr_keyword">int</strong> code) <strong class="jxr_keyword">throws</strong> IOException {
<a name="390" href="#390">390</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(
<a name="391" href="#391">391</a>                 org.apache.tomcat.jni.Error.strerror(-code) +
<a name="392" href="#392">392</a>                 <span class="jxr_string">" (code: "</span> + code + <span class="jxr_string">")"</span>);
<a name="393" href="#393">393</a>     }
<a name="394" href="#394">394</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

