halotukozak.mrpc.meta

Members list

Type members

Classlikes

trait RpcMetadataCompanion[M[_]]

User-facing metadata entry point, mirroring commons RpcMetadataCompanion. A concrete metadata class's COMPANION mixes this in, parameterized by the metadata type constructor M[_], to expose materialize[Real]: M[Real] — the metadata-class-param-driven derivation.

User-facing metadata entry point, mirroring commons RpcMetadataCompanion. A concrete metadata class's COMPANION mixes this in, parameterized by the metadata type constructor M[_], to expose materialize[Real]: M[Real] — the metadata-class-param-driven derivation.

Example (research §"Code Examples"):

 final case class TraitMeta[T](
   @reifyName name: String,
   @rpcMethodMetadata @multi methods: List[MethodMeta[?]],
 )
 object TraitMeta extends RpcMetadataCompanion[TraitMeta]
 // ...
 val md: TraitMeta[SampleApi] = TraitMeta.materialize[SampleApi]

The macro reads M's primary-constructor params, classifies each by its steering annotation, and fills it from the real trait's halotukozak.made.Done structure — reusing RpcName.computeAll for resolved names so metadata names cannot drift from the engine's.

Attributes

Source
RpcMetadataCompanion.scala
Supertypes
class Object
trait Matchable
class Any
trait TypedMetadata[T]

The phantom base of every user metadata class, mirroring commons metadata.scala:319's TypedMetadata[T].

The phantom base of every user metadata class, mirroring commons metadata.scala:319's TypedMetadata[T].

T is the type the metadata DESCRIBES — a method's result type or a parameter's type. It carries no field; it exists so a metadata class can declare WHAT it is metadata-for, and so the materialize macro / @composite recursion can summon nested metadata for the right T. A metadata class extends TypedMetadata[T] and has its constructor params steered by the marker annotations (@reifyName/@reifyAnnot/@infer/@composite/@rpcMethodMetadata/@rpcParamMetadata).

Attributes

Source
TypedMetadata.scala
Supertypes
class Object
trait Matchable
class Any