51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
int
|
|
main()
|
|
{
|
|
bank_machine bank;
|
|
interface_machine interface_hardware;
|
|
atm machine(bank.get_sender(), interface_hardware.get_sender());
|
|
std::thread bank_thread(&bank_machine::run, &bank);
|
|
std::thread if_thread(&interface_machine::run, &interface_hardware);
|
|
std::thread atm_thread(&atm::run, &machine);
|
|
messaging::sender atmqueue(machine.get_sender());
|
|
bool quit_pressed = false;
|
|
while (!quit_pressed) {
|
|
char c = getchar();
|
|
switch (c) {
|
|
case '0':
|
|
case '1':
|
|
case '2':
|
|
case '3':
|
|
case '4':
|
|
case '5':
|
|
case '6':
|
|
case '7':
|
|
case '8':
|
|
case '9':
|
|
atmqueue.send(digit_pressed(c));
|
|
break;
|
|
case 'b':
|
|
atmqueue.send(balance_pressed());
|
|
break;
|
|
case 'w':
|
|
atmqueue.send(withdraw_pressed(50));
|
|
break;
|
|
case 'c':
|
|
atmqueue.send(cancel_pressed());
|
|
break;
|
|
case 'q':
|
|
quit_pressed = true;
|
|
break;
|
|
case 'i':
|
|
atmqueue.send(card_inserted("acc1234"));
|
|
break;
|
|
}
|
|
}
|
|
bank.done();
|
|
machine.done();
|
|
interface_hardware.done();
|
|
atm_thread.join();
|
|
bank_thread.join();
|
|
if_thread.join();
|
|
}
|