object DirectGrpcServiceInvocation extends WartTraverser
This wart warns when methods for a gRPC service stub are called directly. Instead, the wrapper
methods from CantonGrpcUtil
and others should be used. This ensures in particular the
following aspects:
- The current trace context is set in the gRPC context prior to the call so that the gRPC stub implementation picks it up.
- Error handling is done consistently across gRPC calls.
Such helper methods are annotated @GrpcServiceInvocationMethod
. The wart does not check any
arguments at any call site, nor the implementation of such a method or any of its overrides. It
is the responsibility of the developer to ensure that typical usage patterns of this method are
safe w.r.t. the above aspects. Primary constructors can be annotated via their class.
For example, instead of myServiceStub.myMethod(request)
, you should use
CantonGrpcUtil.sendGrpcRequest(myServiceStub, ...)(_.myMethod(request))
.
- Alphabetic
- By Inheritance
- DirectGrpcServiceInvocation
- WartTraverser
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
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 apply(u: WartUniverse): Traverser
- Definition Classes
- DirectGrpcServiceInvocation → WartTraverser
- def asAnnotationMacro(c: Context)(annottees: scala.reflect.macros.blackbox.Context.Expr[Any]*): scala.reflect.macros.blackbox.Context.Expr[Any]
- Definition Classes
- WartTraverser
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asMacro(c: Context)(expr: scala.reflect.macros.blackbox.Context.Expr[Any]): scala.reflect.macros.blackbox.Context.Expr[Any]
- Definition Classes
- WartTraverser
- lazy val className: String
- Definition Classes
- WartTraverser
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def compose(o: WartTraverser): WartTraverser
- Definition Classes
- WartTraverser
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def error(u: WartUniverse)(pos: scala.reflect.api.Universe.Position, message: String): Unit
- Definition Classes
- WartTraverser
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hasTypeAscription(u: WartUniverse)(tree: scala.reflect.api.Universe.ValOrDefDef): Boolean
- Definition Classes
- WartTraverser
- def hasWartAnnotation(u: WartUniverse)(tree: scala.reflect.api.Universe.Tree): Boolean
- Definition Classes
- WartTraverser
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def isAnonymousFunctionName(u: WartUniverse)(t: scala.reflect.api.Universe.TypeName): Boolean
- Definition Classes
- WartTraverser
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isPrimitive(u: WartUniverse)(t: scala.reflect.api.Universe.Type): Boolean
- Definition Classes
- WartTraverser
- def isPrivate(u: WartUniverse)(t: scala.reflect.api.Universe.ValOrDefDef): Boolean
- Definition Classes
- WartTraverser
- def isPublic(u: WartUniverse)(t: scala.reflect.api.Universe.ValOrDefDef): Boolean
- Definition Classes
- WartTraverser
- def isSynthetic(u: WartUniverse)(t: scala.reflect.api.Universe.Tree): Boolean
- Definition Classes
- WartTraverser
- def isSyntheticPartialFunction(u: WartUniverse)(tree: scala.reflect.api.Universe.Tree): Boolean
- Definition Classes
- WartTraverser
- def isWartAnnotation(u: WartUniverse)(a: scala.reflect.api.Universe.Annotation): Boolean
- Definition Classes
- WartTraverser
- val message: String
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- 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()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- def warning(u: WartUniverse)(pos: scala.reflect.api.Universe.Position, message: String): Unit
- Definition Classes
- WartTraverser
- lazy val wartName: String
- Definition Classes
- WartTraverser
- def wasInferred(u: WartUniverse)(t: scala.reflect.api.Universe.TypeTree): Boolean
- Definition Classes
- WartTraverser