diff options
Diffstat (limited to 'seggetd/utils.cpp')
-rw-r--r-- | seggetd/utils.cpp | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/seggetd/utils.cpp b/seggetd/utils.cpp new file mode 100644 index 0000000..851484f --- /dev/null +++ b/seggetd/utils.cpp @@ -0,0 +1,124 @@ +/* +* Copyright (C) 2010 Robin H.Johnson, Ovechko Kostyantyn <fastinetserver@gmail.com>. +* +* Project: IDFetch. +* Developer: Ovechko Kostyantyn Olexandrovich (Kharkiv State Technical University of Construction and Architecture, Ukraine). +* Mentor: Robin H. Johnson (Gentoo Linux: Developer, Trustee & Infrastructure Lead). +* Mentoring organization: Gentoo Linux. +* Sponsored by GSOC 2010. +* +* This file is part of Segget. +* +* Segget is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* Segget is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with Segget; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "utils.h" + +ulong time_left_since(timeval from_time){ + try{ + timeval now_time; + gettimeofday(&now_time,NULL); + ulong timeleft=(now_time.tv_sec-from_time.tv_sec)*1000+(now_time.tv_usec-from_time.tv_usec)/1000; + if (timeleft<1) + timeleft=1; + return timeleft; + }catch(...){ + error_log("Error in utils.cpp: time_left_from()"); + return 1; + } +} + +string secsToString(ulong secs){ + string result=""; + ulong mins=0; + ulong hours=0; + ulong days=0; + ldiv_t time_div_spliter; + if (secs>60){ + time_div_spliter = ldiv (secs,60); + secs=time_div_spliter.rem; + if (time_div_spliter.quot>60){ + time_div_spliter = ldiv (time_div_spliter.quot,60); + mins=time_div_spliter.rem; + if (time_div_spliter.quot>24){ + time_div_spliter = ldiv (time_div_spliter.quot,24); + hours=time_div_spliter.rem; + days=time_div_spliter.quot; + if (days>999) return ("inf"); + result=result+field(" ", days,3)+"d"; + }else{ + hours=time_div_spliter.quot; + } + result=result+field(" ", hours,2)+"h"; + }else{ + mins=time_div_spliter.quot; + } + result=result+field(" ", mins,2)+"m"; + } + result=result+field(" ", secs,2)+"s"; + + return result; +} + +string speedToString(ulong dld_bytes, ulong time_left){ + try{ + string speed_str; + if (time_left==0){ + speed_str="N/a"; + }else{ + ulong speed=(dld_bytes*1000/time_left); + string suffix; + if (speed>1500){ + if (speed>1500000){ + suffix=" MB/s"; + speed=speed/1000000; + }else{ + suffix=" KB/s"; + speed=speed/1000; + } + }else{ + suffix=" B/s"; + } + speed_str=field("",speed,4)+suffix; + } + return speed_str; + }catch(...){ + error_log("Error in utils.cpp: speedToString()"); + } + return ""; +} + +string speedToString(ulong speed){ + try{ + string speed_str; + string suffix; + if (speed>1500){ + if (speed>1500000){ + suffix=" MB/s"; + speed=speed/1000000; + }else{ + suffix=" KB/s"; + speed=speed/1000; + } + }else{ + suffix=" B/s"; + } + speed_str=field("",speed,4)+suffix; + return speed_str; + }catch(...){ + error_log("Error in utils.cpp: speedToString()"); + } + return ""; +}
\ No newline at end of file |