<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> *  Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> *  or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> *  distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> *  regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> *  to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> *  "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> *  with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *    http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> *  Unless required by applicable law or agreed to in writing,<a name="line.12"></a>
<span class="sourceLineNo">013</span> *  software distributed under the License is distributed on an<a name="line.13"></a>
<span class="sourceLineNo">014</span> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.14"></a>
<span class="sourceLineNo">015</span> *  KIND, either express or implied.  See the License for the<a name="line.15"></a>
<span class="sourceLineNo">016</span> *  specific language governing permissions and limitations<a name="line.16"></a>
<span class="sourceLineNo">017</span> *  under the License.<a name="line.17"></a>
<span class="sourceLineNo">018</span> *<a name="line.18"></a>
<span class="sourceLineNo">019</span> */<a name="line.19"></a>
<span class="sourceLineNo">020</span>package org.apache.mina.filter.keepalive;<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.mina.core.filterchain.IoFilter;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import org.apache.mina.core.filterchain.IoFilterAdapter;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import org.apache.mina.core.filterchain.IoFilterChain;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import org.apache.mina.core.service.IoHandler;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import org.apache.mina.core.session.AttributeKey;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import org.apache.mina.core.session.IdleStatus;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.mina.core.session.IoEventType;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import org.apache.mina.core.session.IoSession;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.mina.core.session.IoSessionConfig;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import org.apache.mina.core.write.DefaultWriteRequest;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import org.apache.mina.core.write.WriteRequest;<a name="line.32"></a>
<span class="sourceLineNo">033</span><a name="line.33"></a>
<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
<span class="sourceLineNo">035</span> * An {@link IoFilter} that sends a keep-alive request on<a name="line.35"></a>
<span class="sourceLineNo">036</span> * {@link IoEventType#SESSION_IDLE} and sends back the response for the<a name="line.36"></a>
<span class="sourceLineNo">037</span> * sent keep-alive request.<a name="line.37"></a>
<span class="sourceLineNo">038</span> *<a name="line.38"></a>
<span class="sourceLineNo">039</span> * &lt;h2&gt;Interference with {@link IoSessionConfig#setIdleTime(IdleStatus, int)}&lt;/h2&gt;<a name="line.39"></a>
<span class="sourceLineNo">040</span> *<a name="line.40"></a>
<span class="sourceLineNo">041</span> * This filter adjusts &lt;tt&gt;idleTime&lt;/tt&gt; of the {@link IdleStatus}s that<a name="line.41"></a>
<span class="sourceLineNo">042</span> * this filter is interested in automatically (e.g. {@link IdleStatus#READER_IDLE}<a name="line.42"></a>
<span class="sourceLineNo">043</span> * and {@link IdleStatus#WRITER_IDLE}.)  Changing the &lt;tt&gt;idleTime&lt;/tt&gt;<a name="line.43"></a>
<span class="sourceLineNo">044</span> * of the {@link IdleStatus}s can lead this filter to a unexpected behavior.<a name="line.44"></a>
<span class="sourceLineNo">045</span> * Please also note that any {@link IoFilter} and {@link IoHandler} behind<a name="line.45"></a>
<span class="sourceLineNo">046</span> * {@link KeepAliveFilter} will not get any {@link IoEventType#SESSION_IDLE}<a name="line.46"></a>
<span class="sourceLineNo">047</span> * event.  To receive the internal {@link IoEventType#SESSION_IDLE} event,<a name="line.47"></a>
<span class="sourceLineNo">048</span> * you can call {@link #setForwardEvent(boolean)} with &lt;tt&gt;true&lt;/tt&gt;.<a name="line.48"></a>
<span class="sourceLineNo">049</span> *<a name="line.49"></a>
<span class="sourceLineNo">050</span> * &lt;h2&gt;Implementing {@link KeepAliveMessageFactory}&lt;/h2&gt;<a name="line.50"></a>
<span class="sourceLineNo">051</span> *<a name="line.51"></a>
<span class="sourceLineNo">052</span> * To use this filter, you have to provide an implementation of<a name="line.52"></a>
<span class="sourceLineNo">053</span> * {@link KeepAliveMessageFactory}, which determines a received or sent<a name="line.53"></a>
<span class="sourceLineNo">054</span> * message is a keep-alive message or not and creates a new keep-alive<a name="line.54"></a>
<span class="sourceLineNo">055</span> * message:<a name="line.55"></a>
<span class="sourceLineNo">056</span> *<a name="line.56"></a>
<span class="sourceLineNo">057</span> * &lt;table border="1"&gt;<a name="line.57"></a>
<span class="sourceLineNo">058</span> * &lt;tr&gt;<a name="line.58"></a>
<span class="sourceLineNo">059</span> * &lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Implementation&lt;/th&gt;<a name="line.59"></a>
<span class="sourceLineNo">060</span> * &lt;/tr&gt;<a name="line.60"></a>
<span class="sourceLineNo">061</span> * &lt;tr valign="top"&gt;<a name="line.61"></a>
<span class="sourceLineNo">062</span> * &lt;td&gt;Active&lt;/td&gt;<a name="line.62"></a>
<span class="sourceLineNo">063</span> * &lt;td&gt;You want a keep-alive request is sent when the reader is idle.<a name="line.63"></a>
<span class="sourceLineNo">064</span> * Once the request is sent, the response for the request should be<a name="line.64"></a>
<span class="sourceLineNo">065</span> * received within &lt;tt&gt;keepAliveRequestTimeout&lt;/tt&gt; seconds.  Otherwise,<a name="line.65"></a>
<span class="sourceLineNo">066</span> * the specified {@link KeepAliveRequestTimeoutHandler} will be invoked.<a name="line.66"></a>
<span class="sourceLineNo">067</span> * If a keep-alive request is received, its response also should be sent back.<a name="line.67"></a>
<span class="sourceLineNo">068</span> * &lt;/td&gt;<a name="line.68"></a>
<span class="sourceLineNo">069</span> * &lt;td&gt;Both {@link KeepAliveMessageFactory#getRequest(IoSession)} and<a name="line.69"></a>
<span class="sourceLineNo">070</span> * {@link KeepAliveMessageFactory#getResponse(IoSession, Object)} must<a name="line.70"></a>
<span class="sourceLineNo">071</span> * return a non-&lt;tt&gt;null&lt;/tt&gt;.&lt;/td&gt;<a name="line.71"></a>
<span class="sourceLineNo">072</span> * &lt;/tr&gt;<a name="line.72"></a>
<span class="sourceLineNo">073</span> * &lt;tr valign="top"&gt;<a name="line.73"></a>
<span class="sourceLineNo">074</span> * &lt;td&gt;Semi-active&lt;/td&gt;<a name="line.74"></a>
<span class="sourceLineNo">075</span> * &lt;td&gt;You want a keep-alive request to be sent when the reader is idle.<a name="line.75"></a>
<span class="sourceLineNo">076</span> * However, you don't really care if the response is received or not.<a name="line.76"></a>
<span class="sourceLineNo">077</span> * If a keep-alive request is received, its response should<a name="line.77"></a>
<span class="sourceLineNo">078</span> * also be sent back.<a name="line.78"></a>
<span class="sourceLineNo">079</span> * &lt;/td&gt;<a name="line.79"></a>
<span class="sourceLineNo">080</span> * &lt;td&gt;Both {@link KeepAliveMessageFactory#getRequest(IoSession)} and<a name="line.80"></a>
<span class="sourceLineNo">081</span> * {@link KeepAliveMessageFactory#getResponse(IoSession, Object)} must<a name="line.81"></a>
<span class="sourceLineNo">082</span> * return a non-&lt;tt&gt;null&lt;/tt&gt;, and the &lt;tt&gt;timeoutHandler&lt;/tt&gt; property<a name="line.82"></a>
<span class="sourceLineNo">083</span> * should be set to {@link KeepAliveRequestTimeoutHandler#NOOP},<a name="line.83"></a>
<span class="sourceLineNo">084</span> * {@link KeepAliveRequestTimeoutHandler#LOG} or the custom {@link KeepAliveRequestTimeoutHandler}<a name="line.84"></a>
<span class="sourceLineNo">085</span> * implementation that doesn't affect the session state nor throw an exception.<a name="line.85"></a>
<span class="sourceLineNo">086</span> * &lt;/td&gt;<a name="line.86"></a>
<span class="sourceLineNo">087</span> * &lt;/tr&gt;<a name="line.87"></a>
<span class="sourceLineNo">088</span> * &lt;tr valign="top"&gt;<a name="line.88"></a>
<span class="sourceLineNo">089</span> * &lt;td&gt;Passive&lt;/td&gt;<a name="line.89"></a>
<span class="sourceLineNo">090</span> * &lt;td&gt;You don't want to send a keep-alive request by yourself, but the<a name="line.90"></a>
<span class="sourceLineNo">091</span> * response should be sent back if a keep-alive request is received.&lt;/td&gt;<a name="line.91"></a>
<span class="sourceLineNo">092</span> * &lt;td&gt;{@link KeepAliveMessageFactory#getRequest(IoSession)} must return<a name="line.92"></a>
<span class="sourceLineNo">093</span> * &lt;tt&gt;null&lt;/tt&gt; and {@link KeepAliveMessageFactory#getResponse(IoSession, Object)}<a name="line.93"></a>
<span class="sourceLineNo">094</span> * must return a non-&lt;tt&gt;null&lt;/tt&gt;.&lt;/td&gt;<a name="line.94"></a>
<span class="sourceLineNo">095</span> * &lt;/tr&gt;<a name="line.95"></a>
<span class="sourceLineNo">096</span> * &lt;tr valign="top"&gt;<a name="line.96"></a>
<span class="sourceLineNo">097</span> * &lt;td&gt;Deaf Speaker&lt;/td&gt;<a name="line.97"></a>
<span class="sourceLineNo">098</span> * &lt;td&gt;You want a keep-alive request to be sent when the reader is idle, but<a name="line.98"></a>
<span class="sourceLineNo">099</span> * you don't want to send any response back.&lt;/td&gt;<a name="line.99"></a>
<span class="sourceLineNo">100</span> * &lt;td&gt;{@link KeepAliveMessageFactory#getRequest(IoSession)} must return<a name="line.100"></a>
<span class="sourceLineNo">101</span> * a non-&lt;tt&gt;null&lt;/tt&gt;,<a name="line.101"></a>
<span class="sourceLineNo">102</span> * {@link KeepAliveMessageFactory#getResponse(IoSession, Object)} must<a name="line.102"></a>
<span class="sourceLineNo">103</span> * return &lt;tt&gt;null&lt;/tt&gt; and the &lt;tt&gt;timeoutHandler&lt;/tt&gt; must be set to<a name="line.103"></a>
<span class="sourceLineNo">104</span> * {@link KeepAliveRequestTimeoutHandler#DEAF_SPEAKER}.&lt;/td&gt;<a name="line.104"></a>
<span class="sourceLineNo">105</span> * &lt;/tr&gt;<a name="line.105"></a>
<span class="sourceLineNo">106</span> * &lt;tr valign="top"&gt;<a name="line.106"></a>
<span class="sourceLineNo">107</span> * &lt;td&gt;Silent Listener&lt;/td&gt;<a name="line.107"></a>
<span class="sourceLineNo">108</span> * &lt;td&gt;You don't want to send a keep-alive request by yourself nor send any<a name="line.108"></a>
<span class="sourceLineNo">109</span> * response back.&lt;/td&gt;<a name="line.109"></a>
<span class="sourceLineNo">110</span> * &lt;td&gt;Both {@link KeepAliveMessageFactory#getRequest(IoSession)} and<a name="line.110"></a>
<span class="sourceLineNo">111</span> * {@link KeepAliveMessageFactory#getResponse(IoSession, Object)} must<a name="line.111"></a>
<span class="sourceLineNo">112</span> * return &lt;tt&gt;null&lt;/tt&gt;.&lt;/td&gt;<a name="line.112"></a>
<span class="sourceLineNo">113</span> * &lt;/tr&gt;<a name="line.113"></a>
<span class="sourceLineNo">114</span> * &lt;/table&gt;<a name="line.114"></a>
<span class="sourceLineNo">115</span> * Please note that you must implement<a name="line.115"></a>
<span class="sourceLineNo">116</span> * {@link KeepAliveMessageFactory#isRequest(IoSession, Object)} and<a name="line.116"></a>
<span class="sourceLineNo">117</span> * {@link KeepAliveMessageFactory#isResponse(IoSession, Object)} properly<a name="line.117"></a>
<span class="sourceLineNo">118</span> * whatever case you chose.<a name="line.118"></a>
<span class="sourceLineNo">119</span> *<a name="line.119"></a>
<span class="sourceLineNo">120</span> * &lt;h2&gt;Handling timeout&lt;/h2&gt;<a name="line.120"></a>
<span class="sourceLineNo">121</span> *<a name="line.121"></a>
<span class="sourceLineNo">122</span> * {@link KeepAliveFilter} will notify its {@link KeepAliveRequestTimeoutHandler}<a name="line.122"></a>
<span class="sourceLineNo">123</span> * when {@link KeepAliveFilter} didn't receive the response message for a sent<a name="line.123"></a>
<span class="sourceLineNo">124</span> * keep-alive message.  The default handler is {@link KeepAliveRequestTimeoutHandler#CLOSE},<a name="line.124"></a>
<span class="sourceLineNo">125</span> * but you can use other presets such as {@link KeepAliveRequestTimeoutHandler#NOOP},<a name="line.125"></a>
<span class="sourceLineNo">126</span> * {@link KeepAliveRequestTimeoutHandler#LOG} or {@link KeepAliveRequestTimeoutHandler#EXCEPTION}.<a name="line.126"></a>
<span class="sourceLineNo">127</span> * You can even implement your own handler.<a name="line.127"></a>
<span class="sourceLineNo">128</span> *<a name="line.128"></a>
<span class="sourceLineNo">129</span> * &lt;h3&gt;Special handler: {@link KeepAliveRequestTimeoutHandler#DEAF_SPEAKER}&lt;/h3&gt;<a name="line.129"></a>
<span class="sourceLineNo">130</span> *<a name="line.130"></a>
<span class="sourceLineNo">131</span> * {@link KeepAliveRequestTimeoutHandler#DEAF_SPEAKER} is a special handler which is<a name="line.131"></a>
<span class="sourceLineNo">132</span> * dedicated for the 'deaf speaker' mode mentioned above.  Setting the<a name="line.132"></a>
<span class="sourceLineNo">133</span> * &lt;tt&gt;timeoutHandler&lt;/tt&gt; property to {@link KeepAliveRequestTimeoutHandler#DEAF_SPEAKER}<a name="line.133"></a>
<span class="sourceLineNo">134</span> * stops this filter from waiting for response messages and therefore disables<a name="line.134"></a>
<span class="sourceLineNo">135</span> * response timeout detection.<a name="line.135"></a>
<span class="sourceLineNo">136</span> *<a name="line.136"></a>
<span class="sourceLineNo">137</span> * @author &lt;a href="http://mina.apache.org"&gt;Apache MINA Project&lt;/a&gt;<a name="line.137"></a>
<span class="sourceLineNo">138</span> * @org.apache.xbean.XBean<a name="line.138"></a>
<span class="sourceLineNo">139</span> */<a name="line.139"></a>
<span class="sourceLineNo">140</span>public class KeepAliveFilter extends IoFilterAdapter {<a name="line.140"></a>
<span class="sourceLineNo">141</span><a name="line.141"></a>
<span class="sourceLineNo">142</span>    private final AttributeKey WAITING_FOR_RESPONSE = new AttributeKey(getClass(), "waitingForResponse");<a name="line.142"></a>
<span class="sourceLineNo">143</span><a name="line.143"></a>
<span class="sourceLineNo">144</span>    private final AttributeKey IGNORE_READER_IDLE_ONCE = new AttributeKey(getClass(), "ignoreReaderIdleOnce");<a name="line.144"></a>
<span class="sourceLineNo">145</span><a name="line.145"></a>
<span class="sourceLineNo">146</span>    private final KeepAliveMessageFactory messageFactory;<a name="line.146"></a>
<span class="sourceLineNo">147</span><a name="line.147"></a>
<span class="sourceLineNo">148</span>    private final IdleStatus interestedIdleStatus;<a name="line.148"></a>
<span class="sourceLineNo">149</span><a name="line.149"></a>
<span class="sourceLineNo">150</span>    private volatile KeepAliveRequestTimeoutHandler requestTimeoutHandler;<a name="line.150"></a>
<span class="sourceLineNo">151</span><a name="line.151"></a>
<span class="sourceLineNo">152</span>    private volatile int requestInterval;<a name="line.152"></a>
<span class="sourceLineNo">153</span><a name="line.153"></a>
<span class="sourceLineNo">154</span>    private volatile int requestTimeout;<a name="line.154"></a>
<span class="sourceLineNo">155</span><a name="line.155"></a>
<span class="sourceLineNo">156</span>    private volatile boolean forwardEvent;<a name="line.156"></a>
<span class="sourceLineNo">157</span><a name="line.157"></a>
<span class="sourceLineNo">158</span>    /**<a name="line.158"></a>
<span class="sourceLineNo">159</span>     * Creates a new instance with the default properties.<a name="line.159"></a>
<span class="sourceLineNo">160</span>     * The default property values are:<a name="line.160"></a>
<span class="sourceLineNo">161</span>     * &lt;ul&gt;<a name="line.161"></a>
<span class="sourceLineNo">162</span>     * &lt;li&gt;&lt;tt&gt;interestedIdleStatus&lt;/tt&gt; - {@link IdleStatus#READER_IDLE}&lt;/li&gt;<a name="line.162"></a>
<span class="sourceLineNo">163</span>     * &lt;li&gt;&lt;tt&gt;policy&lt;/tt&gt; = {@link KeepAliveRequestTimeoutHandler#CLOSE}&lt;/li&gt;<a name="line.163"></a>
<span class="sourceLineNo">164</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestInterval&lt;/tt&gt; - 60 (seconds)&lt;/li&gt;<a name="line.164"></a>
<span class="sourceLineNo">165</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestTimeout&lt;/tt&gt; - 30 (seconds)&lt;/li&gt;<a name="line.165"></a>
<span class="sourceLineNo">166</span>     * &lt;/ul&gt;<a name="line.166"></a>
<span class="sourceLineNo">167</span>     */<a name="line.167"></a>
<span class="sourceLineNo">168</span>    public KeepAliveFilter(KeepAliveMessageFactory messageFactory) {<a name="line.168"></a>
<span class="sourceLineNo">169</span>        this(messageFactory, IdleStatus.READER_IDLE, KeepAliveRequestTimeoutHandler.CLOSE);<a name="line.169"></a>
<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
<span class="sourceLineNo">171</span><a name="line.171"></a>
<span class="sourceLineNo">172</span>    /**<a name="line.172"></a>
<span class="sourceLineNo">173</span>     * Creates a new instance with the default properties.<a name="line.173"></a>
<span class="sourceLineNo">174</span>     * The default property values are:<a name="line.174"></a>
<span class="sourceLineNo">175</span>     * &lt;ul&gt;<a name="line.175"></a>
<span class="sourceLineNo">176</span>     * &lt;li&gt;&lt;tt&gt;policy&lt;/tt&gt; = {@link KeepAliveRequestTimeoutHandler#CLOSE}&lt;/li&gt;<a name="line.176"></a>
<span class="sourceLineNo">177</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestInterval&lt;/tt&gt; - 60 (seconds)&lt;/li&gt;<a name="line.177"></a>
<span class="sourceLineNo">178</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestTimeout&lt;/tt&gt; - 30 (seconds)&lt;/li&gt;<a name="line.178"></a>
<span class="sourceLineNo">179</span>     * &lt;/ul&gt;<a name="line.179"></a>
<span class="sourceLineNo">180</span>     */<a name="line.180"></a>
<span class="sourceLineNo">181</span>    public KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus) {<a name="line.181"></a>
<span class="sourceLineNo">182</span>        this(messageFactory, interestedIdleStatus, KeepAliveRequestTimeoutHandler.CLOSE, 60, 30);<a name="line.182"></a>
<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
<span class="sourceLineNo">184</span><a name="line.184"></a>
<span class="sourceLineNo">185</span>    /**<a name="line.185"></a>
<span class="sourceLineNo">186</span>     * Creates a new instance with the default properties.<a name="line.186"></a>
<span class="sourceLineNo">187</span>     * The default property values are:<a name="line.187"></a>
<span class="sourceLineNo">188</span>     * &lt;ul&gt;<a name="line.188"></a>
<span class="sourceLineNo">189</span>     * &lt;li&gt;&lt;tt&gt;interestedIdleStatus&lt;/tt&gt; - {@link IdleStatus#READER_IDLE}&lt;/li&gt;<a name="line.189"></a>
<span class="sourceLineNo">190</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestInterval&lt;/tt&gt; - 60 (seconds)&lt;/li&gt;<a name="line.190"></a>
<span class="sourceLineNo">191</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestTimeout&lt;/tt&gt; - 30 (seconds)&lt;/li&gt;<a name="line.191"></a>
<span class="sourceLineNo">192</span>     * &lt;/ul&gt;<a name="line.192"></a>
<span class="sourceLineNo">193</span>     */<a name="line.193"></a>
<span class="sourceLineNo">194</span>    public KeepAliveFilter(KeepAliveMessageFactory messageFactory, KeepAliveRequestTimeoutHandler policy) {<a name="line.194"></a>
<span class="sourceLineNo">195</span>        this(messageFactory, IdleStatus.READER_IDLE, policy, 60, 30);<a name="line.195"></a>
<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
<span class="sourceLineNo">197</span><a name="line.197"></a>
<span class="sourceLineNo">198</span>    /**<a name="line.198"></a>
<span class="sourceLineNo">199</span>     * Creates a new instance with the default properties.<a name="line.199"></a>
<span class="sourceLineNo">200</span>     * The default property values are:<a name="line.200"></a>
<span class="sourceLineNo">201</span>     * &lt;ul&gt;<a name="line.201"></a>
<span class="sourceLineNo">202</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestInterval&lt;/tt&gt; - 60 (seconds)&lt;/li&gt;<a name="line.202"></a>
<span class="sourceLineNo">203</span>     * &lt;li&gt;&lt;tt&gt;keepAliveRequestTimeout&lt;/tt&gt; - 30 (seconds)&lt;/li&gt;<a name="line.203"></a>
<span class="sourceLineNo">204</span>     * &lt;/ul&gt;<a name="line.204"></a>
<span class="sourceLineNo">205</span>     */<a name="line.205"></a>
<span class="sourceLineNo">206</span>    public KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus,<a name="line.206"></a>
<span class="sourceLineNo">207</span>            KeepAliveRequestTimeoutHandler policy) {<a name="line.207"></a>
<span class="sourceLineNo">208</span>        this(messageFactory, interestedIdleStatus, policy, 60, 30);<a name="line.208"></a>
<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
<span class="sourceLineNo">210</span><a name="line.210"></a>
<span class="sourceLineNo">211</span>    /**<a name="line.211"></a>
<span class="sourceLineNo">212</span>     * Creates a new instance.<a name="line.212"></a>
<span class="sourceLineNo">213</span>     */<a name="line.213"></a>
<span class="sourceLineNo">214</span>    public KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus,<a name="line.214"></a>
<span class="sourceLineNo">215</span>            KeepAliveRequestTimeoutHandler policy, int keepAliveRequestInterval, int keepAliveRequestTimeout) {<a name="line.215"></a>
<span class="sourceLineNo">216</span>        if (messageFactory == null) {<a name="line.216"></a>
<span class="sourceLineNo">217</span>            throw new IllegalArgumentException("messageFactory");<a name="line.217"></a>
<span class="sourceLineNo">218</span>        }<a name="line.218"></a>
<span class="sourceLineNo">219</span>        if (interestedIdleStatus == null) {<a name="line.219"></a>
<span class="sourceLineNo">220</span>            throw new IllegalArgumentException("interestedIdleStatus");<a name="line.220"></a>
<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
<span class="sourceLineNo">222</span>        if (policy == null) {<a name="line.222"></a>
<span class="sourceLineNo">223</span>            throw new IllegalArgumentException("policy");<a name="line.223"></a>
<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
<span class="sourceLineNo">225</span><a name="line.225"></a>
<span class="sourceLineNo">226</span>        this.messageFactory = messageFactory;<a name="line.226"></a>
<span class="sourceLineNo">227</span>        this.interestedIdleStatus = interestedIdleStatus;<a name="line.227"></a>
<span class="sourceLineNo">228</span>        requestTimeoutHandler = policy;<a name="line.228"></a>
<span class="sourceLineNo">229</span><a name="line.229"></a>
<span class="sourceLineNo">230</span>        setRequestInterval(keepAliveRequestInterval);<a name="line.230"></a>
<span class="sourceLineNo">231</span>        setRequestTimeout(keepAliveRequestTimeout);<a name="line.231"></a>
<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
<span class="sourceLineNo">233</span><a name="line.233"></a>
<span class="sourceLineNo">234</span>    public IdleStatus getInterestedIdleStatus() {<a name="line.234"></a>
<span class="sourceLineNo">235</span>        return interestedIdleStatus;<a name="line.235"></a>
<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
<span class="sourceLineNo">237</span><a name="line.237"></a>
<span class="sourceLineNo">238</span>    public KeepAliveRequestTimeoutHandler getRequestTimeoutHandler() {<a name="line.238"></a>
<span class="sourceLineNo">239</span>        return requestTimeoutHandler;<a name="line.239"></a>
<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
<span class="sourceLineNo">241</span><a name="line.241"></a>
<span class="sourceLineNo">242</span>    public void setRequestTimeoutHandler(KeepAliveRequestTimeoutHandler timeoutHandler) {<a name="line.242"></a>
<span class="sourceLineNo">243</span>        if (timeoutHandler == null) {<a name="line.243"></a>
<span class="sourceLineNo">244</span>            throw new IllegalArgumentException("timeoutHandler");<a name="line.244"></a>
<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
<span class="sourceLineNo">246</span>        requestTimeoutHandler = timeoutHandler;<a name="line.246"></a>
<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
<span class="sourceLineNo">248</span><a name="line.248"></a>
<span class="sourceLineNo">249</span>    public int getRequestInterval() {<a name="line.249"></a>
<span class="sourceLineNo">250</span>        return requestInterval;<a name="line.250"></a>
<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
<span class="sourceLineNo">252</span><a name="line.252"></a>
<span class="sourceLineNo">253</span>    public void setRequestInterval(int keepAliveRequestInterval) {<a name="line.253"></a>
<span class="sourceLineNo">254</span>        if (keepAliveRequestInterval &lt;= 0) {<a name="line.254"></a>
<span class="sourceLineNo">255</span>            throw new IllegalArgumentException("keepAliveRequestInterval must be a positive integer: "<a name="line.255"></a>
<span class="sourceLineNo">256</span>                    + keepAliveRequestInterval);<a name="line.256"></a>
<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
<span class="sourceLineNo">258</span>        requestInterval = keepAliveRequestInterval;<a name="line.258"></a>
<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
<span class="sourceLineNo">260</span><a name="line.260"></a>
<span class="sourceLineNo">261</span>    public int getRequestTimeout() {<a name="line.261"></a>
<span class="sourceLineNo">262</span>        return requestTimeout;<a name="line.262"></a>
<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
<span class="sourceLineNo">264</span><a name="line.264"></a>
<span class="sourceLineNo">265</span>    public void setRequestTimeout(int keepAliveRequestTimeout) {<a name="line.265"></a>
<span class="sourceLineNo">266</span>        if (keepAliveRequestTimeout &lt;= 0) {<a name="line.266"></a>
<span class="sourceLineNo">267</span>            throw new IllegalArgumentException("keepAliveRequestTimeout must be a positive integer: "<a name="line.267"></a>
<span class="sourceLineNo">268</span>                    + keepAliveRequestTimeout);<a name="line.268"></a>
<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
<span class="sourceLineNo">270</span>        requestTimeout = keepAliveRequestTimeout;<a name="line.270"></a>
<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
<span class="sourceLineNo">272</span><a name="line.272"></a>
<span class="sourceLineNo">273</span>    public KeepAliveMessageFactory getMessageFactory() {<a name="line.273"></a>
<span class="sourceLineNo">274</span>        return messageFactory;<a name="line.274"></a>
<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
<span class="sourceLineNo">276</span><a name="line.276"></a>
<span class="sourceLineNo">277</span>    /**<a name="line.277"></a>
<span class="sourceLineNo">278</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if and only if this filter forwards<a name="line.278"></a>
<span class="sourceLineNo">279</span>     * a {@link IoEventType#SESSION_IDLE} event to the next filter.<a name="line.279"></a>
<span class="sourceLineNo">280</span>     * By default, the value of this property is &lt;tt&gt;false&lt;/tt&gt;.<a name="line.280"></a>
<span class="sourceLineNo">281</span>     */<a name="line.281"></a>
<span class="sourceLineNo">282</span>    public boolean isForwardEvent() {<a name="line.282"></a>
<span class="sourceLineNo">283</span>        return forwardEvent;<a name="line.283"></a>
<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
<span class="sourceLineNo">285</span><a name="line.285"></a>
<span class="sourceLineNo">286</span>    /**<a name="line.286"></a>
<span class="sourceLineNo">287</span>     * Sets if this filter needs to forward a<a name="line.287"></a>
<span class="sourceLineNo">288</span>     * {@link IoEventType#SESSION_IDLE} event to the next filter.<a name="line.288"></a>
<span class="sourceLineNo">289</span>     * By default, the value of this property is &lt;tt&gt;false&lt;/tt&gt;.<a name="line.289"></a>
<span class="sourceLineNo">290</span>     */<a name="line.290"></a>
<span class="sourceLineNo">291</span>    public void setForwardEvent(boolean forwardEvent) {<a name="line.291"></a>
<span class="sourceLineNo">292</span>        this.forwardEvent = forwardEvent;<a name="line.292"></a>
<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
<span class="sourceLineNo">294</span><a name="line.294"></a>
<span class="sourceLineNo">295</span>    @Override<a name="line.295"></a>
<span class="sourceLineNo">296</span>    public void onPreAdd(IoFilterChain parent, String name, NextFilter nextFilter) throws Exception {<a name="line.296"></a>
<span class="sourceLineNo">297</span>        if (parent.contains(this)) {<a name="line.297"></a>
<span class="sourceLineNo">298</span>            throw new IllegalArgumentException("You can't add the same filter instance more than once. "<a name="line.298"></a>
<span class="sourceLineNo">299</span>                    + "Create another instance and add it.");<a name="line.299"></a>
<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
<span class="sourceLineNo">302</span><a name="line.302"></a>
<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
<span class="sourceLineNo">304</span>    public void onPostAdd(IoFilterChain parent, String name, NextFilter nextFilter) throws Exception {<a name="line.304"></a>
<span class="sourceLineNo">305</span>        resetStatus(parent.getSession());<a name="line.305"></a>
<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
<span class="sourceLineNo">307</span><a name="line.307"></a>
<span class="sourceLineNo">308</span>    @Override<a name="line.308"></a>
<span class="sourceLineNo">309</span>    public void onPostRemove(IoFilterChain parent, String name, NextFilter nextFilter) throws Exception {<a name="line.309"></a>
<span class="sourceLineNo">310</span>        resetStatus(parent.getSession());<a name="line.310"></a>
<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
<span class="sourceLineNo">312</span><a name="line.312"></a>
<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
<span class="sourceLineNo">314</span>    public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {<a name="line.314"></a>
<span class="sourceLineNo">315</span>        try {<a name="line.315"></a>
<span class="sourceLineNo">316</span>            if (messageFactory.isRequest(session, message)) {<a name="line.316"></a>
<span class="sourceLineNo">317</span>                Object pongMessage = messageFactory.getResponse(session, message);<a name="line.317"></a>
<span class="sourceLineNo">318</span><a name="line.318"></a>
<span class="sourceLineNo">319</span>                if (pongMessage != null) {<a name="line.319"></a>
<span class="sourceLineNo">320</span>                    nextFilter.filterWrite(session, new DefaultWriteRequest(pongMessage));<a name="line.320"></a>
<span class="sourceLineNo">321</span>                }<a name="line.321"></a>
<span class="sourceLineNo">322</span>            }<a name="line.322"></a>
<span class="sourceLineNo">323</span><a name="line.323"></a>
<span class="sourceLineNo">324</span>            if (messageFactory.isResponse(session, message)) {<a name="line.324"></a>
<span class="sourceLineNo">325</span>                resetStatus(session);<a name="line.325"></a>
<span class="sourceLineNo">326</span>            }<a name="line.326"></a>
<span class="sourceLineNo">327</span>        } finally {<a name="line.327"></a>
<span class="sourceLineNo">328</span>            if (!isKeepAliveMessage(session, message)) {<a name="line.328"></a>
<span class="sourceLineNo">329</span>                nextFilter.messageReceived(session, message);<a name="line.329"></a>
<span class="sourceLineNo">330</span>            }<a name="line.330"></a>
<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
<span class="sourceLineNo">333</span><a name="line.333"></a>
<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
<span class="sourceLineNo">335</span>    public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {<a name="line.335"></a>
<span class="sourceLineNo">336</span>        Object message = writeRequest.getMessage();<a name="line.336"></a>
<span class="sourceLineNo">337</span>        if (!isKeepAliveMessage(session, message)) {<a name="line.337"></a>
<span class="sourceLineNo">338</span>            nextFilter.messageSent(session, writeRequest);<a name="line.338"></a>
<span class="sourceLineNo">339</span>        }<a name="line.339"></a>
<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
<span class="sourceLineNo">341</span><a name="line.341"></a>
<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
<span class="sourceLineNo">343</span>    public void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception {<a name="line.343"></a>
<span class="sourceLineNo">344</span>        if (status == interestedIdleStatus) {<a name="line.344"></a>
<span class="sourceLineNo">345</span>            if (!session.containsAttribute(WAITING_FOR_RESPONSE)) {<a name="line.345"></a>
<span class="sourceLineNo">346</span>                Object pingMessage = messageFactory.getRequest(session);<a name="line.346"></a>
<span class="sourceLineNo">347</span>                if (pingMessage != null) {<a name="line.347"></a>
<span class="sourceLineNo">348</span>                    nextFilter.filterWrite(session, new DefaultWriteRequest(pingMessage));<a name="line.348"></a>
<span class="sourceLineNo">349</span><a name="line.349"></a>
<span class="sourceLineNo">350</span>                    // If policy is OFF, there's no need to wait for<a name="line.350"></a>
<span class="sourceLineNo">351</span>                    // the response.<a name="line.351"></a>
<span class="sourceLineNo">352</span>                    if (getRequestTimeoutHandler() != KeepAliveRequestTimeoutHandler.DEAF_SPEAKER) {<a name="line.352"></a>
<span class="sourceLineNo">353</span>                        markStatus(session);<a name="line.353"></a>
<span class="sourceLineNo">354</span>                        if (interestedIdleStatus == IdleStatus.BOTH_IDLE) {<a name="line.354"></a>
<span class="sourceLineNo">355</span>                            session.setAttribute(IGNORE_READER_IDLE_ONCE);<a name="line.355"></a>
<span class="sourceLineNo">356</span>                        }<a name="line.356"></a>
<span class="sourceLineNo">357</span>                    } else {<a name="line.357"></a>
<span class="sourceLineNo">358</span>                        resetStatus(session);<a name="line.358"></a>
<span class="sourceLineNo">359</span>                    }<a name="line.359"></a>
<span class="sourceLineNo">360</span>                }<a name="line.360"></a>
<span class="sourceLineNo">361</span>            } else {<a name="line.361"></a>
<span class="sourceLineNo">362</span>                handlePingTimeout(session);<a name="line.362"></a>
<span class="sourceLineNo">363</span>            }<a name="line.363"></a>
<span class="sourceLineNo">364</span>        } else if (status == IdleStatus.READER_IDLE) {<a name="line.364"></a>
<span class="sourceLineNo">365</span>            if (session.removeAttribute(IGNORE_READER_IDLE_ONCE) == null) {<a name="line.365"></a>
<span class="sourceLineNo">366</span>                if (session.containsAttribute(WAITING_FOR_RESPONSE)) {<a name="line.366"></a>
<span class="sourceLineNo">367</span>                    handlePingTimeout(session);<a name="line.367"></a>
<span class="sourceLineNo">368</span>                }<a name="line.368"></a>
<span class="sourceLineNo">369</span>            }<a name="line.369"></a>
<span class="sourceLineNo">370</span>        }<a name="line.370"></a>
<span class="sourceLineNo">371</span><a name="line.371"></a>
<span class="sourceLineNo">372</span>        if (forwardEvent) {<a name="line.372"></a>
<span class="sourceLineNo">373</span>            nextFilter.sessionIdle(session, status);<a name="line.373"></a>
<span class="sourceLineNo">374</span>        }<a name="line.374"></a>
<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
<span class="sourceLineNo">376</span><a name="line.376"></a>
<span class="sourceLineNo">377</span>    private void handlePingTimeout(IoSession session) throws Exception {<a name="line.377"></a>
<span class="sourceLineNo">378</span>        resetStatus(session);<a name="line.378"></a>
<span class="sourceLineNo">379</span>        KeepAliveRequestTimeoutHandler handler = getRequestTimeoutHandler();<a name="line.379"></a>
<span class="sourceLineNo">380</span>        if (handler == KeepAliveRequestTimeoutHandler.DEAF_SPEAKER) {<a name="line.380"></a>
<span class="sourceLineNo">381</span>            return;<a name="line.381"></a>
<span class="sourceLineNo">382</span>        }<a name="line.382"></a>
<span class="sourceLineNo">383</span><a name="line.383"></a>
<span class="sourceLineNo">384</span>        handler.keepAliveRequestTimedOut(this, session);<a name="line.384"></a>
<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
<span class="sourceLineNo">386</span><a name="line.386"></a>
<span class="sourceLineNo">387</span>    private void markStatus(IoSession session) {<a name="line.387"></a>
<span class="sourceLineNo">388</span>        session.getConfig().setIdleTime(interestedIdleStatus, 0);<a name="line.388"></a>
<span class="sourceLineNo">389</span>        session.getConfig().setReaderIdleTime(getRequestTimeout());<a name="line.389"></a>
<span class="sourceLineNo">390</span>        session.setAttribute(WAITING_FOR_RESPONSE);<a name="line.390"></a>
<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
<span class="sourceLineNo">392</span><a name="line.392"></a>
<span class="sourceLineNo">393</span>    private void resetStatus(IoSession session) {<a name="line.393"></a>
<span class="sourceLineNo">394</span>        session.getConfig().setReaderIdleTime(0);<a name="line.394"></a>
<span class="sourceLineNo">395</span>        session.getConfig().setWriterIdleTime(0);<a name="line.395"></a>
<span class="sourceLineNo">396</span>        session.getConfig().setIdleTime(interestedIdleStatus, getRequestInterval());<a name="line.396"></a>
<span class="sourceLineNo">397</span>        session.removeAttribute(WAITING_FOR_RESPONSE);<a name="line.397"></a>
<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
<span class="sourceLineNo">399</span><a name="line.399"></a>
<span class="sourceLineNo">400</span>    private boolean isKeepAliveMessage(IoSession session, Object message) {<a name="line.400"></a>
<span class="sourceLineNo">401</span>        return messageFactory.isRequest(session, message) || messageFactory.isResponse(session, message);<a name="line.401"></a>
<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
<span class="sourceLineNo">403</span>}<a name="line.403"></a>




























































</pre>
</div>
</body>
</html>
