-
Notifications
You must be signed in to change notification settings - Fork 0
/
transaction.h
65 lines (49 loc) · 1.72 KB
/
transaction.h
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef TRANSACTION_H
#define TRANSACTION_H
#include <bits/types/time_t.h>
#include "hash.h"
#include "wallet.h"
#define BUF 256
extern time_t max_transaction_timestamp;
extern bool init_complete;
typedef struct Transaction {
char *transactionId;
char *senderWalletId;
char *receiverWalletId;
unsigned long int value;
time_t timestamp;
} *Transaction;
/* Execute
* transaction*/
bool execute(Wallet senderWallet, Wallet receiverWallet, Transaction transaction);
/* Perform
* transaction from input buffer*/
bool performTransaction(char *input, Hashtable *walletsHT, Hashtable *senderHT, Hashtable *receiverHT,
Hashtable *transactionsHT);
/* Perform
* transactions from input stream*/
bool performTransactions(FILE *fp, Hashtable *walletsHT, Hashtable *senderHT, Hashtable *receiverHT,
Hashtable *transactionsHT, char *delimiter);
void transactionPrint(Transaction transaction);
/* @Callback
* Initialize & return a new transaction*/
Transaction createTransaction(char *transactionStr);
/* @Callback
* Compare transaction with userId field*/
int cmpTransaction(Transaction transaction, char *transactionStr);
/* @Callback
* Hash function for transactions hashtable*/
unsigned long int transactionHash(char *key, unsigned long int capacity);
/* @Callback
* Destroy transaction*/
void destroyTransaction(Transaction transaction);
/* @Callback
* Initialize & return a new transaction list*/
List createTransactionList(char *userId);
/* @Callback
* Compare keys function for transaction lists hashtable*/
int cmpTransactionList(List tr1, char *userId);
/* @Callback
* Destroy function for transaction hashtable*/
void destroyTransactionList(List list);
#endif //TRANSACTION_H