All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jetty.websocket.WebSocketBuffers Maven / Gradle / Ivy

There is a newer version: 11.0.0.beta1
Show newest version
// ========================================================================
// Copyright (c) 2010 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
// The Eclipse Public License is available at 
// http://www.eclipse.org/legal/epl-v10.html
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
// You may elect to redistribute this code under either of these licenses. 
// ========================================================================

package org.eclipse.jetty.websocket;

import org.eclipse.jetty.io.Buffer;
import org.eclipse.jetty.io.ThreadLocalBuffers;
import org.eclipse.jetty.io.nio.DirectNIOBuffer;
import org.eclipse.jetty.io.nio.IndirectNIOBuffer;


/* ------------------------------------------------------------ */
/** The WebSocket Buffer Pool.
 * 
 * The normal buffers are byte array buffers so that user processes
 * can access directly.   However the generator uses direct buffers
 * for the final output stage as they are filled in bulk and are more
 * effecient to flush.
 */
public class WebSocketBuffers
{
    final private int _bufferSize;
    final private ThreadLocalBuffers _buffers;
    
    public WebSocketBuffers(final int bufferSize)
    {
        _bufferSize=bufferSize;
        _buffers = new ThreadLocalBuffers()
        {
            @Override
            protected Buffer newHeader(int size)
            {
                return new DirectNIOBuffer(bufferSize);
            }
            
            @Override
            protected Buffer newBuffer(int size)
            {
                return new IndirectNIOBuffer(bufferSize);
            }
            
            @Override
            protected boolean isHeader(Buffer buffer)
            {
                return buffer instanceof DirectNIOBuffer;
            }
        };    
    }
    
    public Buffer getBuffer()
    {
        return _buffers.getBuffer();
    }
    
    public Buffer getDirectBuffer()
    {
        return _buffers.getHeader();
    }
    
    public void returnBuffer(Buffer buffer)
    {
        _buffers.returnBuffer(buffer);
    }

    public int getBufferSize()
    {
        return _bufferSize;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy