{{with .Annotations.Doc -}} // {{.}} {{end -}} type {{.Node.Name}} struct { Client {{.G.Capnp}}.Client } {{ template "_typeid" .Node }} {{range .Methods -}} func (c {{$.Node.Name}}) {{.Name|title}}(ctx {{$.G.Imports.Context}}.Context, params func({{$.G.RemoteNodeName .Params $.Node}}) error, opts ...{{$.G.Capnp}}.CallOption) {{$.G.RemoteNodeName .Results $.Node}}_Promise { if c.Client == nil { return {{$.G.RemoteNodeName .Results $.Node}}_Promise{Pipeline: {{$.G.Capnp}}.NewPipeline({{$.G.Capnp}}.ErrorAnswer({{$.G.Capnp}}.ErrNullClient))} } call := &{{$.G.Capnp}}.Call{ Ctx: ctx, Method: {{$.G.Capnp}}.Method{ {{template "_interfaceMethod" .}} }, Options: {{$.G.Capnp}}.NewCallOptions(opts), } if params != nil { call.ParamsSize = {{$.G.ObjectSize .Params}} call.ParamsFunc = func(s {{$.G.Capnp}}.Struct) error { return params({{$.G.RemoteNodeName .Params $.Node}}{Struct: s}) } } return {{$.G.RemoteNodeName .Results $.Node}}_Promise{Pipeline: {{$.G.Capnp}}.NewPipeline(c.Client.Call(call))} } {{end}}