blob: 207d3546db2427918944d16ecc1366b3deb9791d [file] [log] [blame]
Alex Fandrianto8b6e1ea2014-06-16 13:47:30 -07001// This file was auto-generated by the veyron vdl tool.
2// Source: bank.vdl
3
4/*
5Package bank implements an application to manipulate virtual money. The client's
6Veyron Identity determines the account they can manipulate. New identity's make
7a new account. Clients can deposit, withdraw, transfer, or query their balance
8in virtual currency.
9*/
10package bank
11
12import (
13 "veyron2/security"
14
15 // The non-user imports are prefixed with "_gen_" to prevent collisions.
16 _gen_veyron2 "veyron2"
17 _gen_context "veyron2/context"
18 _gen_ipc "veyron2/ipc"
19 _gen_naming "veyron2/naming"
20 _gen_rt "veyron2/rt"
21 _gen_vdl "veyron2/vdl"
22 _gen_wiretype "veyron2/wiretype"
23)
24
25// Bank allows clients to store virtual money. Certain implementations can use persistent storage.
26// Uses the client's Veyron Identity to determine account access.
27// Bank is the interface the client binds and uses.
28// Bank_ExcludingUniversal is the interface without internal framework-added methods
29// to enable embedding without method collisions. Not to be used directly by clients.
30type Bank_ExcludingUniversal interface {
31 // Connect causes the bank to bless a new user (string) and return their bank account number (int64). Existing users are not blessed (""), but still receive their account number (int64).
32 Connect(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (newIdentity string, accountNumber int64, err error)
33}
34type Bank interface {
35 _gen_ipc.UniversalServiceMethods
36 Bank_ExcludingUniversal
37}
38
39// BankService is the interface the server implements.
40type BankService interface {
41
42 // Connect causes the bank to bless a new user (string) and return their bank account number (int64). Existing users are not blessed (""), but still receive their account number (int64).
43 Connect(context _gen_ipc.ServerContext) (newIdentity string, accountNumber int64, err error)
44}
45
46// BindBank returns the client stub implementing the Bank
47// interface.
48//
49// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
50// global Runtime is used.
51func BindBank(name string, opts ..._gen_ipc.BindOpt) (Bank, error) {
52 var client _gen_ipc.Client
53 switch len(opts) {
54 case 0:
55 client = _gen_rt.R().Client()
56 case 1:
57 switch o := opts[0].(type) {
58 case _gen_veyron2.Runtime:
59 client = o.Client()
60 case _gen_ipc.Client:
61 client = o
62 default:
63 return nil, _gen_vdl.ErrUnrecognizedOption
64 }
65 default:
66 return nil, _gen_vdl.ErrTooManyOptionsToBind
67 }
68 stub := &clientStubBank{client: client, name: name}
69
70 return stub, nil
71}
72
73// NewServerBank creates a new server stub.
74//
75// It takes a regular server implementing the BankService
76// interface, and returns a new server stub.
77func NewServerBank(server BankService) interface{} {
78 return &ServerStubBank{
79 service: server,
80 }
81}
82
83// clientStubBank implements Bank.
84type clientStubBank struct {
85 client _gen_ipc.Client
86 name string
87}
88
89func (__gen_c *clientStubBank) Connect(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (newIdentity string, accountNumber int64, err error) {
90 var call _gen_ipc.Call
91 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Connect", nil, opts...); err != nil {
92 return
93 }
94 if ierr := call.Finish(&newIdentity, &accountNumber, &err); ierr != nil {
95 err = ierr
96 }
97 return
98}
99
100func (__gen_c *clientStubBank) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
101 var call _gen_ipc.Call
102 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
103 return
104 }
105 if ierr := call.Finish(&reply, &err); ierr != nil {
106 err = ierr
107 }
108 return
109}
110
111func (__gen_c *clientStubBank) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
112 var call _gen_ipc.Call
113 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
114 return
115 }
116 if ierr := call.Finish(&reply, &err); ierr != nil {
117 err = ierr
118 }
119 return
120}
121
122func (__gen_c *clientStubBank) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
123 var call _gen_ipc.Call
124 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
125 return
126 }
127 if ierr := call.Finish(&reply, &err); ierr != nil {
128 err = ierr
129 }
130 return
131}
132
133// ServerStubBank wraps a server that implements
134// BankService and provides an object that satisfies
135// the requirements of veyron2/ipc.ReflectInvoker.
136type ServerStubBank struct {
137 service BankService
138}
139
140func (__gen_s *ServerStubBank) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
141 // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
142 // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
143 // This will change when it is replaced with Signature().
144 switch method {
145 case "Connect":
146 return []interface{}{security.Label(2)}, nil
147 default:
148 return nil, nil
149 }
150}
151
152func (__gen_s *ServerStubBank) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
153 result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
154 result.Methods["Connect"] = _gen_ipc.MethodSignature{
155 InArgs: []_gen_ipc.MethodArgument{},
156 OutArgs: []_gen_ipc.MethodArgument{
157 {Name: "newIdentity", Type: 3},
158 {Name: "accountNumber", Type: 37},
159 {Name: "err", Type: 65},
160 },
161 }
162
163 result.TypeDefs = []_gen_vdl.Any{
164 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
165
166 return result, nil
167}
168
169func (__gen_s *ServerStubBank) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
170 if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
171 return unresolver.UnresolveStep(call)
172 }
173 if call.Server() == nil {
174 return
175 }
176 var published []string
177 if published, err = call.Server().Published(); err != nil || published == nil {
178 return
179 }
180 reply = make([]string, len(published))
181 for i, p := range published {
182 reply[i] = _gen_naming.Join(p, call.Name())
183 }
184 return
185}
186
187func (__gen_s *ServerStubBank) Connect(call _gen_ipc.ServerCall) (newIdentity string, accountNumber int64, err error) {
188 newIdentity, accountNumber, err = __gen_s.service.Connect(call)
189 return
190}
191
192// The BankAccount can only be accessed by blessed users
193// BankAccount is the interface the client binds and uses.
194// BankAccount_ExcludingUniversal is the interface without internal framework-added methods
195// to enable embedding without method collisions. Not to be used directly by clients.
196type BankAccount_ExcludingUniversal interface {
197 // Deposit adds the amount given to this account.
198 Deposit(ctx _gen_context.T, amount int64, opts ..._gen_ipc.CallOpt) (err error)
199 // Withdraw reduces the amount given from this account.
200 Withdraw(ctx _gen_context.T, amount int64, opts ..._gen_ipc.CallOpt) (err error)
201 // Transfer moves the amount given to the receiver's account.
202 Transfer(ctx _gen_context.T, receiver int64, amount int64, opts ..._gen_ipc.CallOpt) (err error)
203 // Balance returns the amount stored in this account.
204 Balance(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply int64, err error)
205}
206type BankAccount interface {
207 _gen_ipc.UniversalServiceMethods
208 BankAccount_ExcludingUniversal
209}
210
211// BankAccountService is the interface the server implements.
212type BankAccountService interface {
213
214 // Deposit adds the amount given to this account.
215 Deposit(context _gen_ipc.ServerContext, amount int64) (err error)
216 // Withdraw reduces the amount given from this account.
217 Withdraw(context _gen_ipc.ServerContext, amount int64) (err error)
218 // Transfer moves the amount given to the receiver's account.
219 Transfer(context _gen_ipc.ServerContext, receiver int64, amount int64) (err error)
220 // Balance returns the amount stored in this account.
221 Balance(context _gen_ipc.ServerContext) (reply int64, err error)
222}
223
224// BindBankAccount returns the client stub implementing the BankAccount
225// interface.
226//
227// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
228// global Runtime is used.
229func BindBankAccount(name string, opts ..._gen_ipc.BindOpt) (BankAccount, error) {
230 var client _gen_ipc.Client
231 switch len(opts) {
232 case 0:
233 client = _gen_rt.R().Client()
234 case 1:
235 switch o := opts[0].(type) {
236 case _gen_veyron2.Runtime:
237 client = o.Client()
238 case _gen_ipc.Client:
239 client = o
240 default:
241 return nil, _gen_vdl.ErrUnrecognizedOption
242 }
243 default:
244 return nil, _gen_vdl.ErrTooManyOptionsToBind
245 }
246 stub := &clientStubBankAccount{client: client, name: name}
247
248 return stub, nil
249}
250
251// NewServerBankAccount creates a new server stub.
252//
253// It takes a regular server implementing the BankAccountService
254// interface, and returns a new server stub.
255func NewServerBankAccount(server BankAccountService) interface{} {
256 return &ServerStubBankAccount{
257 service: server,
258 }
259}
260
261// clientStubBankAccount implements BankAccount.
262type clientStubBankAccount struct {
263 client _gen_ipc.Client
264 name string
265}
266
267func (__gen_c *clientStubBankAccount) Deposit(ctx _gen_context.T, amount int64, opts ..._gen_ipc.CallOpt) (err error) {
268 var call _gen_ipc.Call
269 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Deposit", []interface{}{amount}, opts...); err != nil {
270 return
271 }
272 if ierr := call.Finish(&err); ierr != nil {
273 err = ierr
274 }
275 return
276}
277
278func (__gen_c *clientStubBankAccount) Withdraw(ctx _gen_context.T, amount int64, opts ..._gen_ipc.CallOpt) (err error) {
279 var call _gen_ipc.Call
280 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Withdraw", []interface{}{amount}, opts...); err != nil {
281 return
282 }
283 if ierr := call.Finish(&err); ierr != nil {
284 err = ierr
285 }
286 return
287}
288
289func (__gen_c *clientStubBankAccount) Transfer(ctx _gen_context.T, receiver int64, amount int64, opts ..._gen_ipc.CallOpt) (err error) {
290 var call _gen_ipc.Call
291 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Transfer", []interface{}{receiver, amount}, opts...); err != nil {
292 return
293 }
294 if ierr := call.Finish(&err); ierr != nil {
295 err = ierr
296 }
297 return
298}
299
300func (__gen_c *clientStubBankAccount) Balance(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply int64, err error) {
301 var call _gen_ipc.Call
302 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Balance", nil, opts...); err != nil {
303 return
304 }
305 if ierr := call.Finish(&reply, &err); ierr != nil {
306 err = ierr
307 }
308 return
309}
310
311func (__gen_c *clientStubBankAccount) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
312 var call _gen_ipc.Call
313 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
314 return
315 }
316 if ierr := call.Finish(&reply, &err); ierr != nil {
317 err = ierr
318 }
319 return
320}
321
322func (__gen_c *clientStubBankAccount) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
323 var call _gen_ipc.Call
324 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
325 return
326 }
327 if ierr := call.Finish(&reply, &err); ierr != nil {
328 err = ierr
329 }
330 return
331}
332
333func (__gen_c *clientStubBankAccount) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
334 var call _gen_ipc.Call
335 if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
336 return
337 }
338 if ierr := call.Finish(&reply, &err); ierr != nil {
339 err = ierr
340 }
341 return
342}
343
344// ServerStubBankAccount wraps a server that implements
345// BankAccountService and provides an object that satisfies
346// the requirements of veyron2/ipc.ReflectInvoker.
347type ServerStubBankAccount struct {
348 service BankAccountService
349}
350
351func (__gen_s *ServerStubBankAccount) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
352 // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
353 // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
354 // This will change when it is replaced with Signature().
355 switch method {
356 case "Deposit":
357 return []interface{}{security.Label(2)}, nil
358 case "Withdraw":
359 return []interface{}{security.Label(2)}, nil
360 case "Transfer":
361 return []interface{}{security.Label(2)}, nil
362 case "Balance":
363 return []interface{}{security.Label(1)}, nil
364 default:
365 return nil, nil
366 }
367}
368
369func (__gen_s *ServerStubBankAccount) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
370 result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
371 result.Methods["Balance"] = _gen_ipc.MethodSignature{
372 InArgs: []_gen_ipc.MethodArgument{},
373 OutArgs: []_gen_ipc.MethodArgument{
374 {Name: "", Type: 37},
375 {Name: "", Type: 65},
376 },
377 }
378 result.Methods["Deposit"] = _gen_ipc.MethodSignature{
379 InArgs: []_gen_ipc.MethodArgument{
380 {Name: "amount", Type: 37},
381 },
382 OutArgs: []_gen_ipc.MethodArgument{
383 {Name: "", Type: 65},
384 },
385 }
386 result.Methods["Transfer"] = _gen_ipc.MethodSignature{
387 InArgs: []_gen_ipc.MethodArgument{
388 {Name: "receiver", Type: 37},
389 {Name: "amount", Type: 37},
390 },
391 OutArgs: []_gen_ipc.MethodArgument{
392 {Name: "", Type: 65},
393 },
394 }
395 result.Methods["Withdraw"] = _gen_ipc.MethodSignature{
396 InArgs: []_gen_ipc.MethodArgument{
397 {Name: "amount", Type: 37},
398 },
399 OutArgs: []_gen_ipc.MethodArgument{
400 {Name: "", Type: 65},
401 },
402 }
403
404 result.TypeDefs = []_gen_vdl.Any{
405 _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
406
407 return result, nil
408}
409
410func (__gen_s *ServerStubBankAccount) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
411 if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
412 return unresolver.UnresolveStep(call)
413 }
414 if call.Server() == nil {
415 return
416 }
417 var published []string
418 if published, err = call.Server().Published(); err != nil || published == nil {
419 return
420 }
421 reply = make([]string, len(published))
422 for i, p := range published {
423 reply[i] = _gen_naming.Join(p, call.Name())
424 }
425 return
426}
427
428func (__gen_s *ServerStubBankAccount) Deposit(call _gen_ipc.ServerCall, amount int64) (err error) {
429 err = __gen_s.service.Deposit(call, amount)
430 return
431}
432
433func (__gen_s *ServerStubBankAccount) Withdraw(call _gen_ipc.ServerCall, amount int64) (err error) {
434 err = __gen_s.service.Withdraw(call, amount)
435 return
436}
437
438func (__gen_s *ServerStubBankAccount) Transfer(call _gen_ipc.ServerCall, receiver int64, amount int64) (err error) {
439 err = __gen_s.service.Transfer(call, receiver, amount)
440 return
441}
442
443func (__gen_s *ServerStubBankAccount) Balance(call _gen_ipc.ServerCall) (reply int64, err error) {
444 reply, err = __gen_s.service.Balance(call)
445 return
446}