blob: 1b4bc4a367dc2cfbf661a8d11428ad0427aac189 [file] [log] [blame]
Andres Erbsen975c8832014-06-18 12:06:07 -07001// This file was auto-generated by the veyron vdl tool.
2// Source: discharger.vdl
3
Ali Ghassemi46bb7e02014-06-19 15:38:48 -07004package security
Andres Erbsen975c8832014-06-18 12:06:07 -07005
6import (
7 "veyron2/security"
8
9 // The non-user imports are prefixed with "_gen_" to prevent collisions.
Matt Rosencrantzbf85d542014-08-22 13:31:14 -070010 _gen_veyron2 "veyron2"
Andres Erbsen975c8832014-06-18 12:06:07 -070011 _gen_context "veyron2/context"
12 _gen_ipc "veyron2/ipc"
13 _gen_naming "veyron2/naming"
Todd Wang0ecdd7a2014-07-14 16:24:38 -070014 _gen_vdlutil "veyron2/vdl/vdlutil"
Andres Erbsen975c8832014-06-18 12:06:07 -070015 _gen_wiretype "veyron2/wiretype"
16)
17
Shyam Jayaramanc4aed6e2014-07-22 14:25:06 -070018// TODO(bprosnitz) Remove this line once signatures are updated to use typevals.
19// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only bootstrap types are used on interfaces.
20const _ = _gen_wiretype.TypeIDInvalid
21
Asim Shankara94e5072014-08-19 18:18:36 -070022// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
Andres Erbsen975c8832014-06-18 12:06:07 -070023// Discharger is the interface the client binds and uses.
24// Discharger_ExcludingUniversal is the interface without internal framework-added methods
25// to enable embedding without method collisions. Not to be used directly by clients.
26type Discharger_ExcludingUniversal interface {
27 // Discharge is called by a principal that holds a blessing with a third
28 // party caveat and seeks to get a discharge that proves the fulfillment of
29 // this caveat.
Asim Shankara94e5072014-08-19 18:18:36 -070030 //
Andres Erbsen975c8832014-06-18 12:06:07 -070031 // Caveat and Discharge are of type ThirdPartyCaveat and ThirdPartyDischarge
32 // respectively. (not enforced here because vdl does not know these types)
33 // TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
34 // and Discharge and use those here?
Asim Shankara94e5072014-08-19 18:18:36 -070035 Discharge(ctx _gen_context.T, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error)
Andres Erbsen975c8832014-06-18 12:06:07 -070036}
37type Discharger interface {
38 _gen_ipc.UniversalServiceMethods
39 Discharger_ExcludingUniversal
40}
41
42// DischargerService is the interface the server implements.
43type DischargerService interface {
44
45 // Discharge is called by a principal that holds a blessing with a third
46 // party caveat and seeks to get a discharge that proves the fulfillment of
47 // this caveat.
Asim Shankara94e5072014-08-19 18:18:36 -070048 //
Andres Erbsen975c8832014-06-18 12:06:07 -070049 // Caveat and Discharge are of type ThirdPartyCaveat and ThirdPartyDischarge
50 // respectively. (not enforced here because vdl does not know these types)
51 // TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
52 // and Discharge and use those here?
Asim Shankara94e5072014-08-19 18:18:36 -070053 Discharge(context _gen_ipc.ServerContext, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus) (reply _gen_vdlutil.Any, err error)
Andres Erbsen975c8832014-06-18 12:06:07 -070054}
55
56// BindDischarger returns the client stub implementing the Discharger
57// interface.
58//
59// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
60// global Runtime is used.
61func BindDischarger(name string, opts ..._gen_ipc.BindOpt) (Discharger, error) {
62 var client _gen_ipc.Client
63 switch len(opts) {
64 case 0:
Matt Rosencrantzbf85d542014-08-22 13:31:14 -070065 // Do nothing.
Andres Erbsen975c8832014-06-18 12:06:07 -070066 case 1:
Matt Rosencrantzbf85d542014-08-22 13:31:14 -070067 if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
68 client = clientOpt
69 } else {
Todd Wang0ecdd7a2014-07-14 16:24:38 -070070 return nil, _gen_vdlutil.ErrUnrecognizedOption
Andres Erbsen975c8832014-06-18 12:06:07 -070071 }
72 default:
Todd Wang0ecdd7a2014-07-14 16:24:38 -070073 return nil, _gen_vdlutil.ErrTooManyOptionsToBind
Andres Erbsen975c8832014-06-18 12:06:07 -070074 }
Matt Rosencrantzbf85d542014-08-22 13:31:14 -070075 stub := &clientStubDischarger{defaultClient: client, name: name}
Andres Erbsen975c8832014-06-18 12:06:07 -070076
77 return stub, nil
78}
79
80// NewServerDischarger creates a new server stub.
81//
82// It takes a regular server implementing the DischargerService
83// interface, and returns a new server stub.
84func NewServerDischarger(server DischargerService) interface{} {
85 return &ServerStubDischarger{
86 service: server,
87 }
88}
89
90// clientStubDischarger implements Discharger.
91type clientStubDischarger struct {
Matt Rosencrantzbf85d542014-08-22 13:31:14 -070092 defaultClient _gen_ipc.Client
93 name string
94}
95
96func (__gen_c *clientStubDischarger) client(ctx _gen_context.T) _gen_ipc.Client {
97 if __gen_c.defaultClient != nil {
98 return __gen_c.defaultClient
99 }
100 return _gen_veyron2.RuntimeFromContext(ctx).Client()
Andres Erbsen975c8832014-06-18 12:06:07 -0700101}
102
Asim Shankara94e5072014-08-19 18:18:36 -0700103func (__gen_c *clientStubDischarger) Discharge(ctx _gen_context.T, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error) {
Andres Erbsen975c8832014-06-18 12:06:07 -0700104 var call _gen_ipc.Call
Matt Rosencrantzbf85d542014-08-22 13:31:14 -0700105 if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Discharge", []interface{}{Caveat, Impetus}, opts...); err != nil {
Andres Erbsen975c8832014-06-18 12:06:07 -0700106 return
107 }
108 if ierr := call.Finish(&reply, &err); ierr != nil {
109 err = ierr
110 }
111 return
112}
113
114func (__gen_c *clientStubDischarger) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
115 var call _gen_ipc.Call
Matt Rosencrantzbf85d542014-08-22 13:31:14 -0700116 if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
Andres Erbsen975c8832014-06-18 12:06:07 -0700117 return
118 }
119 if ierr := call.Finish(&reply, &err); ierr != nil {
120 err = ierr
121 }
122 return
123}
124
125func (__gen_c *clientStubDischarger) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
126 var call _gen_ipc.Call
Matt Rosencrantzbf85d542014-08-22 13:31:14 -0700127 if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
Andres Erbsen975c8832014-06-18 12:06:07 -0700128 return
129 }
130 if ierr := call.Finish(&reply, &err); ierr != nil {
131 err = ierr
132 }
133 return
134}
135
136func (__gen_c *clientStubDischarger) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
137 var call _gen_ipc.Call
Matt Rosencrantzbf85d542014-08-22 13:31:14 -0700138 if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
Andres Erbsen975c8832014-06-18 12:06:07 -0700139 return
140 }
141 if ierr := call.Finish(&reply, &err); ierr != nil {
142 err = ierr
143 }
144 return
145}
146
147// ServerStubDischarger wraps a server that implements
148// DischargerService and provides an object that satisfies
149// the requirements of veyron2/ipc.ReflectInvoker.
150type ServerStubDischarger struct {
151 service DischargerService
152}
153
154func (__gen_s *ServerStubDischarger) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
155 // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
156 // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
157 // This will change when it is replaced with Signature().
158 switch method {
159 case "Discharge":
Tilak Sharmaab4f10d2014-07-23 11:28:37 -0700160 return []interface{}{security.Label(2)}, nil
Andres Erbsen975c8832014-06-18 12:06:07 -0700161 default:
162 return nil, nil
163 }
164}
165
166func (__gen_s *ServerStubDischarger) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
167 result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
168 result.Methods["Discharge"] = _gen_ipc.MethodSignature{
169 InArgs: []_gen_ipc.MethodArgument{
170 {Name: "Caveat", Type: 65},
Asim Shankara94e5072014-08-19 18:18:36 -0700171 {Name: "Impetus", Type: 67},
Andres Erbsen975c8832014-06-18 12:06:07 -0700172 },
173 OutArgs: []_gen_ipc.MethodArgument{
174 {Name: "Discharge", Type: 65},
Asim Shankara94e5072014-08-19 18:18:36 -0700175 {Name: "err", Type: 68},
Andres Erbsen975c8832014-06-18 12:06:07 -0700176 },
177 }
178
Todd Wang0ecdd7a2014-07-14 16:24:38 -0700179 result.TypeDefs = []_gen_vdlutil.Any{
Asim Shankara94e5072014-08-19 18:18:36 -0700180 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
181 []_gen_wiretype.FieldType{
182 _gen_wiretype.FieldType{Type: 0x41, Name: "Server"},
183 _gen_wiretype.FieldType{Type: 0x3, Name: "Method"},
184 _gen_wiretype.FieldType{Type: 0x42, Name: "Arguments"},
185 },
186 "veyron2/security.DischargeImpetus", []string(nil)},
187 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
Andres Erbsen975c8832014-06-18 12:06:07 -0700188
189 return result, nil
190}
191
192func (__gen_s *ServerStubDischarger) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
193 if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
194 return unresolver.UnresolveStep(call)
195 }
196 if call.Server() == nil {
197 return
198 }
199 var published []string
200 if published, err = call.Server().Published(); err != nil || published == nil {
201 return
202 }
203 reply = make([]string, len(published))
204 for i, p := range published {
205 reply[i] = _gen_naming.Join(p, call.Name())
206 }
207 return
208}
209
Asim Shankara94e5072014-08-19 18:18:36 -0700210func (__gen_s *ServerStubDischarger) Discharge(call _gen_ipc.ServerCall, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus) (reply _gen_vdlutil.Any, err error) {
211 reply, err = __gen_s.service.Discharge(call, Caveat, Impetus)
Andres Erbsen975c8832014-06-18 12:06:07 -0700212 return
213}