1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <string.h>
#include "banking.h"
#include "ipc.h"
#include "dist.h"
void transfer(void * parent_data, local_id src, local_id dst, balance_t amount)
{
my_info_t *me = (my_info_t *) parent_data;
if( me->dist_info == NULL )
return;
TransferOrder order = {
.s_src = src,
.s_dst = dst,
.s_amount = amount
};
Message msg = {
.s_header = {
.s_magic = MESSAGE_MAGIC,
.s_payload_len = sizeof( order ),
.s_type = TRANSFER,
.s_local_time = get_physical_time()
}
};
memcpy( msg.s_payload, &order, sizeof( order ) );
send( me, src, &msg );
if( !receive( me, dst, &msg ) ) {
if( msg.s_header.s_type != ACK ) {
return;
}
}
return;
}
|