Example usage for io.netty.handler.codec.rtsp RtspDecoder RtspDecoder

List of usage examples for io.netty.handler.codec.rtsp RtspDecoder RtspDecoder

Introduction

In this page you can find the example usage for io.netty.handler.codec.rtsp RtspDecoder RtspDecoder.

Prototype

public RtspDecoder() 

Source Link

Document

Creates a new instance with the default maxInitialLineLength (4096) , maxHeaderSize (8192) , and maxContentLength (8192) .

Usage

From source file:sas.systems.imflux.session.rtsp.SimpleRtspSession.java

License:Apache License

/**
 * {@inheritDoc}/*  w w w  .java  2s .  c om*/
 */
@Override
public synchronized boolean init() {
    if (this.running.get()) {
        return true;
    }

    // create bootstrap
    Class<? extends ServerChannel> channelType;
    if (useNio) {
        this.workerGroup = new NioEventLoopGroup();
        this.bossGroup = new NioEventLoopGroup();
        channelType = NioServerSocketChannel.class;
    } else {
        this.workerGroup = new OioEventLoopGroup();
        this.bossGroup = new OioEventLoopGroup();
        channelType = OioServerSocketChannel.class;
    }

    bootstrap = new ServerBootstrap();
    bootstrap.group(this.bossGroup, this.workerGroup).option(ChannelOption.SO_SNDBUF, this.sendBufferSize)
            .option(ChannelOption.SO_RCVBUF, this.receiveBufferSize).channel(channelType)
            .handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializer<Channel>() { // is used to initialize the ChannelPipeline
                @Override
                protected void initChannel(Channel ch) throws Exception {
                    ChannelPipeline pipeline = ch.pipeline();
                    pipeline.addLast("encoder", new RtspEncoder());
                    pipeline.addLast("decoder", new RtspDecoder());
                    pipeline.addLast("aggregator", new HttpObjectAggregator(64 * 1024));
                    pipeline.addLast("handler", new RtspHandler(SimpleRtspSession.this));
                }
            });
    // create channel
    try {
        ChannelFuture future = bootstrap.bind(this.localAddress);
        this.channel = future.sync().channel(); // wait for future to complete and retrieve channel

    } catch (Exception e) {
        LOG.error("Failed to bind RTSP channel for session with id " + this.id, e);
        this.workerGroup.shutdownGracefully();
        this.bossGroup.shutdownGracefully();

        this.workerGroup.terminationFuture().syncUninterruptibly();
        this.bossGroup.terminationFuture().syncUninterruptibly();
        return false;
    }
    LOG.debug("RTSP channel bound for RtspSession with id {}.", this.id);
    this.running.set(true);
    return true;
}

From source file:sas.systems.imflux.session.rtsp.SimpleRtspSession.java

License:Apache License

/**
 * {@inheritDoc}//  w  w w . j ava  2  s  . c  o m
 */
@Override
public boolean sendRequest(HttpRequest request, SocketAddress remoteAddress) {
    if (!this.running.get()) {
        return false;
    }

    // create channel and connect it to the given remote
    final Channel ch = new NioSocketChannel();
    final ChannelPipeline pipe = ch.pipeline();
    pipe.addLast("encoder", new RtspEncoder());
    pipe.addLast("decoder", new RtspDecoder());
    pipe.addLast("aggregator", new HttpObjectAggregator(64 * 1024));
    pipe.addLast("handler", new RtspHandler(SimpleRtspSession.this));
    this.workerGroup.register(ch);

    ch.connect(remoteAddress).syncUninterruptibly();

    return internalSend(request, ch);
}