X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_common.erl;h=b016a0fd73fcf6f49cfc7f0452970c8728d6ab0a;hp=12ac9cb566a434ae716f74683a6bcc4020b05491;hb=4a6c575807a90370c0069b688026b10102e1ce10;hpb=5790c374341c5e542ff17a8f245bb5aa43af1d58 diff --git a/modules/erl/euphorik_common.erl b/modules/erl/euphorik_common.erl index 12ac9cb..b016a0f 100644 --- a/modules/erl/euphorik_common.erl +++ b/modules/erl/euphorik_common.erl @@ -1,5 +1,5 @@ % coding: utf-8 -% Copyright 2008 Grégory Burri +% Copyright 2008 Grégory Burri % % This file is part of Euphorik. % @@ -15,20 +15,49 @@ % % You should have received a copy of the GNU General Public License % along with Euphorik. If not, see . -% -% Module avec plein de bordel utile à l'intérieur -% @author G.Burri +% +% Module with some useful stuffs. + -module(euphorik_common). --export([serialize_ip/1, unserialize_ip/1]). +-author("Greg Burri "). +-export([ + ceiling/1, + delta_date_ms/2, + delta_date_minute/2, + serialize_ip/1, + unserialize_ip/1 +]). + + +% Arrondi un float à l'entier supérieur. +% Bizarre, cette fonction n'existe pas dans la stdlib. +% Pas utilisé mais bon ca me fait de la peine de l'enlever. +ceiling(X) -> + T = trunc(X), + case (X - T) of + Neg when Neg < 0 -> T; + Pos when Pos > 0 -> T + 1; + _ -> T + end. + + +% Retourne la difference entre deux timestamp (erlang:now()) en miliseconde +delta_date_ms(D1, D2) -> + 1000000000 * abs(element(1, D1) - element(1, D2)) + 1000 * abs(element(2, D1) - element(2, D2)) + trunc(abs(element(3, D1) - element(3, D2)) / 1000). + + +% Retourne la différence entre deux timestamp (erlang:now) en minutes +delta_date_minute(D1, D2) -> + trunc(delta_date_ms(D1, D2) / 1000 / 60). serialize_ip(undefined) -> ""; serialize_ip(IP) -> lists:flatten(io_lib:format("~w.~w.~w.~w", tuple_to_list(IP))). - - + + unserialize_ip(IP) -> case io_lib:fread("~d.~d.~d.~d", IP) of {ok, [A, B, C, D], []} -> {A, B, C, D};