• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

yarpc / yarpc-go / 1283 / 2

Build:
DEFAULT BRANCH: master
Ran 27 Jun 2016 09:30PM UTC
Files 81
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Jun 2016 09:24PM UTC coverage: 87.421% (+0.2%) from 87.26%
1283.2

push

travis-ci

web-flow
Consolidate {Req,Res}Metas (#230)

This change combines the per-encoding `{Req,Res}Meta` objects into directional
top-level `{Req,Res}Meta` interfaces:

-   `ReqMeta`: Server-side inbound request metadata
-   `ResMeta`: Server-side outbound response metadata
-   `CallReqMeta`: Client-side outbound request metadata
-   `CallResMeta`: Client-side inbound response metadata

Note that the users will usually type out only the server-side variants for
their handlers. The inbound variants are read-only. The outbound variants
provide getters and fluid setters. Constructors are provided for the outbound
variants only:

```go
func NewReqMeta(ctx context.Context) CallReqMeta

func NewResMeta(ctx context.Context) ResMeta
```

Client usage:

-   JSON

    ```go
    var resp GetValueResponse
    resMeta, err := jsonClient.Call(
        yarpc.NewReqMeta(ctx).
            Procedure("hello").
            Headers(yarpc.NewHeaders().With("foo", "bar")),
        &GetValueRequest{
            // ...
        },
        &resp,
    )
    ```

-   Thrift

    ```go
    resBody, resMeta, err := keyValueClient.GetValue(
        yarpc.NewReqMeta(ctx).
            Headers(yarpc.NewHeaders().With("foo", "bar")),
        arg1,
        arg2,
        // ..
    )
    ```

Server usage:

-   JSON

    ```go
    func MyHandler(reqMeta yarpc.ReqMeta, reqBody *GetValueRequest) (
        *GetValueResponse, yarpc.ResMeta, error,
    ) {
        // ...

        resMeta := yarpc.NewResMeta(reqMeta.Context()).
            Headers(yarpc.NewHeaders().With("foo", "bar"))
        return &GetValueResponse{...}, resMeta, nil
    }
    ```

-   Thrift


    ```go
    func MyHandler(reqMeta yarpc.ReqMeta, arg1 Arg1Type, arg2 Arg2Type) (
        *MyResponse, yarpc.ResMeta, error,
    ) {
        // ...

        resMeta := yarpc.NewResMeta(reqMeta.Context()).
            Headers(yarpc.NewHeaders().With("foo", "bar"))
        return &MyResponse{...}, resMeta, nil
    }
    ```

The handler signatures are fairly similar. The difference is in the number of arguments accepted by the Thrift method.

---

Resolves #178

Related thriftrw-go change: https://github.com/thriftrw/thriftrw-go/pull/159

3607 of 4126 relevant lines covered (87.42%)

0.93 hits per line

Source Files on job 1283.2
  • Tree
  • List 0
  • Changed 25
  • Source Changed 25
  • Coverage Changed 22
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 1283
  • Travis Job 1283.2
  • ac129bbf on github
  • Prev Job for on master (#1268.2)
  • Next Job for on master (#1288.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc