package service
- Alphabetic
- Public
- All
Type Members
-
trait
Filterable[+T] extends service.Filterable[T]
Used in conjunction with a
ServicePerEndpointbuilder to allow for filtering of aServicePerEndpoint. -
trait
MethodPerEndpointBuilder[ServicePerEndpoint, MethodPerEndpoint] extends AnyRef
A typeclass to construct a MethodPerEndpoint by wrapping a ServicePerEndpoint.
A typeclass to construct a MethodPerEndpoint by wrapping a ServicePerEndpoint. This is a compatibility constructor to replace an existing Future interface with one built from a ServicePerEndpoint.
Scrooge generates implementations of this builder.
-
trait
ReqRepMethodPerEndpointBuilder[ReqRepServicePerEndpoint, MethodPerEndpoint] extends MethodPerEndpointBuilder[ReqRepServicePerEndpoint, MethodPerEndpoint]
A typeclass to construct a MethodPerEndpoint by wrapping a ReqRepServicePerEndpoint.
A typeclass to construct a MethodPerEndpoint by wrapping a ReqRepServicePerEndpoint.
This is a compatibility constructor to replace an existing Future interface with one built from a ReqRepServicePerEndpoint.
Scrooge generates implementations of this builder.
-
trait
ReqRepServicePerEndpointBuilder[ReqRepServicePerEndpoint <: Filterable[ReqRepServicePerEndpoint]] extends ServicePerEndpointBuilder[ReqRepServicePerEndpoint]
Typeclass ReqRepServicePerEndpointBuilder[T] creates T-typed interfaces from thrift clients.
Typeclass ReqRepServicePerEndpointBuilder[T] creates T-typed interfaces from thrift clients.
Scrooge generates implementations of this builder.
-
trait
ServicePerEndpointBuilder[ServicePerEndpoint <: Filterable[ServicePerEndpoint]] extends AnyRef
Typeclass ServicePerEndpointBuilder[T] creates T-typed interfaces from thrift clients.
Typeclass ServicePerEndpointBuilder[T] creates T-typed interfaces from thrift clients. Scrooge generates implementations of this builder.
-
trait
ThriftServiceBuilder[ServicePerEndpoint, ThriftService] extends AnyRef
A typeclass to construct a ThriftService by wrapping a ServicePerEndpoint.
A typeclass to construct a ThriftService by wrapping a ServicePerEndpoint. This is a compatibility constructor to replace an existing Future interface with one built from a ServicePerEndpoint.
Scrooge generates implementations of this builder.
- Annotations
- @deprecated
- Deprecated
(Since version 2018-01-12) Use MethodPerEndpointBuilder
Value Members
- object ThriftCodec
-
object
ThriftReqRepServicePerEndpoint
Construct
Service[scrooge.Request[method.Args],scrooge.Response[method.SuccessType]]interface for a ThriftMethod.Construct
Service[scrooge.Request[method.Args],scrooge.Response[method.SuccessType]]interface for a ThriftMethod.There are two ways to use a Scrooge-generated Thrift
Servicewith Finagle:1. Using a Service interface, i.e. a collection of Finagle
Services, e.g., ReqRepServicePerEndpoint.2. Using a method interface, i.e. a collection of methods returning
Futures, e.g, MethodPerEndpoint.Example: for a Thrift service IDL:
service Logger { string log(1: string message, 2: i32 logLevel); i32 getLogSize(); }the
Serviceinterface, orReqRepServicePerEndpoint, istrait LoggerServiceIface { val log: com.twitter.finagle.Service[scrooge.Request[Logger.Log.Args], scrooge.Response[Logger.Log.SuccessType]] val getLogSize: com.twitter.finagle.Service[[scrooge.Request[Logger.GetLogSize.Args], scrooge.Response[Logger.GetLogSize.SuccessType]] }
and the method interface, or
MethodPerEndpoint, istrait Logger[Future] { def log(message: String, logLevel: Int): Future[String] def getLogSize(): Future[Int] }
ReqRepServicePerEndpoints can be modified and composed with Finagle
Filters. -
object
ThriftResponseClassifier
ResponseClassifiersfor use withfinagle-thriftrequest/responses.ResponseClassifiersfor use withfinagle-thriftrequest/responses.Thrift (and ThriftMux) services are a bit unusual in that there is only a single
ServicefromArray[Byte]toArray[Byte]for all the methods of an IDL's service.Thrift classifiers should be written in terms of the Scrooge generated request
$Service.$Method.Argstype and the method's response type. This is because there is support in Scrooge andThrift.newService/newClientto deserialize the responses into the expected application types so that classifiers can be written in a normal way.Given an idl:
exception NotFoundException { 1: string reason } exception RateLimitedException { 1: string reason } service SocialGraph { i32 follow(1: i64 follower, 2: i64 followee) throws ( 1: NotFoundException ex, 2: RateLimitedException ex ) }One possible custom classifier would be:
val classifier: ResponseClassifier = { case ReqRep(_, Throw(_: RateLimitedException)) => RetryableFailure case ReqRep(_, Throw(_: NotFoundException)) => NonRetryableFailure case ReqRep(_, Return(x: Int)) if x == 0 => NonRetryableFailure case ReqRep(SocialGraph.Follow.Args(a, b), _) if a <= 0 || b <= 0 => NonRetryableFailure // avoid this style! }
Often times, a good default classifier is ThriftResponseClassifier.ThriftExceptionsAsFailures which treats any Thrift response that deserializes into an Exception as a non-retryable failure.
-
object
ThriftServicePerEndpoint
Construct Service interface for a Thrift method.
Construct Service interface for a Thrift method.
There are two ways to use a Scrooge-generated Thrift
Servicewith Finagle:1. Using a Service interface, i.e. a collection of Finagle
Services.2. Using a method interface, i.e. a collection of methods returning
Futures.Example: for a Thrift service IDL:
service Logger { string log(1: string message, 2: i32 logLevel); i32 getLogSize(); }the
Serviceinterface, orServicePerEndpoint, istrait LoggerServicePerEndpoint { val log: com.twitter.finagle.Service[Logger.Log.Args, Logger.Log.SuccessType] val getLogSize: com.twitter.finagle.Service[Logger.GetLogSize.Args, Logger.GetLogSize.SuccessType] }
and the method interface, or
MethodPerEndpoint, istrait Logger[Future] { def log(message: String, logLevel: Int): Future[String] def getLogSize(): Future[Int] }
Service interfaces can be modified and composed with Finagle
Filters.