-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
67 lines (57 loc) · 1.77 KB
/
main.py
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
66
67
"""
Author: Fernando Schettini
Date: 12/08/2024
Purpose: Main file to execute the Paxos Agent.
HOW TO USE: python3 main.py -a <agent_type> -os <own_socket_address> -s <acceptor_sockets>
python main.py -a proposer -os 10000 -s 10001,10002
"""
import argparse
from src.proposer import Proposer
from src.acceptor import Acceptor
from src.learner import Learner
def parse_addresses(addresses_str):
addresses = []
if addresses_str:
for addr in addresses_str.split(','):
ip, port = addr.split(':')
addresses.append((ip, int(port)))
return addresses
def gen_agent(own_address):
com_addresses = parse_addresses(args.sockets)
if args.agent == "proposer":
agent = Proposer(own_address, com_addresses)
elif args.agent == "acceptor":
agent = Acceptor(own_address, com_addresses)
elif args.agent == "learner":
agent = Learner(own_address)
return agent
def main(args):
own_address = parse_addresses(args.own_socket)[0]
agent = gen_agent(own_address)
print(args)
agent.start()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Executes Paxos Agent.")
parser.add_argument(
"-a",
'--agent',
type=str,
choices=['proposer', 'acceptor', 'learner'],
help="Agent type: ['proposer', 'acceptor' , 'learner']",
required=True
)
parser.add_argument(
"-os",
"--own_socket",
type=str,
help="Own socket address in format: ip:port",
required=True
)
parser.add_argument(
"-s",
"--sockets",
type=str,
help="Other sockets addresses in format: ip:port,ip:port,ip:port...."
)
args = parser.parse_args()
main(args)