浏览代码

Support pids in storage

develop-pid
Pedram Nimreezi 8 年前
父节点
当前提交
59276e355f
共有 2 个文件被更改,包括 11 次插入1 次删除
  1. +8
    -1
      src/glc.erl
  2. +3
    -0
      src/glc_code.erl

+ 8
- 1
src/glc.erl 查看文件

@ -322,6 +322,12 @@ reset_counters(Module) ->
reset_counters(Module, Counter) -> reset_counters(Module, Counter) ->
Module:reset_counters(Counter). Module:reset_counters(Counter).
prepare_store(Store) ->
lists:map(fun({K, V}) when is_pid(V)
-> {K, {pid, binary_to_list(term_to_binary(V))}} ;
({K, V}) -> {K, V}
end, Store).
%% @private Map a query to a module data term. %% @private Map a query to a module data term.
-spec module_data(atom(), term(), term()) -> {ok, #module{}}. -spec module_data(atom(), term(), term()) -> {ok, #module{}}.
module_data(Module, Query, Store) -> module_data(Module, Query, Store) ->
@ -337,7 +343,8 @@ module_data(Module, Query, Store) ->
%% function maps names to registered processes response for those tables. %% function maps names to registered processes response for those tables.
Tables = module_tables(Module), Tables = module_tables(Module),
Query2 = glc_lib:reduce(Query), Query2 = glc_lib:reduce(Query),
{ok, #module{'query'=Query, tables=Tables, qtree=Query2, store=Store}}.
Store2 = prepare_store(Store),
{ok, #module{'query'=Query, tables=Tables, qtree=Query2, store=Store2}}.
%% @private Create a data managed supervised process for params, counter tables %% @private Create a data managed supervised process for params, counter tables
module_tables(Module) -> module_tables(Module) ->

+ 3
- 0
src/glc_code.erl 查看文件

@ -203,6 +203,9 @@ abstract_query({any, [{with, _Q, _A}|_] = I}) ->
abstract_query({all, [{with, _Q, _A}|_] = I}) -> abstract_query({all, [{with, _Q, _A}|_] = I}) ->
Queries = glc_lib:reduce(glc:all([Q || {with, Q, _} <- I])), Queries = glc_lib:reduce(glc:all([Q || {with, Q, _} <- I])),
[?erl:abstract(Queries)]; [?erl:abstract(Queries)];
abstract_query({ok, {pid, Pid}}) ->
PidBin = abstract_apply(erlang, 'list_to_binary', [?erl:abstract(Pid)]),
[?erl:tuple([?erl:atom(ok), abstract_apply(erlang, 'binary_to_term', [(PidBin)])])];
abstract_query(Query) -> abstract_query(Query) ->
[?erl:abstract(Query)]. [?erl:abstract(Query)].

正在加载...
取消
保存