~massive-dynamics-staff/aurora-runescape-server-emulator/trunk

« back to all changes in this revision

Viewing changes to Aurora/src/main/java/biz/massivedynamics/aurora/runescape/network/netty/factories/JagGrabPipelineFactory.java

  • Committer: Cruz Bishop
  • Date: 2012-02-15 11:36:10 UTC
  • Revision ID: cruzjbishop@gmail.com-20120215113610-9ot75b74ffkdunvy
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * The MIT License
 
3
 *
 
4
 * Copyright 2012 Massive Dynamics.
 
5
 *
 
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:
 
12
 *
 
13
 * The above copyright notice and this permission notice shall be included in
 
14
 * all copies or substantial portions of the Software.
 
15
 *
 
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
 
22
 * THE SOFTWARE.
 
23
 */
 
24
package biz.massivedynamics.aurora.runescape.network.netty.factories;
 
25
 
 
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;
 
37
 
 
38
/**
 
39
 * A pipeline factory for JagGrab requests
 
40
 *
 
41
 * @author Cruz Bishop
 
42
 * @author Graham Edgecombe
 
43
 * @version 0.1.0.0
 
44
 */
 
45
public class JagGrabPipelineFactory implements ChannelPipelineFactory {
 
46
    
 
47
    /**
 
48
     * A buffer with two line feed (LF) characters in it.
 
49
     * 
 
50
     * @author Graham Edgecombe
 
51
     * @since 0.1.0.0
 
52
     */
 
53
    private static final ChannelBuffer DOUBLE_LINE_FEED_DELIMITER = ChannelBuffers.buffer(2);
 
54
 
 
55
    /**
 
56
     * Populates the double line feed buffer.
 
57
     * 
 
58
     * @author Graham Edgecombe
 
59
     * @since 0.1.0.0
 
60
     */
 
61
    static {
 
62
        DOUBLE_LINE_FEED_DELIMITER.writeByte(10);
 
63
        DOUBLE_LINE_FEED_DELIMITER.writeByte(10);
 
64
    }
 
65
 
 
66
    /**
 
67
     * Gets the channel pipeline
 
68
     * 
 
69
     * @return The channel pipeline
 
70
     * @throws Exception Any exceptions that are thrown
 
71
     * @since 0.1.0.0
 
72
     */
 
73
    public ChannelPipeline getPipeline() throws Exception {
 
74
        //Set up a new channel pipeline
 
75
        ChannelPipeline pipeline = Channels.pipeline();
 
76
        
 
77
        //Set up a framer
 
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());
 
83
        
 
84
        //Add a jaggrab request encoder
 
85
        pipeline.addLast("jaggrab-encoder", new JagGrabResponseEncoder());
 
86
        
 
87
        //Finally, add the handler
 
88
        pipeline.addLast("handler", new UpdateServerHandler());
 
89
        
 
90
        //And return
 
91
        return pipeline;
 
92
    }
 
93
    
 
94
}