4
* Copyright 2012 Massive Dynamics.
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
package biz.massivedynamics.aurora.runescape.network.netty.factories;
26
import biz.massivedynamics.aurora.runescape.network.netty.handlers.UpdateServerHandler;
27
import biz.massivedynamics.aurora.runescape.network.netty.updateserver.jaggrab.JagGrabRequestDecoder;
28
import biz.massivedynamics.aurora.runescape.network.netty.updateserver.jaggrab.JagGrabResponseEncoder;
29
import java.nio.charset.Charset;
30
import org.jboss.netty.buffer.ChannelBuffer;
31
import org.jboss.netty.buffer.ChannelBuffers;
32
import org.jboss.netty.channel.ChannelPipeline;
33
import org.jboss.netty.channel.ChannelPipelineFactory;
34
import org.jboss.netty.channel.Channels;
35
import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
36
import org.jboss.netty.handler.codec.string.StringDecoder;
39
* A pipeline factory for JagGrab requests
42
* @author Graham Edgecombe
45
public class JagGrabPipelineFactory implements ChannelPipelineFactory {
48
* A buffer with two line feed (LF) characters in it.
50
* @author Graham Edgecombe
53
private static final ChannelBuffer DOUBLE_LINE_FEED_DELIMITER = ChannelBuffers.buffer(2);
56
* Populates the double line feed buffer.
58
* @author Graham Edgecombe
62
DOUBLE_LINE_FEED_DELIMITER.writeByte(10);
63
DOUBLE_LINE_FEED_DELIMITER.writeByte(10);
67
* Gets the channel pipeline
69
* @return The channel pipeline
70
* @throws Exception Any exceptions that are thrown
73
public ChannelPipeline getPipeline() throws Exception {
74
//Set up a new channel pipeline
75
ChannelPipeline pipeline = Channels.pipeline();
78
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, DOUBLE_LINE_FEED_DELIMITER));
79
//And a string decoder
80
pipeline.addLast("string-decoder", new StringDecoder(Charset.forName("US-ASCII")));
81
//And a jaggrab request decoder
82
pipeline.addLast("jaggrab-decoder", new JagGrabRequestDecoder());
84
//Add a jaggrab request encoder
85
pipeline.addLast("jaggrab-encoder", new JagGrabResponseEncoder());
87
//Finally, add the handler
88
pipeline.addLast("handler", new UpdateServerHandler());