1 /*******************************************************************************
2 * Copyright (c) 2011 Intalio, Inc.
3 * ======================================================================
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * and Apache License v2.0 which accompanies this distribution.
7 *
8 * The Eclipse Public License is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * The Apache License v2.0 is available at
12 * http://www.opensource.org/licenses/apache2.0.php
13 *
14 * You may elect to redistribute this code under either of these licenses.
15 *******************************************************************************/
16 // ========================================================================
17 // Copyright (c) 2010 Mort Bay Consulting Pty. Ltd.
18 // ------------------------------------------------------------------------
19 // All rights reserved. This program and the accompanying materials
20 // are made available under the terms of the Eclipse Public License v1.0
21 // and Apache License v2.0 which accompanies this distribution.
22 // The Eclipse Public License is available at
23 // http://www.eclipse.org/legal/epl-v10.html
24 // The Apache License v2.0 is available at
25 // http://www.opensource.org/licenses/apache2.0.php
26 // You may elect to redistribute this code under either of these licenses.
27 // ========================================================================
28
29 package org.eclipse.jetty.websocket;
30
31 import org.eclipse.jetty.io.Buffer;
32 import org.eclipse.jetty.io.Buffers;
33 import org.eclipse.jetty.io.Buffers.Type;
34 import org.eclipse.jetty.io.BuffersFactory;
35
36
37 /* ------------------------------------------------------------ */
38 /** The WebSocket Buffer Pool.
39 *
40 * The normal buffers are byte array buffers so that user processes
41 * can access directly. However the generator uses direct buffers
42 * for the final output stage as they are filled in bulk and are more
43 * efficient to flush.
44 */
45 public class WebSocketBuffers
46 {
47 final private int _bufferSize;
48 final private Buffers _buffers;
49
50 public WebSocketBuffers(final int bufferSize)
51 {
52 _bufferSize=bufferSize;
53 _buffers = BuffersFactory.newBuffers(Type.DIRECT,bufferSize,Type.INDIRECT,bufferSize,Type.INDIRECT,-1);
54 }
55
56 public Buffer getBuffer()
57 {
58 return _buffers.getBuffer();
59 }
60
61 public Buffer getDirectBuffer()
62 {
63 return _buffers.getHeader();
64 }
65
66 public void returnBuffer(Buffer buffer)
67 {
68 _buffers.returnBuffer(buffer);
69 }
70
71 public int getBufferSize()
72 {
73 return _bufferSize;
74 }
75 }