Documentation

Overview

Package json provides the JSON encoding for YARPC.

To make outbound requests using this encoding,

client := json.New(clientConfig)
var resBody GetValueResponse
err := client.Call(ctx, "getValue", &GetValueRequest{...}, &resBody)

To register a JSON procedure, define functions in the format,

f(ctx context.Context, body $reqBody) ($resBody, error)

Where '$reqBody' and '$resBody' are either pointers to structs representing your request and response objects, or map[string]interface{}.

Use the Procedure function to build procedures to register against a Router.

dispatcher.Register(json.Procedure("getValue", GetValue))
dispatcher.Register(json.Procedure("setValue", SetValue))

Similarly, to register a oneway JSON procedure, define functions in the format,

f(ctx context.Context, body $reqBody) error

Where $reqBody is a map[string]interface{} or pointer to a struct.

Use the OnewayProcedure function to build procedures to register against a Router.

dispatcher.Register(json.OnewayProcedure("setValue", SetValue))
dispatcher.Register(json.OnewayProcedure("runTask", RunTask))

Index

Constants

View Source
const Encoding transport.Encoding = "json"

Encoding is the name of this encoding.

Variables

This section is empty.

Functions

func OnewayProcedure

func OnewayProcedure(name string, handler interface{}) []transport.Procedure

OnewayProcedure builds a Procedure from the given JSON handler. handler must be a function with a signature similar to,

f(ctx context.Context, body $reqBody) error

Where $reqBody is a map[string]interface{} or pointer to a struct.

func Procedure

func Procedure(name string, handler interface{}) []transport.Procedure

Procedure builds a Procedure from the given JSON handler. handler must be a function with a signature similar to,

f(ctx context.Context, body $reqBody) ($resBody, error)

Where $reqBody and $resBody are a map[string]interface{} or pointers to structs.

func Register

func Register(r transport.RouteTable, rs []transport.Procedure)

Register calls the RouteTable's Register method.

This function exists for backwards compatibility only. It will be removed in a future version.

Deprecated: Use the RouteTable's Register method directly.

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, procedure string, reqBody interface{}, resBodyOut interface{}, opts ...yarpc.CallOption) error
	CallOneway(ctx context.Context, procedure string, reqBody interface{}, opts ...yarpc.CallOption) (transport.Ack, error)
}

Client makes JSON requests to a single service.

func New

New builds a new JSON client.