blob: 11a8907d6fcf59ab36e552a7779969e661ce2f16 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.examples.services;
/// A Service representing a BankAccount, with two views of the data: read-only, and read-write.
service BankAccount {
read_only client_end:ReadOnlyAccount;
read_write client_end:ReadWriteAccount;
};
/// Provides read-only access to a bank account.
protocol ReadOnlyAccount {
/// Returns the bank account owner's name.
GetOwner() -> (struct {
owner string:MAX;
});
/// Returns the bank account's current balance in cents.
GetBalance() -> (struct {
balance int64;
});
};
/// Provides read-write access to a bank account.
protocol ReadWriteAccount {
compose ReadOnlyAccount;
/// Withdraws `amount` cents from the bank account.
/// Returns false if the account had insufficient funds.
Debit(struct {
amount int64;
}) -> (struct {
succeeded bool;
});
/// Deposits `amount` cents to the bank account.
Credit(struct {
amount int64;
}) -> ();
};