abstract class ReqRepDarkTrafficFilterModule[MethodIface <: Filterable[MethodIface]] extends TwitterModule with DarkTrafficFilterModuleTrait
A com.twitter.inject.TwitterModule which configures and binds a DarkTrafficFilter to the object graph.
- Note
This DarkTrafficFilter module is to be used with
,Controllers
which are constructed by extendingController(GeneratedThriftService)
.This is only applicable in Scala as it uses generated Scala classes and expects to configure the DarkTrafficFilter over a com.twitter.finagle.Service that is generated from Finagle via generated Scala code. Users of generated Java code should use the JavaDarkTrafficFilterModule.
- Alphabetic
- By Inheritance
- ReqRepDarkTrafficFilterModule
- DarkTrafficFilterModuleTrait
- ThriftClientModuleTrait
- StackClientModuleTrait
- TwitterModule
- ScalaModule
- InternalModule
- TwitterBaseModule
- TwitterModuleLifecycle
- Logging
- TwitterModuleFlags
- AbstractModule
- Module
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ReqRepDarkTrafficFilterModule()(implicit arg0: ClassTag[MethodIface], serviceBuilder: ReqRepServicePerEndpointBuilder[MethodIface])
Type Members
- class BindingBuilder[T] extends ScalaAnnotatedBindingBuilder[T]
- Definition Classes
- InternalModule
Abstract Value Members
- abstract def enableSampling(injector: Injector): (Any) => Boolean
Function to determine if the request should be "sampled", e.g.
Function to determine if the request should be "sampled", e.g. sent to the dark service.
- injector
the com.twitter.inject.Injector for use in determining if a given request should be forwarded or not.
- Attributes
- protected
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def addError(arg0: Message): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def addError(arg0: Throwable): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def addError(arg0: String, arg1: <repeated...>[AnyRef]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- Annotations
- @transient()
- def addFlagConverter[T <: AnyRef](typeMatcher: Matcher[_ >: TypeLiteral[_]], F: Flaggable[T]): Unit
Binds a type converter derived from a Flaggable, making it possible to inject flags of all kinds.
Binds a type converter derived from a Flaggable, making it possible to inject flags of all kinds. The injector will use a provided
Flaggable
to perform type conversion during an injection.For example (in Java):
import java.util.List; import com.google.inject.TypeLiteral; import com.google.inject.matcher.Matchers; import com.twitter.app.Flaggable; addFlagConverter( Matchers.only(new TypeLiteral<List<scala.Tuple2<Integer, Integer>>>() {}), Flaggable.ofJavaList(Flaggable.ofTuple(Flaggable.ofJavaInteger(), Flaggable.ofJavaInteger()) );
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
addFlagConverter(Manifest,Flaggable for a variant that's more suitable for Scala.
- def addFlagConverter[T <: AnyRef](implicit arg0: Manifest[T], F: Flaggable[T]): Unit
Binds a type converter derived from a Flaggable, making it possible to inject flags of all kinds.
Binds a type converter derived from a Flaggable, making it possible to inject flags of all kinds. The injector will use a provided
Flaggable
to perform type conversion during an injection.For example (in Scala):
addFlagConverter[List[(Int, Int)]] // support injecting flags of type List[(Int, Int)]
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
addFlagConverter(Matcher,Flaggable) for variant that's more suitable for Java.
- def addTypeConverter[T](converter: TypeConverter)(implicit arg0: Manifest[T]): Unit
Binds a type converter.
Binds a type converter. The injector will use the given converter to convert string constants to matching types as needed.
- T
type to match that the converter can handle
- converter
converts values
- Attributes
- protected
- Definition Classes
- TwitterModule
- def annotatedWith[A <: Annotation](implicit arg0: ClassTag[A]): Matcher[AnnotatedElement]
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def asClosable(client: Client): Closable
This method should be overridden by implementors IF the ClientType does not extend Closable.
This method should be overridden by implementors IF the ClientType does not extend Closable. This method should wrap an underlying client as a Closable to ensure that resources are dealt with cleanly upon shutdown.
- client
The client that does not extend Closable
- returns
The Closable whose logic cleans up
client
's resources
- Attributes
- protected
- Definition Classes
- ThriftClientModuleTrait → StackClientModuleTrait
override protected def asClosable(client: ClientType): Closable = clientType.asClosable
, override protected def asClosable(client: ClientType): Closable = Closable.make { deadline => // Use a FuturePool to ensure the task is completed asynchronously // and allow for enforcing the deadline Time. FuturePool .unboundedPool { clientType.closeSession() // clean-up resources }.by(deadline)(DefaultTimer) }
Examples: - final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def baseClient: Client
Create a base Finagle Stack Client of type ClientType.
Create a base Finagle Stack Client of type ClientType. This method should not try to do any configuration on the created client.
- returns
The base ClientType client, without any custom configuration.
- Attributes
- protected
- Definition Classes
- ThriftClientModuleTrait → StackClientModuleTrait
override def createBaseClient(): Http.Client = Http.client
, override def createBaseClient(): ThriftMux.Client = ThriftMux.client
, override def createBaseClient(): Memcached.Client = Memcached.client
Examples: - def bind[T](implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[T]): BindingBuilder[T]
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def bind[T <: AnyRef](arg0: Class[T]): AnnotatedBindingBuilder[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def bind[T <: AnyRef](arg0: TypeLiteral[T]): AnnotatedBindingBuilder[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def bind[T <: AnyRef](arg0: Key[T]): LinkedBindingBuilder[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def bindAssistedFactory[T]()(implicit arg0: Manifest[T]): Unit
Provides for installing and building a factory that combines the caller's arguments with injector-supplied values to construct objects.
Provides for installing and building a factory that combines the caller's arguments with injector-supplied values to construct objects. This is preferable to calling
install
on the TwitterModule which provides the factory as install is not supported for TwitterModule types.- T
type of the assisted injection factory
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindConstant(): AnnotatedConstantBindingBuilder
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def bindInterceptor[I <: MethodInterceptor](classMatcher: Matcher[_ >: Class[_]], methodMatcher: Matcher[_ >: AnnotatedElement])(implicit arg0: ClassTag[I]): Unit
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def bindInterceptor(arg0: Matcher[_ >: Class[_ <: AnyRef] <: AnyRef], arg1: Matcher[_ >: Method <: AnyRef], arg2: <repeated...>[MethodInterceptor]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- Annotations
- @transient()
- def bindListener(arg0: Matcher[_ >: Binding[_ <: AnyRef] <: AnyRef], arg1: <repeated...>[ProvisionListener]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- Annotations
- @transient()
- def bindListener(arg0: Matcher[_ >: TypeLiteral[_ <: AnyRef] <: AnyRef], arg1: TypeListener): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def bindMultiple[T](annotation: Annotation)(implicit arg0: Manifest[T]): ScalaMultibinder[T]
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with a binding annotation.
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with a binding annotation.
An API to bind multiple values separately, only to later inject them as a complete collection. "Multibinding" is intended for use in your application's module:
class SnacksModule extends TwitterModule { override protected def configure(): Unit = { bindMultiple[Snack].addBinding.toInstance(new Twix()) bindMultiple[Snack].addBinding.toProvider[SnickersProvider] bindMultiple[Snack].addBinding.to[Skittles] } }
With this binding, a
Set[Snack]
can now be injected:class SnackMachine @Inject()(Set[Snack] snacks)
Contributing multibindings from different modules is also supported. For example, it is okay for both
CandyModule
andChipsModule
to create their ownMultibinder[Snack]
, and to each contribute bindings to the set of snacks. When that set is injected, it will contain elements from both modules.The set's iteration order is consistent with the binding order. This is convenient when multiple elements are contributed by the same module because that module can order its bindings appropriately. Avoid relying on the iteration order of elements contributed by different modules, since there is no equivalent mechanism to order modules.
The set is unmodifiable. Elements can only be added to the set by configuring the multibinder. Elements can never be removed from the set.
Elements are resolved at set injection time. If an element is bound to a provider, that provider's get method will be called each time the set is injected (unless the binding is also scoped).
Annotations can be used to create different sets of the same element type. Each distinct annotation gets its own independent collection of elements.
Elements MUST be distinct. If multiple bound elements have the same value, set injection will fail.
Elements MUST be non-null. If any set element is null, set injection will fail.
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindMultiple[T, A <: Annotation](implicit arg0: Manifest[T], arg1: Manifest[A]): ScalaMultibinder[T]
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with a binding annotation A.
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with a binding annotation A.
An API to bind multiple values separately, only to later inject them as a complete collection. "Multibinding" is intended for use in your application's module:
class SnacksModule extends TwitterModule { override protected def configure(): Unit = { bindMultiple[Snack].addBinding.toInstance(new Twix()) bindMultiple[Snack].addBinding.toProvider[SnickersProvider] bindMultiple[Snack].addBinding.to[Skittles] } }
With this binding, a
Set[Snack]
can now be injected:class SnackMachine @Inject()(Set[Snack] snacks)
Contributing multibindings from different modules is also supported. For example, it is okay for both
CandyModule
andChipsModule
to create their ownMultibinder[Snack]
, and to each contribute bindings to the set of snacks. When that set is injected, it will contain elements from both modules.The set's iteration order is consistent with the binding order. This is convenient when multiple elements are contributed by the same module because that module can order its bindings appropriately. Avoid relying on the iteration order of elements contributed by different modules, since there is no equivalent mechanism to order modules.
The set is unmodifiable. Elements can only be added to the set by configuring the multibinder. Elements can never be removed from the set.
Elements are resolved at set injection time. If an element is bound to a provider, that provider's get method will be called each time the set is injected (unless the binding is also scoped).
Annotations can be used to create different sets of the same element type. Each distinct annotation gets its own independent collection of elements.
Elements MUST be distinct. If multiple bound elements have the same value, set injection will fail.
Elements MUST be non-null. If any set element is null, set injection will fail.
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindMultiple[T](implicit arg0: Manifest[T]): ScalaMultibinder[T]
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with no binding annotation.
Returns a new com.google.inject.multibindings.Multibinder that collects instances of type T in a scala.collection.immutable.Set that is itself bound with no binding annotation.
An API to bind multiple values separately, only to later inject them as a complete collection. "Multibinding" is intended for use in your application's module:
class SnacksModule extends TwitterModule { override protected def configure(): Unit = { bindMultiple[Snack].addBinding.toInstance(new Twix()) bindMultiple[Snack].addBinding.toProvider[SnickersProvider] bindMultiple[Snack].addBinding.to[Skittles] } }
With this binding, a
Set[Snack]
can now be injected:class SnackMachine @Inject()(Set[Snack] snacks)
Contributing multibindings from different modules is also supported. For example, it is okay for both
CandyModule
andChipsModule
to create their ownMultibinder[Snack]
, and to each contribute bindings to the set of snacks. When that set is injected, it will contain elements from both modules.The set's iteration order is consistent with the binding order. This is convenient when multiple elements are contributed by the same module because that module can order its bindings appropriately. Avoid relying on the iteration order of elements contributed by different modules, since there is no equivalent mechanism to order modules.
The set is unmodifiable. Elements can only be added to the set by configuring the multibinder. Elements can never be removed from the set.
Elements are resolved at set injection time. If an element is bound to a provider, that provider's get method will be called each time the set is injected (unless the binding is also scoped).
Annotations can be used to create different sets of the same element type. Each distinct annotation gets its own independent collection of elements.
Elements MUST be distinct. If multiple bound elements have the same value, set injection will fail.
Elements MUST be non-null. If any set element is null, set injection will fail.
- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindOption[T](annotation: Annotation)(implicit arg0: Manifest[T]): ScalaOptionBinder[T]
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option that is itself bound with a binding annotation.
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option that is itself bound with a binding annotation.
Calling this method will always supply the bindings:
Option[T]
andOption[Provider[T]]
. IfsetBinding
orsetDefault
are called, it will also bindT
.setDefault
is intended for use by frameworks that need a default value. User code can callsetBinding
to override the default.Warning: even if
setBinding
is called, the default binding will still exist in the object graph. If it is a singleton, it will be instantiated inStage.PRODUCTION
.If
setDefault
orsetBinding
are linked to Providers, the Provider may return null. If it does, the Option bindings will be a None. BindingsetBinding
to a Provider that returns null will not causeOptionalBinder
to fall back to thesetDefault
binding.If neither
setDefault
norsetBinding
are called, it will try to link to a user-supplied binding of the same type. If no binding exists, the options will be absent. Otherwise, if a user-supplied binding of that type exists, or ifsetBinding
orsetDefault
are called, the options will returnSome(T)
if they are bound to a non-null value, otherwiseNone
.Values are resolved at injection time. If a value is bound to a provider, that provider's get method will be called each time the option is injected (unless the binding is also scoped, or an option of provider is injected).
Annotations are used to create different options of the same key/value type. Each distinct annotation gets its own independent binding. For example:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer] } }
With this module, an
Option[Renamer]
can now be injected. With no other bindings, the option will be None. Users can specify bindings in one of two ways:Option 1:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bind[Renamer].to[ReplacingRenamer] } }
or Option 2:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer].setBinding.to[ReplacingRenamer] } }
With both options, the
Option[Renamer]
will be present and supply theReplacingRenamer
.Default values can be supplied using:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } }
With the above module, code can inject an
@LookupUrl
-annotated String and it will supply theDefaultLookupUrl
. A user can change this value by binding:class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setBinding.toInstance(CustomLookupUrl) } }
which will override the default value.
If one module uses
setDefault
the only way to override the default is to usesetBinding
. It is an error for a user to specify the binding without using com.google.inject.multibindings.OptionalBinder ifsetDefault
orsetBinding
are called. For example:class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } } class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bind[String, LookupUrl].toInstance(CustomLookupUrl); } }
would generate an error, because both the framework and the user are trying to bind
@LookupUrl
String.- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindOption[T, A <: Annotation](implicit arg0: Manifest[T], arg1: Manifest[A]): ScalaOptionBinder[T]
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option that is itself bound with a binding annotation A.
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option that is itself bound with a binding annotation A.
Calling this method will always supply the bindings:
Option[T]
andOption[Provider[T]]
. IfsetBinding
orsetDefault
are called, it will also bindT
.setDefault
is intended for use by frameworks that need a default value. User code can callsetBinding
to override the default.Warning: even if
setBinding
is called, the default binding will still exist in the object graph. If it is a singleton, it will be instantiated inStage.PRODUCTION
.If
setDefault
orsetBinding
are linked to Providers, the Provider may return null. If it does, the Option bindings will be a None. BindingsetBinding
to a Provider that returns null will not causeOptionalBinder
to fall back to thesetDefault
binding.If neither
setDefault
norsetBinding
are called, it will try to link to a user-supplied binding of the same type. If no binding exists, the options will be absent. Otherwise, if a user-supplied binding of that type exists, or ifsetBinding
orsetDefault
are called, the options will returnSome(T)
if they are bound to a non-null value, otherwiseNone
.Values are resolved at injection time. If a value is bound to a provider, that provider's get method will be called each time the option is injected (unless the binding is also scoped, or an option of provider is injected).
Annotations are used to create different options of the same key/value type. Each distinct annotation gets its own independent binding. For example:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer] } }
With this module, an
Option[Renamer]
can now be injected. With no other bindings, the option will be None. Users can specify bindings in one of two ways:Option 1:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bind[Renamer].to[ReplacingRenamer] } }
or Option 2:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer].setBinding.to[ReplacingRenamer] } }
With both options, the
Option[Renamer]
will be present and supply theReplacingRenamer
.Default values can be supplied using:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } }
With the above module, code can inject an
@LookupUrl
-annotated String and it will supply theDefaultLookupUrl
. A user can change this value by binding:class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setBinding.toInstance(CustomLookupUrl) } }
which will override the default value.
If one module uses
setDefault
the only way to override the default is to usesetBinding
. It is an error for a user to specify the binding without using com.google.inject.multibindings.OptionalBinder ifsetDefault
orsetBinding
are called. For example:class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } } class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bind[String, LookupUrl].toInstance(CustomLookupUrl); } }
would generate an error, because both the framework and the user are trying to bind
@LookupUrl
String.- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindOption[T](implicit arg0: Manifest[T]): ScalaOptionBinder[T]
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option.
Returns a new com.google.inject.multibindings.OptionalBinder that binds an instance of T in a scala.Option.
Calling this method will always supply the bindings:
Option[T]
andOption[Provider[T]]
. IfsetBinding
orsetDefault
are called, it will also bindT
.setDefault
is intended for use by frameworks that need a default value. User code can callsetBinding
to override the default.Warning: even if
setBinding
is called, the default binding will still exist in the object graph. If it is a singleton, it will be instantiated inStage.PRODUCTION
.If
setDefault
orsetBinding
are linked to Providers, the Provider may return null. If it does, the Option bindings will be a None. BindingsetBinding
to a Provider that returns null will not causeOptionalBinder
to fall back to thesetDefault
binding.If neither
setDefault
norsetBinding
are called, it will try to link to a user-supplied binding of the same type. If no binding exists, the options will be absent. Otherwise, if a user-supplied binding of that type exists, or ifsetBinding
orsetDefault
are called, the options will returnSome(T)
if they are bound to a non-null value, otherwiseNone
.Values are resolved at injection time. If a value is bound to a provider, that provider's get method will be called each time the option is injected (unless the binding is also scoped, or an option of provider is injected).
Annotations are used to create different options of the same key/value type. Each distinct annotation gets its own independent binding. For example:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer] } }
With this module, an
Option[Renamer]
can now be injected. With no other bindings, the option will be None. Users can specify bindings in one of two ways:Option 1:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bind[Renamer].to[ReplacingRenamer] } }
or Option 2:
class UserRenamerModule extends TwitterModule { override protected def configure(): Unit = { bindOption[Renamer].setBinding.to[ReplacingRenamer] } }
With both options, the
Option[Renamer]
will be present and supply theReplacingRenamer
.Default values can be supplied using:
class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } }
With the above module, code can inject an
@LookupUrl
-annotated String and it will supply theDefaultLookupUrl
. A user can change this value by binding:class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setBinding.toInstance(CustomLookupUrl) } }
which will override the default value.
If one module uses
setDefault
the only way to override the default is to usesetBinding
. It is an error for a user to specify the binding without using com.google.inject.multibindings.OptionalBinder ifsetDefault
orsetBinding
are called. For example:class FrameworkModule extends TwitterModule { override protected def configure(): Unit = { bindOption[String, LookupUrl].setDefault.toInstance(DefaultLookupUrl) } } class UserLookupModule extends TwitterModule { override protected def configure(): Unit = { bind[String, LookupUrl].toInstance(CustomLookupUrl); } }
would generate an error, because both the framework and the user are trying to bind
@LookupUrl
String.- Attributes
- protected
- Definition Classes
- TwitterModule
- See also
- def bindScope[T <: Annotation](scope: Scope)(implicit arg0: ClassTag[T]): Unit
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def bindScope(arg0: Class[_ <: Annotation], arg1: Scope): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def binder(): Binder
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def binderAccess: Binder
- Attributes
- protected[this]
- Definition Classes
- ScalaModule → InternalModule
- final def clientId(injector: Injector): ClientId
Override to supply a custom ClientId, e.g., override protected def clientId(injector: Injector): ClientId = ClientId("myclient") }}}
Override to supply a custom ClientId, e.g., override protected def clientId(injector: Injector): ClientId = ClientId("myclient") }}}
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait → ThriftClientModuleTrait
- Note
The default requires a ClientId be bound to the injector, for example via a ThriftClientIdModule.
- val clientIdFlag: Flag[String]
- Attributes
- protected[this]
- Definition Classes
- DarkTrafficFilterModuleTrait
- def clientIdFlagName: String
Name of the flag which captures the value for the Thrift ClientId to pass to the dark service
Name of the flag which captures the value for the Thrift ClientId to pass to the dark service
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def configure(): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- final def configure(arg0: Binder): Unit
- Definition Classes
- AbstractModule → Module
- final def configureClient(injector: Injector, client: Client): Client
This method allows for further configuration of the ClientType client for parameters not exposed by this module or for overriding defaults provided herein, e.g.,
This method allows for further configuration of the ClientType client for parameters not exposed by this module or for overriding defaults provided herein, e.g.,
override protected def configureClient(client: Example.Client): Example.Client = { client .withStatsReceiver(someOtherScopedStatsReceiver) .withMonitor(myAwesomeMonitor) .withTracer(notTheDefaultTracer) }
- injector
the com.twitter.inject.Injector which can be used to help configure the given ClientType client.
- client
the ClientType client to configure.
- returns
a configured ClientType client.
- Attributes
- protected
- Definition Classes
- ThriftClientModuleTrait → StackClientModuleTrait
- def configureThriftMuxClient(injector: Injector, client: Client): Client
This method allows for further configuration of the ThriftMux client for parameters not exposed by this module or for overriding defaults provided herein, e.g.,
This method allows for further configuration of the ThriftMux client for parameters not exposed by this module or for overriding defaults provided herein, e.g.,
override def configureThriftMuxClient(client: ThriftMux.Client): ThriftMux.Client = { client .withProtocolFactory(myCustomProtocolFactory)) .withStatsReceiver(someOtherScopedStatsReceiver) .withMonitor(myAwesomeMonitor) .withTracer(notTheDefaultTracer) .withResponseClassifier(ThriftResponseClassifier.ThriftExceptionsAsFailures) }
- injector
the com.twitter.inject.Injector which can be used to help configure the given com.twitter.finagle.ThriftMux.Client.
- client
the com.twitter.finagle.ThriftMux.Client to configure.
- returns
a configured ThriftMux.Client.
- Attributes
- protected
- Definition Classes
- ThriftClientModuleTrait
- def convertToTypes(arg0: Matcher[_ >: TypeLiteral[_ <: AnyRef] <: AnyRef], arg1: TypeConverter): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- final def createFlag[T](name: String, default: T, help: String, flaggable: Flaggable[T]): Flag[T]
A Java-friendly method for creating a named Flag.
A Java-friendly method for creating a named Flag.
- name
the name of the Flag.
- default
a default value for the Flag when no value is given as an application argument.
- help
the help text explaining the purpose of the Flag.
- returns
the created Flag.
- Definition Classes
- TwitterModuleFlags
- final def createMandatoryFlag[T](name: String, help: String, usage: String, flaggable: Flaggable[T]): Flag[T]
A Java-friendly way to create a "mandatory" Flag.
A Java-friendly way to create a "mandatory" Flag. "Mandatory" flags MUST have a value provided as an application argument (as they have no default value to be used).
- name
the name of the Flag.
- help
the help text explaining the purpose of the Flag.
- usage
a string describing the type of the Flag, i.e.: Integer.
- returns
the created Flag.
- Definition Classes
- TwitterModuleFlags
- def currentStage(): Stage
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def debug(marker: Marker, message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def debug(message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def debug(marker: Marker, message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def debug(message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def debugResult[T](message: => String)(fn: => T): T
- Attributes
- protected[this]
- Definition Classes
- Logging
- def defaultClientId: String
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait
- def defaultClosableAwaitPeriod: Duration
Default amount of time to block in Duration) on a Closable to close that is registered in a
closeOnExit
block.Default amount of time to block in Duration) on a Closable to close that is registered in a
closeOnExit
block.- returns
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- See also
Duration)
- def defaultClosableGracePeriod: Duration
Default amount of time to wait for any Closable being registered in a
closeOnExit
block.Default amount of time to wait for any Closable being registered in a
closeOnExit
block. Note that this timeout is advisory, as it attempts to give the close function some leeway, for example to drain clients or finish up other tasks.- returns
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- See also
Duration)
- def dest: String
Destination of Finagle client.
Destination of Finagle client.
- Definition Classes
- DarkTrafficFilterModuleTrait → StackClientModuleTrait
- See also
- val destFlag: Flag[String]
- Attributes
- protected[this]
- Definition Classes
- DarkTrafficFilterModuleTrait
- def destFlagName: String
Name of the flag which captures the destination to which to send dark traffic.
Name of the flag which captures the destination to which to send dark traffic.
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def error(marker: Marker, message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def error(message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def error(marker: Marker, message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def error(message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def errorResult[T](message: => String)(fn: => T): T
- Attributes
- protected[this]
- Definition Classes
- Logging
- def failfastOnFlagsNotParsed: Boolean
This is akin to the
c.t.inject.app.App#failfastOnFlagsNotParsed
and serves a similar purpose but for new com.twitter.app.Flag instances created in this TwitterModule.This is akin to the
c.t.inject.app.App#failfastOnFlagsNotParsed
and serves a similar purpose but for new com.twitter.app.Flag instances created in this TwitterModule. The value is 'true' by default. This is to ensure that the value of a com.twitter.app.Flag instance created in this TwitterModule cannot be incorrectly accessed before the application has parsed any passed command line input. This mirrors the framework default forcom.twitter.inject.app.App#failfastOnFlagsNotParsed
for Flag instances created within the application container.- returns
a Boolean indicating if com.twitter.app.Flag instances created in this TwitterModule should be set with com.twitter.app.Flag.failFastUntilParsed set to 'true' or 'false'. Default: 'true'.
- Attributes
- protected[this]
- Definition Classes
- TwitterModuleFlags
- Note
This value SHOULD NOT be changed to 'false' without a very good reason.
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def flag[T](name: String, help: String)(implicit arg0: Flaggable[T], arg1: Manifest[T]): Flag[T]
Create a "mandatory" flag and add it to this Module's flags list."Mandatory" flags MUST have a value provided as an application argument (as they have no default value to be used).
Create a "mandatory" flag and add it to this Module's flags list."Mandatory" flags MUST have a value provided as an application argument (as they have no default value to be used).
- T
must be a Flaggable type.
- name
the name of the Flag.
- help
the help text explaining the purpose of the Flag.
- returns
the created Flag.
- Definition Classes
- TwitterModuleFlags
- Note
Java users: see the more Java-friendly createFlag or createMandatoryFlag.
- final def flag[T](name: String, default: T, help: String)(implicit arg0: Flaggable[T]): Flag[T]
Create a Flag and add it to this Module's flags list.
Create a Flag and add it to this Module's flags list.
- T
must be a Flaggable type.
- name
the name of the Flag.
- default
a default value for the Flag when no value is given as an application argument.
- help
the help text explaining the purpose of the Flag.
- returns
the created Flag.
- Definition Classes
- TwitterModuleFlags
- Note
Java users: see the more Java-friendly createFlag or createMandatoryFlag.
- val flags: ArrayBuffer[Flag[_]]
- Attributes
- protected[inject]
- Definition Classes
- TwitterModuleFlags
- def forwardAfterService: Boolean
Forward the dark request after the service has processed the request instead of concurrently.
Forward the dark request after the service has processed the request instead of concurrently.
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait
- def frameworkConfigureClient(injector: Injector, client: Client): Client
- Attributes
- protected[twitter]
- Definition Classes
- StackClientModuleTrait
- def frameworkModules: Seq[Module]
Additional framework modules to be composed into this module.
Additional framework modules to be composed into this module.
- Attributes
- protected[inject]
- Definition Classes
- StackClientModuleTrait → TwitterBaseModule
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getMembersInjector[T](implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[T]): MembersInjector[T]
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def getMembersInjector[T <: AnyRef](arg0: TypeLiteral[T]): MembersInjector[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def getMembersInjector[T <: AnyRef](arg0: Class[T]): MembersInjector[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def getProvider[T](implicit arg0: ClassTag[T]): Provider[T]
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def getProvider[T <: AnyRef](arg0: Class[T]): Provider[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def getProvider[T <: AnyRef](arg0: Key[T]): Provider[T]
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def info(marker: Marker, message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def info(message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def info(marker: Marker, message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def info(message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def infoResult[T](message: => String)(fn: => T): T
- Attributes
- protected[this]
- Definition Classes
- Logging
- def initialClientConfiguration(injector: Injector, client: Client, statsReceiver: StatsReceiver): Client
Initial configuration of the underlying client.
Initial configuration of the underlying client. This is exposed to allow for customization of the base client configuration. All user facing extensions should be done via configureClient.
- returns
The base configured ClientType client, without any custom end-user configuration.
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait → ThriftClientModuleTrait → StackClientModuleTrait
override protected final def initialClientConfiguration( injector: Injector, client: ClientType, statsReceiver: StatsReceiver ): ThriftMux.Client = super.initialClientConfiguration(injector, client, statsReceiver) .withClientId(injector.instance[ClientId]
Example: - def install(module: Module): Unit
Uses the given com.google.inject.Module to configure more bindings.
Uses the given com.google.inject.Module to configure more bindings. This is not supported for instances of type TwitterModule and will throw an UnsupportedOperationException if attempted on an instance of TwitterModule. This is to properly support the TwitterModuleLifecycle for TwitterModule instances.
- Attributes
- protected
- Definition Classes
- TwitterModule → AbstractModule
- Annotations
- @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])
- Note
Module) can still be used for non-TwitterModule instances, and is sometimes preferred due to
install
being deferred until after flag parsing occurs.
- def isDebugEnabled(marker: Marker): Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isDebugEnabled: Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isErrorEnabled(marker: Marker): Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isErrorEnabled: Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isInfoEnabled(marker: Marker): Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isInfoEnabled: Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isTraceEnabled(marker: Marker): Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isTraceEnabled: Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isWarnEnabled(marker: Marker): Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def isWarnEnabled: Boolean
- Attributes
- protected[this]
- Definition Classes
- Logging
- def javaModules: Collection[Module]
Additional modules to be composed into this module from Java
Additional modules to be composed into this module from Java
- Attributes
- protected[inject]
- Definition Classes
- TwitterBaseModule
- def label: String
Name of dark service client for use in metrics.
Name of dark service client for use in metrics.
- Definition Classes
- DarkTrafficFilterModuleTrait → StackClientModuleTrait
- final def logger: Logger
- Attributes
- protected[this]
- Definition Classes
- Logging
- final def loggerName: String
- Attributes
- protected[this]
- Definition Classes
- Logging
- def modules: Seq[Module]
Additional modules to be composed into this module.
Additional modules to be composed into this module. This list of modules is generally used instead of the TwitterModule.install method to properly support the TwitterModuleLifecycle for TwitterModule instances.
- Attributes
- protected[inject]
- Definition Classes
- TwitterBaseModule
- Note
Module) can still be used for non-TwitterModule 1 instances, and is sometimes preferred due to
,install
being deferred until after flag parsing occurs.Java users should prefer javaModules.
- def monitor: Monitor
Function to add a user-defined Monitor.
Function to add a user-defined Monitor. A com.twitter.finagle.util.DefaultMonitor will be installed implicitly which handles all exceptions caught in the stack. Exceptions that are not handled by a user-defined monitor are propagated to the com.twitter.finagle.util.DefaultMonitor.
NullMonitor has no influence on DefaultMonitor behavior here.
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def newClient(injector: Injector, statsReceiver: StatsReceiver): Client
This method will generate a fully configured ClientType
This method will generate a fully configured ClientType
- injector
the com.twitter.inject.Injector which can be used to help configure the given ClientType client.
- statsReceiver
The StatsReceiver to use with the generated ClientType
- returns
A configured ClientType
- Attributes
- protected
- Definition Classes
- ThriftClientModuleTrait → StackClientModuleTrait
- Note
The ability to override this method is exposed for Java compatibility purposes, where the type information in this trait can be erased from this trait to a more generic ClientType, which can cause Java compilation failures. See https://issues.scala-lang.org/browse/SI-8905. When overriding this method, it should treat this method as final, outside of providing a more specific return type. For example:
override protected final def newClient( injector: Injector, statsReceiver: StatsReceiver ): Http.Client = super.newClient(injector, statsReceiver)
- def newFilter(dest: String, client: Client, injector: Injector, stats: StatsReceiver): TypeAgnostic
- Attributes
- protected
- Definition Classes
- ReqRepDarkTrafficFilterModule → DarkTrafficFilterModuleTrait
- final def newService(injector: Injector, statsReceiver: StatsReceiver): Service[ThriftClientRequest, Array[Byte]]
This method will generate a
Service[Req, Rep]
from the configured ClientType generated by calling newClient().This method will generate a
Service[Req, Rep]
from the configured ClientType generated by calling newClient().- injector
the com.twitter.inject.Injector which can be used to help configure the given ClientType client.
- statsReceiver
The StatsReceiver to use with the generated
Service[Req, Rep]
.- returns
A
Service[Req, Rep]
that overlays the ClientType
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def onExit(f: => Unit): Unit
Collects functions over a com.twitter.util.Closables.
Collects functions over a com.twitter.util.Closables. These functions will be passed to the application
onExit
function to be executed on graceful shutdown of the application.- f
A Function0 which returns Unit. It is expected that this function encapsulates awaiting on a com.twitter.util.Closable that the application would like to ensure is closed upon graceful shutdown.
onExit { val closable = ... Await.result( closable.close(after: Duration), timeout: Duration) }
- Attributes
- protected
- Definition Classes
- TwitterModuleLifecycle
- Note
It is expected that the passed function is a function over a com.twitter.util.Closable.
- See also
=> Unit)
- def providesDarkTrafficFilter(injector: Injector, statsReceiver: StatsReceiver): TypeAgnostic
- Definition Classes
- DarkTrafficFilterModuleTrait
- Annotations
- @Provides() @Singleton() @DarkTrafficFilterType()
- def requestInjection(arg0: AnyRef): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def requestStaticInjection[T]()(implicit arg0: ClassTag[T]): Unit
- Attributes
- protected[this]
- Definition Classes
- InternalModule
- def requestStaticInjection(arg0: <repeated...>[Class[_ <: AnyRef]]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- Annotations
- @transient()
- def requestTimeout: Duration
Configures a "global" request
timeout
on the Finagle client (default: unbounded).Configures a "global" request
timeout
on the Finagle client (default: unbounded). This will set *all* requests to *every* method to have the same total timeout.- returns
a Duration which represents the total request timeout
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- See also
https://twitter.github.io/finagle/guide/Clients.html#timeouts-expiration
- def requireBinding(arg0: Class[_ <: AnyRef]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def requireBinding(arg0: Key[_ <: AnyRef]): Unit
- Attributes
- protected[google.inject]
- Definition Classes
- AbstractModule
- def retryBudget: RetryBudget
Default com.twitter.finagle.service.RetryBudget.
Default com.twitter.finagle.service.RetryBudget. It is highly recommended that budgets be shared between all filters that retry or re-queue requests to prevent retry storms.
- returns
a default com.twitter.finagle.service.RetryBudget
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- See also
https://twitter.github.io/finagle/guide/Clients.html#retries
- final def scopeStatsReceiver(injector: Injector, statsReceiver: StatsReceiver): StatsReceiver
Provide a customized base scope for the StatsReceiver exposed by this module, e.g., * *
Provide a customized base scope for the StatsReceiver exposed by this module, e.g., * *
override protected def scopeStatsReceiver(injector: Injector, statsReceiver: StatsReceiver): StatsReceiver = statsReceiver.scope("clnt", "custom_scope")
- Attributes
- protected
- Definition Classes
- DarkTrafficFilterModuleTrait → StackClientModuleTrait
- Note
The default scope is "clnt".
,Changing the default scope can have negative impacts on observability of metrics. Use caution when changing this value.
- def sessionAcquisitionTimeout: Duration
Configures the session acquisition
timeout
of this client (default: unbounded).Configures the session acquisition
timeout
of this client (default: unbounded).- returns
a Duration which represents the acquisition timeout
- Attributes
- protected
- Definition Classes
- StackClientModuleTrait
- See also
com.twitter.finagle.param.ClientSessionParams.acquisitionTimeout
https://twitter.github.io/finagle/guide/Clients.html#timeouts-expiration
- def singletonPostWarmupComplete(injector: Injector): Unit
Invoke after external ports are bound and any clients are resolved
Invoke after external ports are bound and any clients are resolved
This method should only get singleton instances from the injector.
- Attributes
- protected[inject]
- Definition Classes
- TwitterModuleLifecycle
- def singletonShutdown(injector: Injector): Unit
Invoked on graceful shutdown of the application.
Invoked on graceful shutdown of the application.
This method should only get singleton instances from the injector.
- Attributes
- protected[inject]
- Definition Classes
- TwitterModuleLifecycle
- def singletonStartup(injector: Injector): Unit
Invoked after the injector is started.
Invoked after the injector is started.
This method should only get singleton instances from the injector.
- Attributes
- protected[inject]
- Definition Classes
- TwitterModuleLifecycle
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def trace(marker: Marker, message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def trace(message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def trace(marker: Marker, message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def trace(message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def traceResult[T](message: => String)(fn: => T): T
- Attributes
- protected[this]
- Definition Classes
- Logging
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def warn(marker: Marker, message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def warn(message: => Any, cause: Throwable): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def warn(marker: Marker, message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def warn(message: => Any): Unit
- Attributes
- protected[this]
- Definition Classes
- Logging
- def warnResult[T](message: => String)(fn: => T): T
- Attributes
- protected[this]
- Definition Classes
- Logging