#include "log.h"

int send_membrane_log(UnifexEnv* env, UnifexPid pid, int flags, char* level, char* message, char* time, char** tags, unsigned int tags_length) {
  ERL_NIF_TERM term = enif_make_tuple_from_array(
    env,
    (ERL_NIF_TERM []) {
      enif_make_atom(env, "membrane_log"),
      enif_make_atom(env, level),
      unifex_string_to_term(env, message),
      unifex_string_to_term(env, time),
      ({
        ERL_NIF_TERM list = enif_make_list(env, 0);
        for(int i = tags_length-1; i >= 0; i--) {
          list = enif_make_list_cell(
            env,
            enif_make_atom(env, tags[i]),
            list
          );
        }
        list;
      })
    },
    5
  );
  return unifex_send(env, &pid, term, flags);
}
