
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