Sha256: 969e2a8d0c400f76a628715da2fa5e852ff6844bbca20bcc26be40ed542eaeea

Contents?: true

Size: 915 Bytes

Versions: 5

Compression:

Stored size: 915 Bytes

Contents

-module(ernie_native).
-export([process/2]).
-include_lib("ernie.hrl").

process(ActionTerm, Request) ->
  {_Type, Mod, Fun, Args} = ActionTerm,
  Sock = Request#request.sock,
  logger:debug("Calling ~p:~p(~p)~n", [Mod, Fun, Args]),
  try apply(Mod, Fun, Args) of
    Result ->
      logger:debug("Result was ~p~n", [Result]),
      Data = bert:encode({reply, Result}),
      gen_tcp:send(Sock, Data)
  catch
    error:Error ->
      BError = list_to_binary(io_lib:format("~p", [Error])),
      Trace = erlang:get_stacktrace(),
      BTrace = lists:map(fun(X) -> list_to_binary(io_lib:format("~p", [X])) end, Trace),
      Data = term_to_binary({error, [user, 0, <<"RuntimeError">>, BError, BTrace]}),
      gen_tcp:send(Sock, Data)
  end,
  ok = gen_tcp:close(Sock),
  Log = Request#request.log,
  Log2 = Log#log{tdone = erlang:now()},
  Request2 = Request#request{log = Log2},
  ernie_access_logger:acc(Request2).

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
ernie-2.2.1 elib/ernie_native.erl
schleyfox-ernie-2.2.2 elib/ernie_native.erl
schleyfox-ernie-2.2.1 elib/ernie_native.erl
ernie-2.2.0 elib/ernie_native.erl
ernie-2.1.0 elib/ernie_native.erl