blob: 7782caf690925c29b202cde5eb07a5093026954e [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.
Andres Erbsen975c8832014-06-18 12:06:07 -070010 _gen_context "veyron2/context"
11 _gen_ipc "veyron2/ipc"
12 _gen_naming "veyron2/naming"
13 _gen_rt "veyron2/rt"
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:
65 client = _gen_rt.R().Client()
66 case 1:
67 switch o := opts[0].(type) {
Andres Erbsen975c8832014-06-18 12:06:07 -070068 case _gen_ipc.Client:
69 client = o
70 default:
Todd Wang0ecdd7a2014-07-14 16:24:38 -070071 return nil, _gen_vdlutil.ErrUnrecognizedOption
Andres Erbsen975c8832014-06-18 12:06:07 -070072 }
73 default:
Todd Wang0ecdd7a2014-07-14 16:24:38 -070074 return nil, _gen_vdlutil.ErrTooManyOptionsToBind
Andres Erbsen975c8832014-06-18 12:06:07 -070075 }
76 stub := &clientStubDischarger{client: client, name: name}
77
78 return stub, nil
79}
80
81// NewServerDischarger creates a new server stub.
82//
83// It takes a regular server implementing the DischargerService
84// interface, and returns a new server stub.
85func NewServerDischarger(server DischargerService) interface{} {
86 return &ServerStubDischarger{
87 service: server,
88 }
89}
90
91// clientStubDischarger implements Discharger.
92type clientStubDischarger struct {
93 client _gen_ipc.Client
94 name string
95}
96
Asim Shankara94e5072014-08-19 18:18:36 -070097func (__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 -070098 var call _gen_ipc.Call
Asim Shankara94e5072014-08-19 18:18:36 -070099 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Discharge", []interface{}{Caveat, Impetus}, opts...); err != nil {
Andres Erbsen975c8832014-06-18 12:06:07 -0700100 return
101 }
102 if ierr := call.Finish(&reply, &err); ierr != nil {
103 err = ierr
104 }
105 return
106}
107
108func (__gen_c *clientStubDischarger) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
109 var call _gen_ipc.Call
110 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
111 return
112 }
113 if ierr := call.Finish(&reply, &err); ierr != nil {
114 err = ierr
115 }
116 return
117}
118
119func (__gen_c *clientStubDischarger) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
120 var call _gen_ipc.Call
121 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
122 return
123 }
124 if ierr := call.Finish(&reply, &err); ierr != nil {
125 err = ierr
126 }
127 return
128}
129
130func (__gen_c *clientStubDischarger) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
131 var call _gen_ipc.Call
132 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
133 return
134 }
135 if ierr := call.Finish(&reply, &err); ierr != nil {
136 err = ierr
137 }
138 return
139}
140
141// ServerStubDischarger wraps a server that implements
142// DischargerService and provides an object that satisfies
143// the requirements of veyron2/ipc.ReflectInvoker.
144type ServerStubDischarger struct {
145 service DischargerService
146}
147
148func (__gen_s *ServerStubDischarger) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
149 // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
150 // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
151 // This will change when it is replaced with Signature().
152 switch method {
153 case "Discharge":
Tilak Sharmaab4f10d2014-07-23 11:28:37 -0700154 return []interface{}{security.Label(2)}, nil
Andres Erbsen975c8832014-06-18 12:06:07 -0700155 default:
156 return nil, nil
157 }
158}
159
160func (__gen_s *ServerStubDischarger) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
161 result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
162 result.Methods["Discharge"] = _gen_ipc.MethodSignature{
163 InArgs: []_gen_ipc.MethodArgument{
164 {Name: "Caveat", Type: 65},
Asim Shankara94e5072014-08-19 18:18:36 -0700165 {Name: "Impetus", Type: 67},
Andres Erbsen975c8832014-06-18 12:06:07 -0700166 },
167 OutArgs: []_gen_ipc.MethodArgument{
168 {Name: "Discharge", Type: 65},
Asim Shankara94e5072014-08-19 18:18:36 -0700169 {Name: "err", Type: 68},
Andres Erbsen975c8832014-06-18 12:06:07 -0700170 },
171 }
172
Todd Wang0ecdd7a2014-07-14 16:24:38 -0700173 result.TypeDefs = []_gen_vdlutil.Any{
Asim Shankara94e5072014-08-19 18:18:36 -0700174 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
175 []_gen_wiretype.FieldType{
176 _gen_wiretype.FieldType{Type: 0x41, Name: "Server"},
177 _gen_wiretype.FieldType{Type: 0x3, Name: "Method"},
178 _gen_wiretype.FieldType{Type: 0x42, Name: "Arguments"},
179 },
180 "veyron2/security.DischargeImpetus", []string(nil)},
181 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
Andres Erbsen975c8832014-06-18 12:06:07 -0700182
183 return result, nil
184}
185
186func (__gen_s *ServerStubDischarger) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
187 if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
188 return unresolver.UnresolveStep(call)
189 }
190 if call.Server() == nil {
191 return
192 }
193 var published []string
194 if published, err = call.Server().Published(); err != nil || published == nil {
195 return
196 }
197 reply = make([]string, len(published))
198 for i, p := range published {
199 reply[i] = _gen_naming.Join(p, call.Name())
200 }
201 return
202}
203
Asim Shankara94e5072014-08-19 18:18:36 -0700204func (__gen_s *ServerStubDischarger) Discharge(call _gen_ipc.ServerCall, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus) (reply _gen_vdlutil.Any, err error) {
205 reply, err = __gen_s.service.Discharge(call, Caveat, Impetus)
Andres Erbsen975c8832014-06-18 12:06:07 -0700206 return
207}