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

yarpc / yarpc-go / 1283

Build:
DEFAULT BRANCH: master
Ran 27 Jun 2016 09:30PM UTC
Jobs 2
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

pending completion
1283

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

3629 of 4126 relevant lines covered (87.95%)

1.86 hits per line

Jobs
ID Job ID Ran Files Coverage
1 1283.1 27 Jun 2016 09:31PM UTC 0
87.95
Travis Job 1283.1
2 1283.2 27 Jun 2016 09:30PM UTC 0
87.42
Travis Job 1283.2
Source Files on build 1283
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #1283
  • ac129bbf on github
  • Prev Build on master (#1268)
  • Next Build on master (#1288)
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

© 2025 Coveralls, Inc