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

com.twitter.finagle.thrift.legacy.ChannelBufferToTransport.scala Maven / Gradle / Ivy

The newest version!
package com.twitter.finagle.thrift

import org.apache.thrift.transport.TTransport
import org.jboss.netty.buffer.ChannelBuffer

/**
 * Adapts a single Netty ChannelBuffer to a Thrift TTransport
 *
 * @param  underlying  a netty channelBuffer
 *
 */
private[thrift] class ChannelBufferToTransport(underlying: ChannelBuffer) extends TTransport {
  override def isOpen = true
  override def open() {}
  override def close() {}

  override def read(buffer: Array[Byte], offset: Int, length: Int): Int = {
    val bytesToRead = math.min(length, underlying.readableBytes)
    underlying.readBytes(buffer, offset, bytesToRead)
    bytesToRead
  }

  override def write(buffer: Array[Byte], offset: Int, length: Int) {
    underlying.writeBytes(buffer, offset, length)
  }
}

/**
 * Adapts input and output Netty ChannelBuffers to a Thrift TTransport
 *
 * @param  input   a netty channelBuffer to be read from
 * @param  output  a netty channelBuffer to write to
 *
 */
private[thrift] class DuplexChannelBufferTransport(input: ChannelBuffer, output: ChannelBuffer) extends TTransport {
  override def isOpen = true
  override def open() {}
  override def close() {}

  override def read(buffer: Array[Byte], offset: Int, length: Int) = {
    val readableBytes = input.readableBytes()
    val bytesToRead = math.min(length, readableBytes)
    input.readBytes(buffer, offset, bytesToRead)
    bytesToRead
  }

  override def write(buffer: Array[Byte], offset: Int, length: Int) {
    output.writeBytes(buffer, offset, length)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy