Browse Source

Add function cowboy_http_req:compact/1 to regain memory.

It removes all the non-essential data from the HTTP request record.
It allows some applications to make better use of their memory,
for example websockets which do not need to keep all the headers
information and can simply discard it using this function.
Loïc Hoguin 14 years ago
parent
commit
919fa638ee
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/cowboy_http_req.erl

+ 12 - 0
src/cowboy_http_req.erl

@@ -33,6 +33,10 @@
 	reply/4, chunked_reply/3, chunk/2
 ]). %% Response API.
 
+-export([
+	compact/1
+]). %% Misc API.
+
 -include("include/http.hrl").
 -include_lib("eunit/include/eunit.hrl").
 
@@ -213,6 +217,14 @@ chunk(Data, #http_req{socket=Socket, transport=Transport, resp_state=chunks}) ->
 	Transport:send(Socket, [integer_to_list(iolist_size(Data), 16),
 		<<"\r\n">>, Data, <<"\r\n">>]).
 
+%% Misc API.
+
+-spec compact(#http_req{}) -> #http_req{}.
+compact(Req) ->
+	Req#http_req{host=undefined, host_info=undefined, path=undefined,
+		path_info=undefined, qs_vals=undefined, raw_qs=undefined,
+		bindings=undefined, headers=[]}.
+
 %% Internal.
 
 -spec parse_qs(binary()) -> list({binary(), binary() | true}).