View Javadoc

    1   /*
    2    * Copyright 2012 The Netty Project
    3    *
    4    * The Netty Project licenses this file to you under the Apache License,
    5    * version 2.0 (the "License"); you may not use this file except in compliance
    6    * with the License. You may obtain a copy of the License at:
    7    *
    8    *   http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    13   * License for the specific language governing permissions and limitations
    14   * under the License.
    15   */
    16  package org.jboss.netty.handler.codec.marshalling;
    17
    18  import java.io.IOException;
    19
    20  import org.jboss.marshalling.ByteOutput;
    21  import org.jboss.netty.buffer.ChannelBuffer;
    22  import org.jboss.netty.buffer.ChannelBufferFactory;
    23  import org.jboss.netty.buffer.ChannelBuffers;
    24
    25  /**
    26   * {@link ByteOutput} implementation which writes the data to a {@link ChannelBuffer}
    27   *
    28   *
    29   */
    30  class ChannelBufferByteOutput implements ByteOutput {
    31
    32      private final ChannelBuffer buffer;
    33
    34
    35      /**
    36       * Create a new instance which use the given {@link ChannelBuffer}
    37       */
    38      public ChannelBufferByteOutput(ChannelBuffer buffer) {
    39          this.buffer = buffer;
    40      }
    41
    42      /**
    43       * Calls {@link #ChannelBufferByteOutput(ChannelBuffer)} with a dynamic {@link ChannelBuffer}
    44       */
    45      public ChannelBufferByteOutput(ChannelBufferFactory factory, int estimatedLength) {
    46          this(ChannelBuffers.dynamicBuffer(estimatedLength, factory));
    47      }
    48
    49      public void close() throws IOException {
    50          // Nothing todo
    51      }
    52
    53      public void flush() throws IOException {
    54          // nothing to do
    55      }
    56
    57      public void write(int b) throws IOException {
    58          buffer.writeByte(b);
    59      }
    60
    61      public void write(byte[] bytes) throws IOException {
    62          buffer.writeBytes(bytes);
    63      }
    64
    65      public void write(byte[] bytes, int srcIndex, int length) throws IOException {
    66          buffer.writeBytes(bytes, srcIndex, length);
    67      }
    68
    69      /**
    70       * Return the {@link ChannelBuffer} which contains the written content
    71       *
    72       */
    73      public ChannelBuffer getBuffer() {
    74          return buffer;
    75      }
    76
    77  }