]> review.fuel-infra Code Review - packages/trusty/rabbitmq-server.git/blob
c9938e59d084d24d2e862b0ae792c163eb811482
[packages/trusty/rabbitmq-server.git] /
1 diff --git a/src/mochiglobal.erl b/src/mochiglobal.erl
2 deleted file mode 100644
3 index 6b20e41..0000000
4 --- a/src/mochiglobal.erl
5 +++ /dev/null
6 @@ -1,107 +0,0 @@
7 -%% @author Bob Ippolito <bob@mochimedia.com>
8 -%% @copyright 2010 Mochi Media, Inc.
9 -%% @doc Abuse module constant pools as a "read-only shared heap" (since erts 5.6)
10 -%%      <a href="http://www.erlang.org/pipermail/erlang-questions/2009-March/042503.html">[1]</a>.
11 --module(mochiglobal).
12 --author("Bob Ippolito <bob@mochimedia.com>").
13 --export([get/1, get/2, put/2, delete/1]).
14 -
15 -%% -spec get(atom()) -> any() | undefined.
16 -%% @equiv get(K, undefined)
17 -get(K) ->
18 -    get(K, undefined).
19 -
20 -%% -spec get(atom(), T) -> any() | T.
21 -%% @doc Get the term for K or return Default.
22 -get(K, Default) ->
23 -    get(K, Default, key_to_module(K)).
24 -
25 -get(_K, Default, Mod) ->
26 -    try Mod:term()
27 -    catch error:undef ->
28 -            Default
29 -    end.
30 -
31 -%% -spec put(atom(), any()) -> ok.
32 -%% @doc Store term V at K, replaces an existing term if present.
33 -put(K, V) ->
34 -    put(K, V, key_to_module(K)).
35 -
36 -put(_K, V, Mod) ->
37 -    Bin = compile(Mod, V),
38 -    code:purge(Mod),
39 -    {module, Mod} = code:load_binary(Mod, atom_to_list(Mod) ++ ".erl", Bin),
40 -    ok.
41 -
42 -%% -spec delete(atom()) -> boolean().
43 -%% @doc Delete term stored at K, no-op if non-existent.
44 -delete(K) ->
45 -    delete(K, key_to_module(K)).
46 -
47 -delete(_K, Mod) ->
48 -    code:purge(Mod),
49 -    code:delete(Mod).
50 -
51 -%% -spec key_to_module(atom()) -> atom().
52 -key_to_module(K) ->
53 -    list_to_atom("mochiglobal:" ++ atom_to_list(K)).
54 -
55 -%% -spec compile(atom(), any()) -> binary().
56 -compile(Module, T) ->
57 -    {ok, Module, Bin} = compile:forms(forms(Module, T),
58 -                                      [verbose, report_errors]),
59 -    Bin.
60 -
61 -%% -spec forms(atom(), any()) -> [erl_syntax:syntaxTree()].
62 -forms(Module, T) ->
63 -    [erl_syntax:revert(X) || X <- term_to_abstract(Module, term, T)].
64 -
65 -%% -spec term_to_abstract(atom(), atom(), any()) -> [erl_syntax:syntaxTree()].
66 -term_to_abstract(Module, Getter, T) ->
67 -    [%% -module(Module).
68 -     erl_syntax:attribute(
69 -       erl_syntax:atom(module),
70 -       [erl_syntax:atom(Module)]),
71 -     %% -export([Getter/0]).
72 -     erl_syntax:attribute(
73 -       erl_syntax:atom(export),
74 -       [erl_syntax:list(
75 -         [erl_syntax:arity_qualifier(
76 -            erl_syntax:atom(Getter),
77 -            erl_syntax:integer(0))])]),
78 -     %% Getter() -> T.
79 -     erl_syntax:function(
80 -       erl_syntax:atom(Getter),
81 -       [erl_syntax:clause([], none, [erl_syntax:abstract(T)])])].
82 -
83 -%%
84 -%% Tests
85 -%%
86 --ifdef(TEST).
87 --include_lib("eunit/include/eunit.hrl").
88 -get_put_delete_test() ->
89 -    K = '$$test$$mochiglobal',
90 -    delete(K),
91 -    ?assertEqual(
92 -       bar,
93 -       get(K, bar)),
94 -    try
95 -        ?MODULE:put(K, baz),
96 -        ?assertEqual(
97 -           baz,
98 -           get(K, bar)),
99 -        ?MODULE:put(K, wibble),
100 -        ?assertEqual(
101 -           wibble,
102 -           ?MODULE:get(K))
103 -    after
104 -        delete(K)
105 -    end,
106 -    ?assertEqual(
107 -       bar,
108 -       get(K, bar)),
109 -    ?assertEqual(
110 -       undefined,
111 -       ?MODULE:get(K)),
112 -    ok.
113 --endif.
114 diff --git a/src/mochiweb.app.src b/src/mochiweb.app.src
115 index c98d8a0..4a6808e 100644
116 --- a/src/mochiweb.app.src
117 +++ b/src/mochiweb.app.src
118 @@ -5,5 +5,4 @@
119    {modules, []},
120    {registered, []},
121    {env, []},
122 -  {applications, [kernel, stdlib, inets, xmerl,
123 -                  compiler, syntax_tools]}]}.
124 +  {applications, [kernel, stdlib, inets, xmerl]}]}.