%%%-------------------------------------------------------------------
%%% @author dlive
%%% @copyright (C) 2018, <COMPANY>
%%% @doc
%%%
%%% @end
%%% Created : 05. Mar 2018 2:06 PM
%%%-------------------------------------------------------------------
-module(type_register).
-author("dlive").
%% API
-export([init/0,regiest_foreign_native/1,lookup_foreign_type/1,lookup_native_type/1]).
-include("hessian.hrl").
-define(FOREIGN_NATIVE_TABLE,foreign_native_table).
-define(NATIVE_FOREIGN_TABLE,native_foreign_table).

init()->
    case ets:info(?FOREIGN_NATIVE_TABLE) of
        undefined ->
            ?FOREIGN_NATIVE_TABLE = ets:new(?FOREIGN_NATIVE_TABLE,[public,named_table]),
            logger:info("init decoding foreign_native_table table",[]);
        _ ->
            ets:delete(?FOREIGN_NATIVE_TABLE),
            ?FOREIGN_NATIVE_TABLE = ets:new(?FOREIGN_NATIVE_TABLE,[public,named_table])
    end,
    case ets:info(?NATIVE_FOREIGN_TABLE) of
        undefined ->
            io:format("init decoding native_foreign_table table pid ~p~n",[self()]),
            ?NATIVE_FOREIGN_TABLE = ets:new(?NATIVE_FOREIGN_TABLE,[public,named_table]); %% public
        _ ->
            ets:delete(?NATIVE_FOREIGN_TABLE),
            ?NATIVE_FOREIGN_TABLE = ets:new(?NATIVE_FOREIGN_TABLE,[public,named_table])
    end,
    ok.


regiest_foreign_native(TypeDef)->
    logger:debug("regiest foreign info ~p",[TypeDef]),
    ets:insert(?FOREIGN_NATIVE_TABLE,{TypeDef#type_def.foreign_type,TypeDef}),
    ets:insert(?NATIVE_FOREIGN_TABLE,{TypeDef#type_def.native_type,TypeDef}).


lookup_foreign_type(ForeignType)->
    case ets:lookup(?FOREIGN_NATIVE_TABLE,ForeignType) of
        []->
            undefined;
        [{_,TypeDef}] ->
            TypeDef
    end.

lookup_native_type(NativeType)->
    case ets:lookup(?NATIVE_FOREIGN_TABLE,NativeType) of
        []->
            undefined;
        [{_,TypeDef}] ->
            TypeDef
    end.