tree 0aad4d3bcb578e73f8cead5eb0b4dfc50363b1c0
parent 91e8a85973116a7eee278ce1d854947747ae4750
author Todd Wang <toddw@google.com> 1429164847 -0700
committer Todd Wang <toddw@google.com> 1429164850 -0700

playground: Move context.T out of rpc.ServerCall.

The purpose of this change is to make our usage of context.T more
consistent; it was a bit lame that we gave guidance to never wrap
context.T in another type, but were doing it ourselves.  The JS
code is also being changed to follow this convention (in separate
CLs), so we'll be consistent between Go and JS as well.

The server implementation used to look like this:
func (*impl) Foo(call rpc.ServerCall, ...)

Now it looks like this:
func (*impl) Foo(ctx *context.T, call rpc.ServerCall, ...)

Also added a ServerCall.Security() function, which returns the
security.Call.  The security.Call is still embedded inside
context.T for now; a subsequent change will remove it from
context.T and add an explicit security.Call argument where
necessary.  That's a separate CL since some of the choices may be
more controversial, and it's a smaller set of changes.

MultiPart: 7/8
Change-Id: I230fc7a702cd4b976e8fd9d7ebbbf75b5edb2a5c
