Add build script.
[brdnet.git] / dhtBootStatic.pas
blob750524bb4790d2bcdc73c0a026e14846d34a9e43
1 unit dhtBootStatic;
3 Bootstrap the dht from set of static nodes
4 from file.
7 INTERFACE
9 IMPLEMENTATION
10 uses NetAddr,ServerLoop,DHT,SysUtils;
12 type t=object
13 procedure Boot;
14 procedure BootCmdline;
15 end;
17 procedure t.BootCmdline;
18 var addr:tNetAddr;
19 var oi:word;
20 var cnt:word;
21 const opt='-boot';
22 begin
23 oi:=OptIndex(opt);
24 if oi>0 then begin
25 cnt:=OptParamCount(oi);
26 assert(cnt>=1,opt+'(addr+)');
27 for oi:=oi+1 to cnt do begin
28 addr.FromString(paramstr(oi+1));
29 DHT.NodeBootstrap(addr);
30 end;
31 end;
32 end;
34 procedure t.Boot;
35 var bs:TextFile;
36 const bsfn='bootstrap.txt';
37 var line:string;
38 var addr:tNetAddr;
39 begin
40 BootCmdLine;
41 assign(bs,bsfn);
42 try
43 reset(bs);
44 except
45 writeln('BootStatic: Error opening file '+bsfn);
46 exit;
47 end;
48 try
49 while not eof(bs) do begin
50 readln(bs,line);
51 try addr.FromString(line);
52 except on eConvertError do begin
53 writeln('BootStatic: ConvertError ',line,' to tNetAddr');
54 continue;
55 end end;
56 DHT.NodeBootstrap(addr);
57 end;
58 finally
59 close(bs);
60 end;
61 end;
63 var o:t;
64 BEGIN
65 Shedule(700,@o.boot);
66 END.