-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmetadata_update_helper.h
63 lines (53 loc) · 1.82 KB
/
metadata_update_helper.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
/*
* metadata_update_helper.h
*
* Created on: Aug 20, 2019
* Author: Tonglin Li
*/
#ifndef METADATA_UPDATE_HELPER_H_
#define METADATA_UPDATE_HELPER_H_
#include "proposal.h"
#include "VotingManager.h"
#include "LedgerManager.h"
#include "ExecutionManager.h"
#include "util_debug.h"
typedef struct metadata_update_engine{
int mode; //0 for regular, 1 for risky.
time_stamp time_window_size;
time_stamp current_base_time;//reference time for current window.
int world_size;
void* app_ctx;
// Components
voting_mgr* vm;
ledger_mgr* lm;
execution_mgr* em;
// int my_rank;
}metadata_manager;
typedef struct execution_pack{
int op_type;
void* h5_ctx;
proposal* proposal;
}exec_pack;
/**
* Things to complete:
* - setup and start metadata_engine;
* - setup and start ledger manager;
* - setup and start voting manager;
* - make the first call of updata_helper_make_progress()
* @param window_size: time_window size, in microsec
* @param
* @return a metadata_engine pointer
*/
metadata_manager* MM_metadata_update_helper_init(int mode, int world_size, unsigned long time_window_size,
int(*h5_namespace_judgement)(), void* h5ctx, VotingPlugin* vp,
int (*cb_execute)(void *h5_ctx, void *proposal_buf));
int MM_metadata_update_helper_term(metadata_manager* meta_eng);
int MM_updata_helper_make_progress_1st_step(metadata_manager* meta_eng);
int MM_updata_helper_make_progress(metadata_manager* meta_eng);
int MM_voting_proccess(metadata_manager* meta_eng);
int MM_ledger_proccess(metadata_manager* meta_eng);
int MM_execution_proccess(metadata_manager* meta_eng);
int MM_submit_proposal(metadata_manager* meta_eng, proposal* p);
int MM_make_progress(metadata_manager *mm);
time_stamp MM_get_time_stamp_us();//time_stamp in microsec
#endif /* METADATA_UPDATE_HELPER_H_ */