Skip to content

Commit c0d72da

Browse files
committed
last
1 parent 5b2aa82 commit c0d72da

File tree

6 files changed

+131
-1
lines changed

6 files changed

+131
-1
lines changed

client/client.py

+43-1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ def update_handler(self):
7272
print(response["msg"])
7373
file_written = response["file_written"]
7474

75+
for filename in file_written: #populate listbox again
76+
self.listbox.insert(END, filename)
77+
# listbox.insert(END, percent)
78+
self.listbox.update_idletasks()
79+
7580
for file in file_written:
7681
self._popup("Update", str(file)+" UPLOADED SUCCESSFULLY")
7782

@@ -81,10 +86,14 @@ def update_handler(self):
8186
# update on GUI
8287

8388
# self._update_canvas()
89+
<<<<<<< Updated upstream
8490
for filename in file_written: #populate listbox again
8591
self.listbox.insert(END, filename)
8692
# listbox.insert(END, percent)
8793
self.listbox.update_idletasks()
94+
=======
95+
96+
>>>>>>> Stashed changes
8897
# tk.mainloop()
8998
# self.window.mainloop()
9099
elif response["status"] == "NO_UPD":
@@ -253,7 +262,8 @@ def _write(self, pg, pg_data):
253262
self.processing[pg.pg_id] = pg_data
254263
if self.start_update_handler == False:
255264
self.start_update_handler = True
256-
threading.Thread(target=self.update_handler())
265+
self.update_handler()
266+
# threading.Thread(target=self.update_handler())
257267
s.close()
258268
return 0
259269

@@ -366,6 +376,38 @@ def gui(self):
366376

367377
self.window.mainloop()
368378

379+
<<<<<<< Updated upstream
380+
=======
381+
def _update_gui(self):
382+
self.canvasG.delete('all')
383+
scrollbar = tk.Scrollbar(self.canvasG)
384+
# scrollbar.place(y=50)
385+
scrollbar.pack( side = tk.RIGHT,
386+
fill = tk.Y )
387+
self.list_item = tk.StringVar()
388+
# self.canvasG.configure(yscrollcommand=scrollbar.set)
389+
self.listbox = tk.Listbox(self.canvasG, yscrollcommand = scrollbar.set, width=150, height=30,
390+
listvariable=self.list_item, selectmode = 'browse' )
391+
# mylist.place(x = 60, y=50)
392+
file_list = []
393+
self.file_id_map = {}
394+
for d in self.dir_tree.keys():
395+
for file_id in self.dir_tree[d].keys():
396+
f_name = self.dir_tree[d][file_id][0]
397+
file_list.append("/"+str(d)+"/"+str(f_name))
398+
self.file_id_map[f_name] = file_id
399+
400+
for file in file_list:
401+
self.listbox.insert(tk.END, file)
402+
403+
# mylist.place(x = 60, y=50)#, side = "left", fill = "both")
404+
self.listbox.pack()#side = tk.LEFT, fill = tk.BOTH )
405+
self.listbox.bind("<MouseWheel>", self.scrolllistbox)
406+
self.listbox.bind('<Double-1>', self.download_file)
407+
408+
409+
scrollbar.config( command = self.listbox.yview)
410+
>>>>>>> Stashed changes
369411

370412
def browseFiles(self):
371413
filename = filedialog.askopenfilename(initialdir = "/",

mds/logged_in

30 Bytes
Binary file not shown.

mds/mds.py

+20
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ def dispatch_primary(self):
9696
elif msg["type"] == "WRITE_QUERY":
9797
res = self._client_query_handle(msg)
9898
print(res["msg"])
99+
100+
elif msg["type"] == "RECOVERY":
101+
res = self._recovery_handle()
102+
print(res["msg"])
99103

100104
try:
101105
_send_msg(c, res)
@@ -164,6 +168,10 @@ def dispatch_backup(self):
164168
self._write_tree(username, tree)
165169
res["status"] = "SUCCESS"
166170

171+
elif msg["type"] == "RECOVERY":
172+
res = self._recovery_handle()
173+
print(res["msg"])
174+
167175
else:
168176
res["status"] = "ERROR"
169177
res["msg"] = "msg type not define !"
@@ -421,6 +429,18 @@ def _write_logged_in(self):
421429

422430
file.close()
423431

432+
def _recovery_handle(self):
433+
trees = []
434+
for username in self.user_list.keys():
435+
tree = self._read_tree(username)
436+
trees.append(tree)
437+
438+
logged_in = self._read_logged_in()
439+
440+
res = {"trees":trees, "logged_in":logged_in, "status":"SUCCESS", "msg":"delivered data for recovery"}
441+
442+
return res
443+
424444

425445
if __name__ == "__main__":
426446
if len(sys.argv) != 2:

mds/recovery.py

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import sys
2+
sys.path.insert(1, '../utils/')
3+
from info import MDS_IPs, MSG_SIZE
4+
from transfer import _send_msg, _recv_msg, _wait_recv_msg
5+
6+
if len(sys.argv) < 2:
7+
print("$ recovery.py primary")
8+
exit(0)
9+
ip = 0
10+
port = 0
11+
if sys.argv[1] == "primary":
12+
13+
ip = MDS_IPs["backup"]["ip"]
14+
port = MDS_IPs["backup"]["port"]
15+
16+
else:
17+
ip = MDS_IPs["primary"]["ip"]
18+
port = MDS_IPs["primary"]["port"]
19+
20+
21+
print("receiving data..")
22+
s = socket.socket()
23+
24+
try:
25+
s.connect((ip, port))
26+
27+
msg = {"type":"RECOVERY"}
28+
# d_msg = pickle.dumps(msg)
29+
30+
_send_msg(s, msg)
31+
#s.send(d_msg)
32+
response = _wait_recv_msg(s, 1024)
33+
34+
if response["status"] == "SUCCESS":
35+
trees = response["trees"]
36+
logged_in = response["logged_in"]
37+
# user_list = response["user_list"]
38+
39+
for tree in trees:
40+
file = open("./tree/"+tree["username"], 'wb')
41+
42+
obj_b = pickle.dumps(tree)
43+
file.write(obj_b)
44+
45+
file.close()
46+
47+
file = open("./logged_in", 'wb')
48+
49+
obj_b = pickle.dumps(logged_in)
50+
file.write(obj_b)
51+
52+
file.close()
53+
54+
print("Successfully recovered...")
55+
56+
elif response["status"] == "ERROR":
57+
print(response["msg"])
58+
print("Couldn't recover")
59+
60+
61+
except Exception as e:
62+
print(e)
63+
print("Couldn't recover")
64+
return -2
65+
66+
finally:
67+
s.close()
68+
print("...")

mds/tree/client1

211 Bytes
Binary file not shown.

mds/tree/client2

247 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)