Files
concurrency-in-action/source/listing_c.6.cpp
2018-10-18 00:40:34 -05:00

99 lines
2.2 KiB
C++

struct withdraw {
std::string account;
unsigned amount;
mutable messaging::sender atm_queue;
withdraw(std::string const& account_,
unsigned amount_,
messaging::sender atm_queue_)
: account(account_), amount(amount_), atm_queue(atm_queue_)
{
}
};
struct withdraw_ok {
};
struct withdraw_denied {
};
struct cancel_withdrawal {
std::string account;
unsigned amount;
cancel_withdrawal(std::string const& account_, unsigned amount_)
: account(account_), amount(amount_)
{
}
};
struct withdrawal_processed {
std::string account;
unsigned amount;
withdrawal_processed(std::string const& account_, unsigned amount_)
: account(account_), amount(amount_)
{
}
};
struct card_inserted {
std::string account;
explicit card_inserted(std::string const& account_) : account(account_) {}
};
struct digit_pressed {
char digit;
explicit digit_pressed(char digit_) : digit(digit_) {}
};
struct clear_last_pressed {
};
struct eject_card {
};
struct withdraw_pressed {
unsigned amount;
explicit withdraw_pressed(unsigned amount_) : amount(amount_) {}
};
struct cancel_pressed {
};
struct issue_money {
unsigned amount;
issue_money(unsigned amount_) : amount(amount_) {}
};
struct verify_pin {
std::string account;
std::string pin;
mutable messaging::sender atm_queue;
verify_pin(std::string const& account_,
std::string const& pin_,
messaging::sender atm_queue_)
: account(account_), pin(pin_), atm_queue(atm_queue_)
{
}
};
struct pin_verified {
};
struct pin_incorrect {
};
struct display_enter_pin {
};
struct display_enter_card {
};
struct display_insufficient_funds {
};
struct display_withdrawal_cancelled {
};
struct display_pin_incorrect_message {
};
struct display_withdrawal_options {
};
struct get_balance {
std::string account;
mutable messaging::sender atm_queue;
get_balance(std::string const& account_, messaging::sender atm_queue_)
: account(account_), atm_queue(atm_queue_)
{
}
};
struct balance {
unsigned amount;
explicit balance(unsigned amount_) : amount(amount_) {}
};
struct display_balance {
unsigned amount;
explicit display_balance(unsigned amount_) : amount(amount_) {}
};
struct balance_pressed {
};