patch #7372
[mldonkey.git] / src / networks / openFT / openFTMain.ml
blobc2aebadd892ab3b1a8e5668924557c0472c871df
1 (* Copyright 2001, 2002 b8_bavard, b8_fee_carabine, INRIA *)
2 (*
3 This file is part of mldonkey.
5 mldonkey is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 mldonkey is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with mldonkey; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 open OpenFTClients
21 open CommonOptions
22 open CommonFile
23 open CommonComplexOptions
24 open BasicSocket
25 open Options
26 open OpenFTComplexOptions
27 open OpenFTOptions
28 open OpenFTGlobals
29 open OpenFTTypes
30 open CommonTypes
31 open OpenFTServers
33 let is_enabled = ref false
35 let disable enabler () =
36 if !enabler then begin
37 is_enabled := false;
38 enabler := false;
39 Hashtbl2.safe_iter (fun s -> disconnect_from_server s) servers_by_key;
40 Hashtbl2.safe_iter (fun c -> disconnect_client c) clients_by_num;
41 (match !listen_sock with None -> ()
42 | Some sock ->
43 listen_sock := None;
44 TcpServerSocket.close sock "");
45 if !!enable_openft then enable_openft =:= false
46 end
48 let enable () =
49 if not !is_enabled then
50 let enabler = ref true in
51 is_enabled := true;
52 network.op_network_disable <- disable enabler;
54 if not !!enable_openft then enable_openft =:= true;
57 Hashtbl.iter (fun _ file ->
58 if file_state file <> FileDownloaded then
59 current_files := file :: !current_files
60 ) files_by_key;
62 List.iter (fun s -> Fifo.put ultrapeers_queue s) !!ultrapeers;
64 add_session_timer enabler 1.0 (fun timer ->
65 OpenFTServers.connect_servers ());
67 add_session_timer enabler 60.0 (fun timer ->
68 OpenFTServers.ask_for_files ();
69 OpenFTServers.send_pings ());
71 add_session_timer enabler 300.0 (fun timer ->
72 OpenFTServers.recover_files ());
74 OpenFTClients.listen ();
77 let _ =
78 network.op_network_is_enabled <- (fun _ -> !!CommonOptions.enable_openft);
79 option_hook enable_ (fun _ ->
80 if !CommonOptions.start_running_servers then
81 if !!enable_ then network_enable network
82 else network_disable network);
84 network.op_network_save_simple_options <- OpenFTComplexOptions.save_config;
85 network.op_network_load_simple_options <-
86 (fun _ ->
87 try
88 Options.load openft_ini;
89 with Sys_error _ ->
90 OpenFTComplexOptions.save_config ()
93 network.op_network_enable <- enable;
94 network.network_config_file <- Some openft_ini;
95 network.op_network_info <- (fun n ->
97 network_netnum = network.network_num;
98 network_config_filename = (match network.network_config_file with
99 None -> "" | Some opfile -> options_file_name opfile);
100 network_netname = network.network_name;
101 network_enabled = network_is_enabled network;
102 network_uploaded = Int64.zero;
103 network_downloaded = Int64.zero;
107 let main (toto: int) = ()