diff -uNr -x .cvsignore -x Entries -x Repository -x Root /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTClients.ml /root/mldonkey/mldonkey/src/networks/bittorrent/bTClients.ml --- /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTClients.ml 2008-07-02 09:49:07.000000000 +0200 +++ /root/mldonkey/mldonkey/src/networks/bittorrent/bTClients.ml 2010-03-20 14:19:13.000000000 +0100 @@ -89,25 +89,32 @@ *) let connect_trackers file event f = - let args,must_check_delay, downloaded, left = + (* reset session statistics when sending 'started' event *) + if event = "started" then + begin + file.file_session_uploaded <- Int64.zero; + file.file_session_downloaded <- Int64.zero; + end; + + let args,must_check_delay, left = match file.file_swarmer with None -> begin match event with - | "started" -> [("event", "started")],true,zero,zero - | "stopped" -> [("event", "stopped")],false,zero,zero - | _ -> [],true, zero, zero + | "started" -> [("event", "started")],true,zero + | "stopped" -> [("event", "stopped")],false,zero + | _ -> [],true,zero end | Some swarmer -> let local_downloaded = CommonSwarming.downloaded swarmer in let left = file_size file -- local_downloaded in match event with - | "completed" -> [("event", "completed")],false,local_downloaded,zero - | "started" -> [("event", "started")],true,zero, left - | "stopped" -> [("event", "stopped")],false,zero, left - | _ -> [],true,local_downloaded, left + | "completed" -> [("event", "completed")],false,zero + | "started" -> [("event", "started")],true,left + | "stopped" -> [("event", "stopped")],false,left + | _ -> [],true,left in let args = ("no_peer_id", "1") :: ("compact", "1") :: args in @@ -124,12 +131,11 @@ ("info_hash", Sha1.direct_to_string file.file_id) :: ("peer_id", Sha1.direct_to_string !!client_uid) :: ("port", string_of_int !!client_port) :: - ("uploaded", Int64.to_string file.file_uploaded) :: - ("downloaded", Int64.to_string downloaded) :: + ("uploaded", Int64.to_string file.file_session_uploaded) :: + ("downloaded", Int64.to_string file.file_session_downloaded) :: ("left", Int64.to_string left) :: args in - let enabled_trackers = let enabled_trackers = List.filter (fun t -> tracker_is_enabled t) file.file_trackers in @@ -860,6 +866,8 @@ count_download c (new_downloaded -- old_downloaded); (* use len here with max_dr quickfix *) Rate.update c.client_downloaded_rate ~amount:len; + (* count bytes downloaded from network for this file *) + file.file_session_downloaded <- file.file_session_downloaded ++ (Int64.of_int len); if !verbose_msg_clients then (match c.client_ranges_sent with [] -> lprintf_file_nl (as_file file) "EMPTY Ranges !!!" @@ -1531,6 +1539,7 @@ Rate.update c.client_upload_rate ~amount:len; Rate.update c.client_downloaded_rate; file.file_uploaded <- file.file_uploaded ++ (Int64.of_int len); + file.file_session_uploaded <- file.file_session_uploaded ++ (Int64.of_int len); let _ = (* update stats *) count_filerequest c; @@ -1581,8 +1590,8 @@ let file_resume file = List.iter (fun t -> match t.tracker_status with - Enabled -> () - | _ -> t.tracker_status <- Enabled + | Enabled | Disabled_mld _ -> () + | Disabled_failure _ | Disabled _ -> t.tracker_status <- Enabled ) file.file_trackers; (try get_sources_from_tracker file with _ -> ()) diff -uNr -x .cvsignore -x Entries -x Repository -x Root /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTGlobals.ml /root/mldonkey/mldonkey/src/networks/bittorrent/bTGlobals.ml --- /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTGlobals.ml 2007-08-04 00:12:58.000000000 +0200 +++ /root/mldonkey/mldonkey/src/networks/bittorrent/bTGlobals.ml 2010-03-20 14:19:13.000000000 +0100 @@ -287,6 +287,8 @@ file_torrent_diskname = torrent_diskname; file_completed_hook = (fun _ -> ()); file_shared = None; + file_session_uploaded = Int64.zero; + file_session_downloaded = Int64.zero; } and file_impl = { dummy_file_impl with impl_file_owner = user; diff -uNr -x .cvsignore -x Entries -x Repository -x Root /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTInteractive.ml /root/mldonkey/mldonkey/src/networks/bittorrent/bTInteractive.ml --- /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTInteractive.ml 2008-03-31 09:55:11.000000000 +0200 +++ /root/mldonkey/mldonkey/src/networks/bittorrent/bTInteractive.ml 2010-03-20 14:19:13.000000000 +0100 @@ -1124,13 +1124,14 @@ if CommonUserDb.user2_is_admin o.conn_user.ui_user then begin List.iter (fun file -> if file_state file = FileShared then - Printf.bprintf o.conn_buf "%s [%s]\n" file.file_name (Int64.to_string file.file_uploaded) + Printf.bprintf o.conn_buf "%s [U %Ld u/d %Ld/%Ld]\n" + file.file_name file.file_uploaded file.file_session_uploaded file.file_session_downloaded ) !current_files; _s "done" end else begin print_command_result o "You are not allowed to use seeded_torrents"; "" end - ), _s ":\t\t\tprint all seeded .torrent files on this server"; + ), _s ":\t\t\tprint all seeded .torrent files on this server (output: name, total upload, session upload, session download)"; "reshare_torrents", "Network/Bittorrent", Arg_none (fun o -> share_files (); diff -uNr -x .cvsignore -x Entries -x Repository -x Root /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTTypes.ml /root/mldonkey/mldonkey/src/networks/bittorrent/bTTypes.ml --- /root/mldonkey/mldonkey-cvs/src/networks/bittorrent/bTTypes.ml 2007-07-10 01:50:54.000000000 +0200 +++ /root/mldonkey/mldonkey/src/networks/bittorrent/bTTypes.ml 2010-03-20 14:19:13.000000000 +0100 @@ -315,6 +315,9 @@ mutable file_tracker_connected : bool; mutable file_completed_hook : (file -> unit); mutable file_shared : file CommonShared.shared_impl option; + (** session uploaded and downloaded bytes, for statistics reporting *) + mutable file_session_uploaded : int64; + mutable file_session_downloaded : int64; } and ft = {