Documentation ¶
Overview ¶
Package json provides the JSON encoding for YARPC.
To make outbound requests using this encoding,
client := json.New(channel) var resBody GetValueResponse resMeta, err := client.Call( yarpc.NewReqMeta(ctx).Procedure("getValue"), &GetValueRequest{...}, &resBody, )
To register a JSON procedure, define functions in the format,
f(meta yarpc.ReqMeta, body $reqBody) ($resBody, yarpc.ResMeta, error)
Where '$reqBody' and '$resBody' are either pointers to structs representing your request and response objects, or map[string]interface{}.
Use the Register and Procedure functions to register the procedures with a Registry.
json.Register(r, json.Procedure("getValue", GetValue)) json.Register(r, json.Procedure("setValue", SetValue))
Index ¶
Constants ¶
const Encoding transport.Encoding = "json"
Encoding is the name of this encoding.
Variables ¶
This section is empty.
Functions ¶
func Register ¶
func Register(reg transport.Registry, registrant Registrant)
Register registers the procedures defined by the given JSON registrant with the given registry.
Handlers must have a signature similar to the following or the system will panic.
f(ctx context.Context, reqMeta yarpc.ReqMeta, body $reqBody) ($resBody, yarpc.ResMeta, error)
Where $reqBody and $resBody are a map[string]interface{} or pointers to structs.
Types ¶
type Client ¶
type Client interface { // Call performs an outbound JSON request. // // resBodyOut is a pointer to a value that can be filled with // json.Unmarshal. // // Returns the response or an error if the request failed. Call(ctx context.Context, reqMeta yarpc.CallReqMeta, reqBody interface{}, resBodyOut interface{}) (yarpc.CallResMeta, error) }
Client makes JSON requests to a single service.
type Registrant ¶
type Registrant interface {
// contains filtered or unexported methods
}
Registrant is used for types that define or know about different JSON procedures.
func Procedure ¶
func Procedure(name string, handler interface{}) Registrant
Procedure builds a Registrant with a single procedure in it. handler must be a function with a signature similar to,
f(ctx context.Context, reqMeta yarpc.ReqMeta, body $reqBody) ($resBody, yarpc.ResMeta, error)
Where $reqBody and $resBody are a map[string]interface{} or pointers to structs.