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

com.twitter.scrooge.ThriftStruct.scala Maven / Gradle / Ivy

The newest version!
package com.twitter.scrooge

import org.apache.thrift.protocol.TProtocol

trait ThriftStruct {
  @throws(classOf[org.apache.thrift.TException])
  def write(oprot: TProtocol)
}

/**
 * Unions are tagged with this trait as well as with ThriftStruct.
 */
trait ThriftUnion

/**
 * A trait encapsulating the logic for encoding and decoding a specific thrift struct
 * type.  The methods encoder and decoder are used by scrooge2 generated code, but are
 * now deprecated.  scrooge3 generated code uses encode and decode.
 */
trait ThriftStructCodec[T <: ThriftStruct] {
  @throws(classOf[org.apache.thrift.TException])
  def encode(t: T, oprot: TProtocol) = encoder(t, oprot)

  @throws(classOf[org.apache.thrift.TException])
  def decode(iprot: TProtocol): T = decoder(iprot)

  lazy val metaData = new ThriftStructMetaData(this)

  @deprecated("your code is generated by an outdated version of scrooge-generator", "2.7.0")
  def encoder: (T, TProtocol) => Unit

  @deprecated("your code is generated by an outdated version of scrooge-generator", "2.7.0")
  def decoder: TProtocol => T
}

/**
 * structs generated by scrooge3 will extends this base class, which provides implementations
 * for the deprecated encoder/decoder methods that depend on encode and decode, which are
 * generated.
 */
abstract class ThriftStructCodec3[T <: ThriftStruct] extends ThriftStructCodec[T] {
  override val encoder: (T, TProtocol) => Unit = encode _
  override val decoder: TProtocol => T = decode _
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy