blob: cb3ad2a7ce21e9276dbbf4a062b4e008bf570fff (
plain)
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
|
open Globals
open SlotArray
let do_peer root peer =
let aux = function
| Ask p -> ask_peer peer p
| _ -> failwith "Big problem"
in
SlotArray.filter_peers is_active peer.slots;
SlotArray.iter_asks aux peer.slots;
let free_slots = SlotArray.capacity peer.slots - SlotArray.length peer.slots
- SlotArray.asks peer.slots in
if free_slots > 2 then
let (a,b) = ask_root root peer in
if a then begin
SlotArray.accept (Peer root) peer.slots;
SlotArray.append_asks b peer.slots
end
else
SlotArray.append_asks b peer.slots
let do_server root =
SlotArray.filter_peers is_active root.slots
|