ff251d7dcf41610d97eafae960f32f508c7bc012
[euphorik.git] / modules / erl / euphorik_common.erl
1 % coding: utf-8
2 % Copyright 2008 Grégory Burri
3 %
4 % This file is part of Euphorik.
5 %
6 % Euphorik is free software: you can redistribute it and/or modify
7 % it under the terms of the GNU General Public License as published by
8 % the Free Software Foundation, either version 3 of the License, or
9 % (at your option) any later version.
10 %
11 % Euphorik is distributed in the hope that it will be useful,
12 % but WITHOUT ANY WARRANTY; without even the implied warranty of
13 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 % GNU General Public License for more details.
15 %
16 % You should have received a copy of the GNU General Public License
17 % along with Euphorik. If not, see <http://www.gnu.org/licenses/>.
18 %
19 % Module avec plein de bordel utile à l'intérieur.
20 % @author G.Burri
21
22
23 -module(euphorik_common).
24 -export([
25 serialize_ip/1,
26 unserialize_ip/1,
27 ceiling/1
28 ]).
29
30
31 % Arrondi un float à l'entier supérieur.
32 % Bizarre, cette fonction n'existe pas dans la stdlib.
33 % Pas utilisé mais bon ca me fait de la peine de l'enlever.
34 ceiling(X) ->
35 T = trunc(X),
36 case (X - T) of
37 Neg when Neg < 0 -> T;
38 Pos when Pos > 0 -> T + 1;
39 _ -> T
40 end.
41
42
43 % Retourne la difference entre deux timestamp (erlang:now()) en miliseconde
44 delta_date_ms(D1, D2) ->
45 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).
46
47
48 % Retourne la différence entre deux timestamp (erlang:now) en minutes
49 delta_date_minute(D1, D2) ->
50 trunc(delta_date_ms(D1, D2) / 1000 / 60).
51
52
53 serialize_ip(undefined) ->
54 "<unknown IP>";
55 serialize_ip(IP) ->
56 lists:flatten(io_lib:format("~w.~w.~w.~w", tuple_to_list(IP))).
57
58
59 unserialize_ip(IP) ->
60 case io_lib:fread("~d.~d.~d.~d", IP) of
61 {ok, [A, B, C, D], []} -> {A, B, C, D};
62 _ -> erreur
63 end.