%% vim: ts=4 sw=4 et
%% Cowboy Request Server. Becaue cowboy returns Request object for each
%% request, this helps to manage that object so it can be pushed back onto
%% the pile after it's done being used.
%%
%% Right now, it's nasty and uses the process dict. Not exactly the smoothest approach.
%%
%% I keep it at set/2 and get/1 as I'd like to eventually update it to be a server that uses a dict
%% but the concerns are for memory usage for expired requests. We can at least
%% Clean up our requests when complete, with a delete(Key), but I'd like to also
%% make sure that the handler cleans itself up if the request crashes, say if
%% nitrogen crashes while doing whatever.
%%
%% Also, while using the process dict, the key will always be 'proc_dict_cowboy_request'
-module(cowboy_request_server).
-include_lib("simple_bridge.hrl").
-export([set/2,get/1]).
%-behaviour(gen_server).
-compile({no_auto_import,[get/1]}).
set(Key,RequestCache) ->
%error_logger:info_msg("Saving ~p~n",[Req]),
erlang:put(Key,RequestCache).
get(Key) ->
%error_logger:info_msg("Getting ~p~n",[Key]),
_RequestCache = erlang:get(Key).
%% -define(M,?MODULE).
%%
%% -export([start/0,start_link/0,set/2,get/1,delete/1]).
%% -export([init/1,handle_call/3,handle_cast/2,handle_info/2,terminate/2,code_change/3]).
%%
%% start_link() ->
%% gen_server:start_link({local, ?M}, ?M, [], []).
%%
%% start() ->
%% gen_server:start({local, ?M}, ?M, [], []).
%%
%% %% Public Functions
%% init(_) ->
%% {ok, dict:new()}.
%%
%% set(Key, Req) ->
%% ok = gen_server:call(?M,{set,Key,Req}).
%%
%% get(Key) ->
%% {ok, Req} = gen_server:call(?M,{get,Key}),
%% Req.
%%
%% delete(Key) ->
%% ok = gen_server:call(?M,{delete,Key}).
%%
%% %% Private functions
%% handle_call({set,Key,Req},_From,Dict) ->
%% NewDict = dict:store(Key,Req,Dict),
%% {reply,ok,NewDict};
%% handle_call({get,Key},_From,Dict) ->
%% Reply = dict:find(Key,Dict),
%% {reply,Reply,Dict};
%% handle_call({delete,Key},_From,Dict) ->
%% NewDict = dict:erase(Key,Dict),
%% {reply,ok,NewDict}.
%%
%% handle_info(_Info,State) ->
%% {noreply,State}.
%%
%% handle_cast(_,State) ->
%% {noreply,State}.
%%
%% terminate(_Reason,_State) ->
%% ok.
%%
%% code_change(_OldVsn,State,_Extra) ->
%% {ok,State}.